Routing WIFI i LAN dla określonego ruchu

12

Mam dwa urządzenia sieciowe na pokładzie mojego Macbooka Pro:

  1. WIFI (en1): Używany do ogólnego ruchu. Łączy się z adresem IP 192.168.19. * Przez DHCP
  2. LAN (en0): Używany do określonego ruchu. Łączy się z adresem IP 192.168.2.10 jako statyczny adres IP. Nie łączy się z routerem, tylko przełącznik do bezpośredniego połączenia routingu .

Mam 4 adresy IP, do których muszę uzyskać dostęp w sieci LAN:

  1. 192.168.2.1
  2. 192.168.2.21
  3. 192.168.2.20
  4. 192.168.2.30

Reszta ruchu musi iść do WIFI. Próbowałem skonfigurować tabelę routingu dla określonych adresów IP, ale udało mi się tylko zepsuć moją sieć. Nie wchodzę zbyt często w świat sieci, ale to było ostatnie polecenie, które próbowałem:

sudo route add -host 192.168.2.30 -interface en0

To polecenie zabiło moją zdolność używania ping. Powiedział mi, że ping nie może przydzielić pamięci (czy to w ogóle możliwe)? To także zabiło mój dostęp do Wi-Fi. Wylogowanie i ponowne zalogowanie rozwiązało problem. Naprawdę nie mam nic przeciwko temu, aby to rozwiązanie było trwałe, więc nie mam nic przeciwko tymczasowemu routingowi.

EDYTOWAĆ:

Jeśli obecnie próbuję:

sudo route flush
sudo route add default 192.168.19.1

Dzięki temu wszystko działa przez około minutę. Ale po takiej minucie „zapomina” o routingu do WiFi, zachowując routing LAN (en0). Jeśli odłączę i ponownie podłączę kabel LAN (en0), proces będzie działał przez kolejną minutę.

EDYCJA 2:

Oto niektóre z poleceń wprowadzonych jako żądanie przez d34dh0r53.

$ netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            192.168.2.1        UGSc            4        0     en0
default            192.168.19.1       UGScI           0        0     en1
127                127.0.0.1          UCS             0        1     lo0
127.0.0.1          127.0.0.1          UH              5  1429023     lo0
169.254            link#4             UCS             0        0     en0
192.168.2          link#4             UCS             4        0     en0
192.168.2.1        0:27:22:2e:5f:1a   UHLWIi          2        0     en0   1199
192.168.2.10       127.0.0.1          UHS             0        0     lo0
192.168.2.30       90:a2:da:0:f5:63   UHLWIi          1     1433     en0   1191
192.168.2.255      ff:ff:ff:ff:ff:ff  UHLWbI          0        7     en0
192.168.19         link#5             UCS             2        0     en1
192.168.19.1       3e:d0:f8:aa:28:56  UHLWIi          0        2     en1   1192
192.168.19.3       127.0.0.1          UHS             1        0     lo0
192.168.19.255     ff:ff:ff:ff:ff:ff  UHLWbI          0        5     en1

Internet6:
Destination                             Gateway                         Flags         Netif Expire
::1                                     link#1                          UHL             lo0
fe80::%lo0/64                           fe80::1%lo0                     UcI             lo0
fe80::1%lo0                             link#1                          UHLI            lo0
fe80::%en0/64                           link#4                          UCI             en0
fe80::226:4aff:fe00:b68a%en0            0:26:4a:0:b6:8a                 UHLI            lo0
fe80::%en1/64                           link#5                          UCI             en1
fe80::226:bbff:fe03:cbd%en1             0:26:bb:3:c:bd                  UHLI            lo0
ff01::%lo0/32                           fe80::1%lo0                     UmCI            lo0
ff01::%en0/32                           link#4                          UmCI            en0
ff01::%en1/32                           link#5                          UmCI            en1
ff02::%lo0/32                           fe80::1%lo0                     UmCI            lo0
ff02::%en0/32                           link#4                          UmCI            en0
ff02::%en1/32                           link#5                          UmCI            en1
$ traceroute -n 192.168.2.1
traceroute to 192.168.2.1 (192.168.2.1), 64 hops max, 52 byte packets
 1  192.168.2.1  2.499 ms  3.392 ms  3.829 ms
$ traceroute -n google.com
traceroute: unknown host google.com
jakebird451
źródło
System operacyjny obsługuje routing, a nie sprzęt.
Ignacio Vazquez-Abrams,
Czy wszystko 192.168.2.X jest w sieci LAN? Jeśli tak, to znacznie upraszcza rozwiązanie.
LawrenceC
@ultrasawblade Tak, wszystko w tej sieci to 192.168.2. *
jakebird451

Odpowiedzi:

11

Nie powinieneś ręcznie tworzyć żadnych reguł routingu dla tej konfiguracji, pod warunkiem, że wszystkie adresy 192.168.2.x, z którymi chcesz się komunikować, znajdują się poza interfejsem z adresem 192.168.2.x.

  1. Przejdź do Preferencji systemowych -> Sieć
  2. Wybierz urządzenie Ethernet, upewnij się, że „Konfiguruj IPv4” jest ustawione na „Ręcznie”, że twoja maska ​​podsieci jest ustawiona na 255.255.255.0 i że pole routera jest puste.

Po wykonaniu tej czynności netstat -rnpowinien nadal pokazywać trasy dla obu podsieci, ale tylko trasę „link # 4” zamiast trasy domyślnej przez 192.168.2.1.

Jeśli nie chcesz domyślnej trasy, pozostaw pole routera puste. Wartość w polu routera służy tylko do ustawienia domyślnej trasy przez ten interfejs sieciowy i nie jest używana do niczego innego.

Rakslice
źródło
Dziękuję Ci! To było to! Miałem wszystko poprawnie skonfigurowane, z wyjątkiem pola routera. Podaję adres IP 192.168.2.1w polu routera, aby pasował do „routera” po stronie sieci LAN. Myślałem, że jest to wymagane, ale teraz widzę, że przejęło domyślną trasę dla ogólnego ruchu.
jakebird451
Dzięki za to! Miałem ten sam problem i działał dla mnie idealnie.
BaronVonKaneHoffen
4

Problem polega na tym, że Twój en0interfejs dodaje domyślną trasę, która ma pierwszeństwo przed domyślną trasą ustaloną przez interfejs 802.11. Nie jestem do końca pewien, dlaczego, ale to albo fakt, że BSD woli interfejs przewodowy niż bezprzewodowy, albo interfejs statycznie skonfigurowany niż dynamicznie skonfigurowany. Możesz powiedzieć, że kolumna en0używa domyślnej trasy Refs; Refsto wskaźnik wskazujący bieżącą liczbę aktywnych zastosowań trasy, dzięki czemu możemy zobaczyć, że generuje cały ruch.

Rozwiązaniem jest usunięcie tej trasy, najlepiej na stałe z tabeli routingu, aby ruch przeznaczony dla hostów innych niż te w sieci lokalnej przechodzi przez domyślną bramę ustanowioną przez DHCP en1. Pierwszą rzeczą, którą sprawdzę, jest panel konfiguracji, en0aby upewnić się, że nic nie wpisałeś w routerpolu. Informacje w tym polu są dodawane jako brama domyślna. Jeśli to nie zadziała, musimy ręcznie usunąć trasę, route flushponieważ nie działam, ponieważ wierzę, że nakazuje OS X ponowne załadowanie informacji o routingu z plików konfiguracyjnych interfejsu, a zatem przywrócenie zmiany po krótkim czasie. Następujące polecenie powinno usunąć domyślną trasę dlaen0 interfejs do momentu ponownego uruchomienia sieci lub IPLed systemu:

sudo route delete -net 0.0.0.0 192.168.2.1

Jeśli chcesz, aby ta zmiana była trwała, możesz albo: a) utworzyć usługę, w /Library/StartupItemsktórej wydaje mi się, że to za dużo pracy, lub b) dodać tę linię /etc/rc.localza pomocą polecenia, takiego jak:

echo 'route delete -net 0.0.0.0 192.168.2.1' >> /etc/rc.local

Konieczne może być dodanie sleep <number_of_seconds>polecenia przed tym wierszem, /etc/rc.localaby uniknąć uruchomienia polecenia przed pełnym uruchomieniem interfejsów i ustaleniem tabeli routingu.

Mam nadzieję, że to pomoże i powodzenia!

d34dh0r53
źródło
Dziękuję za twoją długą odpowiedź. 192.168.2.1Problemem była domyślna trasa , ale @rakslice stwierdził, że popełniłem błąd podczas wprowadzania informacji o routingu dla połączenia en0. Umieściłem adres IP 192.168.2.1w polu routera, uważając, że był wymagany. Po usunięciu domyślnego adresu IP routera usunąłem również złą domyślną trasę do 192.168.2.1. Ponownie, dzięki za pomoc.
jakebird451
1
Niby nieudany Nie dostałem nagrody: „Pierwszą rzeczą, którą sprawdzę, jest panel konfiguracji en0, upewnij się, że nic nie wpisałeś w polu routera. Informacje w tym polu są dodawane jako brama domyślna. „ Ale w końcu wszystko jest dobrze, cieszę się, że to działa.
d34dh0r53
0

Chcesz ustawić IP Wi-Fi jako bramę domyślną i usunąć dowolną bramę domyślną (lub trasę do 0.0.0.0) podłączoną do sieci LAN lub 192.168.2.0/24.

Jest to oczywiście łatwiejsze, jeśli możesz ustawić swój en1 na stały adres IP, który będzie działał z Wi-Fi.

Może być konieczne dodanie 192.168.2.10 jako trasy do sieci 192.168.2.0/24. Powinno to jednak być automatyczne, ponieważ pozwala stwierdzić, że 192.168.2.0/24 jest bezpośrednio połączone wirtualnie z tym, co przypisałeś do interfejsu.

Tak więc ruch do dowolnego 192.168.2.X wyjdzie z 192.168.2.10, a ruch do dowolnego innego miejsca będzie wychodził z adresu IP en1.

LawrenceC
źródło
Ustawiłem moje zamówienie Wi-Fi na najwyższe za pomocą preferencji systemowych sieci. Ale nie jestem pewien, jak to zrobić remove any default gateway connected to the LAN.
jakebird451
może sudo route del default 192.168.2.10? nie jestem pewien, jak to zrobić na FreeBSD / Mac OSX, ale powinno być podobnie.
LawrenceC
Komenda na komputerze Mac to sudo route delete default 192.168.2.10. Ping jest nadal aktywny. Jednak zamknął dostęp do ruchu Wi-Fi z wyłączeniem routera ip.
jakebird451
Dostajesz internet przez Wi-Fi, prawda, tzn. Jeśli nie łączysz się przez LAN i tylko Wi-Fi, możesz dotrzeć do zewnętrznych stron, takich jak Google itp.?
LawrenceC
Tak, Wi-Fi jest przeznaczone dla ogólnego ruchu, takiego jak google.com (przede wszystkim dla Google Maps API)
jakebird451