Trasy statyczne Windows bez określania bramy (następny przeskok)


15

Mam następujący scenariusz:

Komputer A 198.51.100.8:, maska ​​sieci 255.255.255.0
Komputer B 203.0.113.9:, maska ​​sieci 255.255.255.0
Oba komputery są w tym samym segmencie sieci LAN; w żadnym przypadku nie określono bramy domyślnej.

Aby te dwa komputery mogły się ze sobą komunikować, dodałem dwie trasy statyczne, takie jak:

route add 203.0.113.9 mask 255.255.255.255 198.51.100.8

Wolałbym jednak dodać trasy statyczne, określając interfejs sieciowy , zamiast określając adres IP bramy .

Jest to możliwe w systemie Linux za pomocą polecenia, takiego jak:

ip route add 203.0.113.9 dev eth0

i podobnie w FreeBSD:

route add 203.0.113.9/32 -iface fxp0 -cloning

Nie wiem jednak, jak to zrobić w systemie Windows. Idealnie chcę zrobić coś takiego:

route add 203.0.113.9 mask 255.255.255.255 if 2

ale to tylko wypisuje użycie routepolecenia, które mówi mi, że robię to źle. Próbowałem również użyć netsh, co mówi mi:

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

Wszelkie myśli lub sugestie?


Aktualizacja : Kiedy pierwotnie opublikowałem to pytanie, korzystałem z systemu Windows XP. Ale nie wspomniałem o tym.

Zostawię oryginalną odpowiedź Grizly, ponieważ jest ona poprawna dla mojego pierwotnego pytania. Ale jeśli używasz nowszej wersji systemu Windows niż XP / 2003, wypróbuj jedną z pozostałych odpowiedzi.

Odpowiedzi:


7

W przypadku systemu Windows może to nie być możliwe

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

Cytat: w przypadku lokalnie podłączonych tras podsieci adres bramy to adres IP przypisany do interfejsu podłączonego do podsieci.


Hej Grizly - dzięki za odpowiedź! Próbowałem obu poleceń, które zasugerowałeś, ale dostałem: „Dodanie trasy nie powiodło się: Indeks interfejsu jest nieprawidłowy lub brama nie znajduje się w tej samej sieci co interfejs. Sprawdź tablicę adresów IP komputera”. Mam tylko dwa interfejsy na maszynie, 0x1 (interfejs MS TCP Loopback) i 0x2 (połączenie sieciowe Intel (R) PRO / 1000 MT), więc jestem prawie pewien, że „jeśli 2” jest tym, czego chcę użyć. Jakieś inne myśli?
— rozszczepienie

Po prostu zignoruj ​​część „metryka 1, jeśli 2”. Najlepiej przetestować również bez -p. (dzięki czemu jest trwały)
— Grizly

Otrzymuję ten sam wynik bez części „metryka 1, jeśli 2”.
— rozszczepienie

Ohh, mój zły, wygląda na to, że brama to ip interfejsu. Odpowiedź zaktualizowana.
— Grizly

Racja, co już robię i czego chciałem uniknąć. W każdym razie dzięki.
— rozszczepienie

21

W systemie Windows można dodać trasę na podstawie interfejsu, nie znając interfejsu, przekazując 0.0.0.0jako bramę

daje to coś takiego:

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

2
Próbowałem tego na Windows 7 x64. To działa! Moje polecenie: route ADD 176.31.111.111 0.0.0.0 IF 25powróciło OK!i zgodnie z oczekiwaniami pojawił się nowy wpis w tabeli routingu
— Dmitry

6

Tak samo było w systemie Windows 7 Enterprise z klientem Juniper Junos Pulse VPN.
Miałem z tym problem, ponieważ przechwycił wszystkie możliwe adresy IPv4 i skierował je do połączenia telefonicznego:

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

Nie chciałem, aby cały mój ruch przechodził przez VPN, więc na wypadek, gdyby ktoś tego potrzebował, napisałem mały plik cmd, aby usunąć te trasy, a następnie zainstalowałem jedyny, którego potrzebuję (10.0.0.0), bez możliwości określenia bramy , określając odpowiedni interfejs.
Możesz użyć tego do dynamicznego pobierania numeru interfejsu.

@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%

1
możesz po prostu wyłączyć „wymuszanie tunelowania” w sekcji właściwości ip połączenia VPN.
— dziwny piechur,

5

Numer interfejsu w postaci dziesiętnej jest wyświetlany za pomocą route print. Spójrz na górę wyników poniżej Interface List.

Innym sposobem jest użycie arp -ai zapisanie liczby szesnastkowej, np .:

C:\>arp -a

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

Oba są akceptowane po ifargumencie w route.exe, np .:

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

wolę arp -a , ponieważ łatwiej jest zidentyfikować kartę sieciową.

Wiele innych sposobów, ale jest to najprostszy.


0

Nie można pominąć bramy w stałej tabeli. Niektóre osoby oferują wprowadzenie adresu IP karty interfejsu (po stronie użytkownika), co było dopuszczalne w systemie Windows XP. Ale to już nie jest ważne. System operacyjny będzie w tym przypadku pukał do każdego interfejsu sieciowego, przynajmniej do momentu zapełnienia pamięci podręcznej; nie jest to dobre zachowanie i nie ma znaczenia przy pustej tabeli routingu.

Dowiedziałem się, że umieszczenie docelowego adresu IP jako bramy rozwiązuje problem co najmniej w systemie Windows 10. Ale w tej chwili mam mało statystyk, aby potwierdzić to jako 100,1% prawdy.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.