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 route
polecenia, 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.
źródło
W systemie Windows można dodać trasę na podstawie interfejsu, nie znając interfejsu, przekazując
0.0.0.0
jako bramędaje to coś takiego:
źródło
route ADD 176.31.111.111 0.0.0.0 IF 25
powróciłoOK!
i zgodnie z oczekiwaniami pojawił się nowy wpis w tabeli routinguTak 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:
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.
źródło
Numer interfejsu w postaci dziesiętnej jest wyświetlany za pomocą
route print
. Spójrz na górę wyników poniżejInterface List
.Innym sposobem jest użycie
arp -a
i zapisanie liczby szesnastkowej, np .:Oba są akceptowane po
if
argumencie wroute.exe
, np .:wolę
arp -a
, ponieważ łatwiej jest zidentyfikować kartę sieciową.Wiele innych sposobów, ale jest to najprostszy.
źródło
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.
źródło