Zmusz Raspberry do uzyskania dostępu do Internetu z określonej sieci

13

Skonfigurowałem RPi, aby po rozruchu łączył się z kluczem 3G, ustawiając ppp i wvdial na

/etc/network/interfaces

Pi uruchamia się i mam połączenie z Internetem. Doskonały.

Teraz moim problemem jest to, że ilekroć podłączę Pi do mojego komputera za pośrednictwem sieci Ethernet (korzystając z tego samouczka ), połączenie internetowe zostanie utracone. Nawet po odłączeniu od komputera nadal nie można się połączyć, muszę zrestartować komputer, aby mógł ponownie uzyskać połączenie z Internetem.

Czy istnieje sposób, aby Pi mógł pozostawać w kontakcie z Internetem przez interfejs klucza sprzętowego zamiast próbować uzyskać połączenie z moim komputerem?

jonathanwiesel
źródło
Czy oba połączenia korzystają z DHCP?
Lawrence
Jak wygląda twój wynik ifconfig?
Bex
Ustawienie wyższej metryki na eth0 niż ppp0 powinno osiągnąć to, co chcesz. Niższy wskaźnik ma wyższy priorytet.
Lawrence

Odpowiedzi:

6

Zakładając, że pracujesz z Linuksem (Raspian, Debian itp.):

Zadajesz dwa różne pytania. Najpierw odpowiem na pytanie tytułowe:

Zmusz Raspberry do uzyskania dostępu do Internetu z określonej sieci

Zamierzam skupić się na twoim słowie „sieć” (w przeciwieństwie do „interfejsu”) i odpowiedzieć na to w czystym IP:

Jeśli masz wiele połączeń, które mogłyby zapewnić dostęp do Internetu, możesz kontrolować, które będą używane za pomocą tabeli tras.

Aby wyświetlić tabelę routingu, której zwykle używam netstat -rn( -rsłuży do „Pokaż routing”, -nsłuży do „pokaż mi numery, nie próbuj wyszukiwać DNS, które mogą się zawiesić, jeśli mój internet nie jest poprawnie skonfigurowany”). Naprawdę prosty przykład wyglądałby tak:

[email protected] ~ $ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.9.1     0.0.0.0         UG        0 0          0 eth0
192.168.9.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
172.20.10.0     0.0.0.0         255.255.255.240 U         0 0          0 wlan0
[email protected] ~ $ 

Linia w tym wyjściu, która pokazuje, w którą stronę pójdą pakiety IP, to linia z przeznaczeniem 0.0.0.0i maską genową 0.0.0.0, która jest zwykle znana jako default route(maska ​​złożona z 0.0.0.0symboli wieloznacznych, to tak naprawdę znacznik domyślnej trasy) i ponieważ obecnie wskazuje na konkretny adres z zakresu `192.168.9 ', ruch internetowy będzie przesyłany przez interfejs Ethernet.

Jeśli chcę przełączyć internet na inną sieć, chciałbym (jako root) użyć routepolecenia, aw tym przypadku, biorąc pod uwagę, że moje połączenie Wi-Fi nie jest punkt-punkt, muszę znać adres IP routera, który może przekaż ruch z tej sieci (w moim przypadku 172.20.10.1), więc zrobiłbym:

  1. Usuń bieżącą domyślną trasę

    sudo route del default
    
  2. Dodaj nową domyślną trasę dla drugiej sieci

    sudo route add default gw 172.20.10.1
    

Podczas gdy routeja używam, widzę, że niektórzy uważają go za przestarzały i zamiast tego polecam użycie ip routepolecenia, zobacz komentarz @Fred poniżej, aby uzyskać składnię. odwołanie do wycofania

Czy istnieje sposób, aby pozostawać w kontakcie poprzez interfejs klucza sprzętowego?

Minęło trochę czasu, odkąd pracowałem z pppi wvdial, i bez konfiguracji (lub przynajmniej odniesień do przewodników, których użyłeś podczas ich konfigurowania) naprawdę trudno jest zgadnąć, które problemy napotykasz, ale jako kilka pomysłów:

  • Czy połączenie naprawdę nie działa, czy po prostu straciłeś domyślną trasę, gdy pojawił się eth0?
    • Sprawdź to w obu netstat -rni ifconfig.
    • Czy jest interfejs netstat -rn? jeśli tak, czy istnieje domyślna droga do niego?
    • W ifconfigwidzisz interfejs dla klucza sprzętowego (prawdopodobne ppp)? czy to UPjest
  • Nie pamiętam gdzie ppp/ wvdiallog, ale należy to sprawdzić. Ten dziennik poinformuje Cię o stanie połączenia i powinien poinformować Cię, czy z jakiegoś powodu cały system został zamknięty
  • Jeśli widzisz interfejs, spróbuj pingcoś na nim (... cokolwiek ...) i sprawdź, czy połączenie zostanie nawiązane.
    • Wiem, że ppp/ wvdialcombo ma możliwość automatycznego połączenia (w zależności od konfiguracji)
      • Więc jeśli połączenie wymyśliło polecenie ping (lub połączenie pozostało niezmienione przez cały czas): może to oznaczać, że domyślna trasa (ppp) została utracona podczas uruchamiania sieci Ethernet.
      • W takim przypadku wystarczy dodać domyślną trasę, a cały system wróci do trybu online.
Mike Lutz
źródło
2
ip routenie używa tej samej składni. Możesz jednak skopiować i wkleić dane wyjściowe, aby użyć ich jako danych wejściowych. Na przykład, jeśli pokazuje default via 192.168.9.1 dev eth0, możesz usunąć tę trasę po prostu wykonując ip route del default via 192.168.9.1 dev eth0. Możesz łatwo użyć danych wyjściowych jako szablonu, aby dodać nowe polecenia, np ip route add default via 172.20.10.1 dev wlan0.
Fred