Statische Windows-Routen ohne Angabe des Gateways (nächster Hop)

15

Ich habe folgendes Szenario:

Computer A 198.51.100.8:, Netzmaske 255.255.255.0
Computer B 203.0.113.9:, Netzmaske 255.255.255.0
Beide Computer befinden sich im selben LAN-Segment. In beiden Fällen ist kein Standard-Gateway angegeben.

Damit diese beiden Computer miteinander kommunizieren können, habe ich zwei statische Routen hinzugefügt:

route add 203.0.113.9 mask 255.255.255.255 198.51.100.8

Ich würde es jedoch vorziehen, die statischen Routen durch Angabe einer Netzwerkschnittstelle anstelle einer Gateway-IP-Adresse hinzuzufügen .

Dies ist unter Linux mit folgenden Befehlen möglich:

ip route add 203.0.113.9 dev eth0

und ähnlich in FreeBSD:

route add 203.0.113.9/32 -iface fxp0 -cloning

Ich bin jedoch ratlos, wie dies mit Windows geschehen soll. Idealerweise möchte ich etwas machen wie:

route add 203.0.113.9 mask 255.255.255.255 if 2

aber das gibt nur die Verwendung für den routeBefehl aus, die mir sagt, dass ich es falsch mache. Ich habe auch versucht zu benutzen netsh, was mir sagt:

> 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.

Irgendwelche Gedanken oder Vorschläge?


Update : Als ich diese Frage ursprünglich gestellt habe, habe ich Windows XP verwendet. Aber das habe ich versäumt zu erwähnen.

Ich werde Grizlys ursprüngliche Antwort belassen, da sie für meine ursprüngliche Frage richtig ist. Wenn Sie jedoch eine neuere Version von Windows als XP / 2003 verwenden, probieren Sie eine der anderen Antworten aus.

Fission
quelle

Antworten:

7

Dies ist unter Windows möglicherweise nicht möglich

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

Quote: Bei lokal angeschlossenen Subnetzrouten ist die Gateway-Adresse die IP-Adresse, die der Schnittstelle zugewiesen ist, die an das Subnetz angeschlossen ist.

Grizly
quelle
Hey Grizly - danke für die Antwort! Ich habe beide von Ihnen vorgeschlagenen Befehle ausprobiert, habe jedoch Folgendes erhalten: "Das Hinzufügen der Route ist fehlgeschlagen: Entweder ist der Schnittstellenindex falsch oder das Gateway befindet sich nicht im selben Netzwerk wie die Schnittstelle. Überprüfen Sie die IP-Adressentabelle für den Computer." Ich habe nur zwei Schnittstellen auf dem Computer, 0x1 (MS TCP Loopback-Schnittstelle) und 0x2 (Intel (R) PRO / 1000 MT-Netzwerkverbindung), daher bin ich mir ziemlich sicher, dass "wenn 2" das ist, was ich verwenden möchte. Irgendwelche anderen Gedanken?
Spaltung
Ignorieren Sie einfach den Teil "Metrik 1, wenn 2". Er sollte es herausfinden. Am besten auch ohne -p testen. (das macht es hartnäckig)
Grizly
Ich erhalte das gleiche Ergebnis ohne den Teil "Metrik 1, wenn 2".
Spaltung
Ohh, meine schlechte, scheint das Gateway ist die IP der Schnittstelle .. Antwort aktualisiert.
Grizly
Richtig, das ist es, was ich bereits mache und was ich vermeiden wollte. Trotzdem danke.
Spaltung
21

In Windows können Sie eine Route basierend auf der Schnittstelle hinzufügen, ohne die Schnittstelle zu kennen, indem Sie 0.0.0.0als Gateway übergeben

das ergibt so etwas:

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
quelle
2
Ich habe es unter Windows 7 x64 versucht. Es klappt! Mein Befehl: route ADD 176.31.111.111 0.0.0.0 IF 25Es kehrte zurück OK!und ein neuer Eintrag erschien erwartungsgemäß in der Routing-Tabelle
Dmitry
6

Ich habe das gleiche in Windows 7 Enterprise mit dem Juniper Junos Pulse VPN-Client.
Ich hatte ein Problem damit, da alle möglichen IPv4-Adressen erfasst und an die DFÜ-Verbindung weitergeleitet wurden:

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

Ich wollte nicht, dass der gesamte Datenverkehr über das VPN geleitet wird. Falls dies jemand benötigt, schrieb ich eine kleine cmd-Datei, um diese Routen zu entfernen, und installierte dann die einzige, die ich benötige (10.0.0.0), ohne ein Gateway angeben zu können durch Angabe der richtigen Schnittstelle.
Sie können dies verwenden, um die Nummer einer Schnittstelle dynamisch abzurufen.

@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.
quelle
1
Sie können einfach "Tunneling erzwingen" in den IP-Eigenschaften Ihrer VPN-Verbindung deaktivieren.
seltsame Wanderer
5

Die Schnittstellennummer in Dezimalschrift wird mit angezeigt route print. Schauen Sie oben in der Ausgabe unter Interface List.

Eine andere Möglichkeit besteht darin arp -a, die Hexadezimalzahl zu verwenden und zu notieren, z.

C:\>arp -a

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

Beide werden nach dem ifArgument in akzeptiert route.exe, zB:

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

Ich bevorzuge arp -a, da es einfacher ist, die Netzwerkkarte zu identifizieren.

Zahlreiche andere Möglichkeiten, aber dies ist die einfachste.

Ei
quelle
0

Sie können das Gateway in der permanenten Tabelle nicht auslassen. Einige Leute bieten an, dort eine Schnittstellenkarten-IP (benutzerseitig) zu setzen, was in Windows XP akzeptabel war. Aber es ist nicht mehr gültig. Das Betriebssystem klopft in diesem Fall an jeder Netzwerkschnittstelle, zumindest bis der Cache gefüllt ist. Es ist kein gutes Verhalten und macht keinen Unterschied bei einer leeren Routingtabelle.

Ich fand heraus, dass die Angabe einer Ziel-IP-Adresse als Gateway das Problem zumindest unter Windows 10 löst. Derzeit liegen mir jedoch nur wenige Statistiken vor, die bestätigen, dass die IP-Adresse 100,1% der Wahrheit entspricht.

Asdf
quelle