Routes statiques Windows sans passerelle de spécification (saut suivant)

15

J'ai le scénario suivant:

Ordinateur A 198.51.100.8:, masque de réseau 255.255.255.0
Ordinateur B 203.0.113.9:, masque de réseau 255.255.255.0
Les deux ordinateurs sont sur le même segment LAN; aucune passerelle par défaut n'est spécifiée dans les deux cas.

Pour que ces deux ordinateurs communiquent entre eux, j'ai ajouté deux routes statiques, comme ceci:

route add 203.0.113.9 mask 255.255.255.255 198.51.100.8

Cependant, je préférerais ajouter les routes statiques en spécifiant une interface réseau , plutôt qu'en spécifiant une adresse IP de passerelle .

Cela est possible avec Linux en utilisant une commande telle que:

ip route add 203.0.113.9 dev eth0

et de même dans FreeBSD:

route add 203.0.113.9/32 -iface fxp0 -cloning

Cependant, je ne sais pas comment faire cela avec Windows. Idéalement, je veux faire quelque chose comme:

route add 203.0.113.9 mask 255.255.255.255 if 2

mais cela imprime simplement l'utilisation de la routecommande, ce qui me dit que je me trompe. J'ai également essayé d'utiliser netsh, ce qui me dit:

> netsh routing ip add persistentroute 203.0.113.9 255.255.255.255 "Local Area Connection"
Specify the next-hop for non point-to-point interfaces.

Des pensées ou des suggestions?


Mise à jour : lorsque j'ai initialement publié cette question, j'utilisais Windows XP. Mais j'ai négligé de le mentionner.

Je laisse la réponse originale de Grizly, car elle est correcte pour ma question initiale. Mais si vous utilisez une version de Windows plus récente que XP / 2003, essayez l'une des autres réponses.

fission
la source

Réponses:

7

Cela peut ne pas être possible avec Windows

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/route.mspx

Quote: Pour les routes de sous-réseau attachées localement, l'adresse de passerelle est l'adresse IP attribuée à l'interface qui est attachée au sous-réseau.

Grizly
la source
Hé Grizly - merci pour la réponse! J'ai essayé les deux commandes que vous avez suggérées, mais j'ai obtenu: "L'ajout de la route a échoué: soit l'index de l'interface est incorrect, soit la passerelle ne se trouve pas sur le même réseau que l'interface. Vérifiez le tableau d'adresses IP de la machine." Je n'ai que deux interfaces sur la machine, 0x1 (interface MS TCP Loopback) et 0x2 (connexion réseau Intel (R) PRO / 1000 MT), donc je suis presque sûr que "si 2" est ce que je veux utiliser. D'autres réflexions?
fission
Ignorez simplement la partie "métrique 1 si 2" .. cela devrait le comprendre. Mieux vaut également tester sans -p. (ce qui le rend persistant)
Grizly
J'obtiens le même résultat sans la partie "métrique 1 si 2".
fission le
Ohh, mon mauvais, semble que la passerelle est l'IP de l'interface .. réponse mise à jour.
Grizly
C'est ce que je fais déjà et ce que j'espérais éviter. Merci quand même.
fission le
21

Dans Windows, vous pouvez ajouter un itinéraire basé sur l'interface sans connaître l'interface en passant 0.0.0.0comme passerelle

cela donne quelque chose comme ça:

route add <IPtoRoute> mask <MaskOfTheIp> 0.0.0.0 IF <InterfaceNumber>

route add 203.0.113.9 mask 255.255.255.255 0.0.0.0 IF 2
domi.vds
la source
2
J'ai essayé cela sur Windows 7 x64. Ça marche! Ma commande: route ADD 176.31.111.111 0.0.0.0 IF 25elle est revenue OK!et une nouvelle entrée est apparue dans la table de routage comme prévu
Dmitry
6

J'ai obtenu la même chose dans Windows 7 Enterprise avec le client VPN Juniper Junos Pulse.
J'ai eu un problème avec cela, car il a capturé toutes les adresses IPv4 possibles et les a routées vers la connexion d'accès à distance:

Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          1.0.0.0        255.0.0.0         On-link       XX.XX.XX.XX     11
          2.0.0.0        254.0.0.0         On-link       XX.XX.XX.XX     11
          4.0.0.0        252.0.0.0         On-link       XX.XX.XX.XX     11
          8.0.0.0        248.0.0.0         On-link       XX.XX.XX.XX     11
         16.0.0.0        240.0.0.0         On-link       XX.XX.XX.XX     11
         32.0.0.0        224.0.0.0         On-link       XX.XX.XX.XX     11
         64.0.0.0        192.0.0.0         On-link       XX.XX.XX.XX     11
        128.0.0.0        128.0.0.0         On-link       XX.XX.XX.XX     11

Je ne voulais pas que tout mon trafic passe par le VPN, donc au cas où quelqu'un en aurait besoin, j'ai écrit un petit fichier cmd pour supprimer ces routes puis installer le seul dont j'ai besoin (10.0.0.0) sans pouvoir spécifier de passerelle , en spécifiant la bonne interface.
Vous pouvez l'utiliser pour récupérer dynamiquement le numéro d'une interface.

@rem Get the interface number
set IF=
for /f "tokens=1,8 delims=. " %%A in ('route print') do @if /i "%%B" equ "Juniper" set IF=%%A
@rem If interface is not found, terminate quietly
if not defined IF exit /b
for %%A in (1 2 4 8 16 32 64 128) do @route delete %%A.0.0.0
route add 10.0.0.0 mask 255.0.0.0 0.0.0.0 IF %IF%
Eelco L.
la source
1
vous pouvez simplement désactiver "forcer le tunneling" dans la section des propriétés ip de votre connexion vpn.
étrange marcheur
5

Le numéro d'interface en décimal s'affiche avec route print. Regardez en haut de la sortie sous Interface List.

Une autre façon est d'utiliser arp -aet de noter le nombre hexadécimal, par exemple:

C:\>arp -a

Interface: 192.168.1.28 --- 0xc  
  Internet Address      Physical Address      Type
<snip>

Les deux sont acceptés après l' ifargument route.exe, par exemple:

route ADD <NET-ID> MASK <mask> <GW-address or 0.0.0.0 for on-link> IF 0xc -P

Je préfère arp -a, car il est plus facile d'identifier la carte réseau.

De nombreuses autres façons, mais c'est la plus simple.

Eggie
la source
0

Vous ne pouvez pas omettre la passerelle dans la table permanente. Certaines personnes proposent d'y mettre une carte d'interface IP (côté utilisateur), ce qui était acceptable dans Windows XP. Mais ce n'est plus valable. Le système d'exploitation continuera de frapper chaque interface réseau dans ce cas, au moins jusqu'à ce que le cache soit rempli; ce n'est pas un bon comportement et ne fait aucune différence avec une table de routage vide.

J'ai découvert que la mise en place d'une adresse IP de destination en tant que passerelle résout le problème au moins sur Windows 10. Mais j'ai peu de statistiques pour le moment pour le confirmer comme une vérité à 100,1%.

Asdf
la source