Erzwinge, dass Raspberry das Internet von einem bestimmten Netzwerk bezieht

12

Ich habe mein RPi so konfiguriert, dass beim Booten eine Verbindung zu einem 3G-Dongle hergestellt wird, indem ich ppp und wvdial aktiviert habe

/etc/network/interfaces

Der Pi fährt hoch und ich habe eine Internetverbindung. Perfekt.

Jetzt ist mein Problem, dass immer wenn ich den Pi über Ethernet an meinen Computer anschließe (unter Verwendung dieses Tutorials ), die Internetverbindung unterbrochen wird. Auch nach dem Trennen der Verbindung zu meinem Computer muss der Computer neu gestartet werden, damit die Internetverbindung wieder hergestellt werden kann.

Gibt es eine Möglichkeit, den Pi über die Dongle-Schnittstelle mit dem Internet zu verbinden, anstatt zu versuchen, über die Verbindung zu meinem Computer eine Verbindung herzustellen?

Jonathanwiesel
quelle
Verwenden beide Verbindungen DHCP?
Lawrence
Wie sieht Ihre ifconfig-Ausgabe aus?
Bex
Wenn Sie für eth0 eine höhere Metrik als für ppp0 festlegen, sollten Sie die gewünschten Ergebnisse erzielen. Die niedrigere Metrik hat die höhere Priorität.
Lawrence

Antworten:

6

Angenommen, Sie arbeiten mit Linux (Raspian, Debian usw.):

Wenn Sie zwei verschiedene Fragen stellen, beantworte ich zunächst die Titelfrage:

Erzwinge, dass Raspberry das Internet von einem bestimmten Netzwerk bezieht

Ich werde mich auf Ihr Wort "Netzwerk" beschränken (im Gegensatz zu "Schnittstelle") und dies in einem reinen IP-Sinne beantworten:

Wenn Sie mehrere Verbindungen haben, die das Internet bereitstellen könnten, können Sie über die Routentabelle steuern, welche verwendet werden.

Zur Anzeige der Routing-Tabelle, die ich normalerweise verwende netstat -rn( -rist für "Routing anzeigen ", -nist für "Nummern anzeigen, versuchen Sie nicht, DNS-Lookups durchzuführen, die möglicherweise hängen bleiben, wenn mein Internet nicht richtig konfiguriert ist"). Ein wirklich einfaches Beispiel würde so aussehen:

pi@homeServer ~ $ 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
pi@homeServer ~ $ 

Die Zeile in dieser Ausgabe, die 0.0.0.0angibt 0.0.0.0, in welche Richtung IP-Pakete gesendet werden, ist die Zeile mit einem Ziel und einer Genmaske von , die normalerweise als default route(eine Maske von 0.0.0.0ist alles Wildcard, das ist wirklich die Markierung einer Standardroute) bezeichnet wird, und Da es derzeit auf eine bestimmte Adresse im Bereich 192.168.9 verweist, erfolgt der Internetverkehr über die Ethernet-Schnittstelle.

Wenn ich mein Internet auf ein anderes Netzwerk umstellen möchte, verwende ich (als Root) den routeBefehl. In diesem Fall muss ich die IP-Adresse des Routers kennen, der dies kann, da meine WLAN-Verbindung keine Punkt-zu-Punkt-Verbindung ist leiten Sie Datenverkehr aus diesem Netzwerk weiter (in meinem Fall also 172.20.10.1), und ich würde Folgendes tun:

  1. Löschen Sie die aktuelle Standardroute

    sudo route del default
    
  2. Fügen Sie eine neue Standardroute für das andere Netzwerk hinzu

    sudo route add default gw 172.20.10.1
    

Zu meiner Information, obwohl routeich es verwende, sehe ich, dass es von einigen als veraltet angesehen wird und empfehle stattdessen die Verwendung des ip routeBefehls. Die Syntax finden Sie in @Freds Kommentar weiter unten. Referenz für die Abschreibung

Gibt es eine Möglichkeit, über die Dongle-Schnittstelle in Verbindung zu bleiben?

Es ist schon eine Weile her, dass ich mit pppund gearbeitet habe wvdial, und ohne Configs (oder zumindest Verweise auf die Anleitungen, denen Sie beim Einrichten gefolgt sind) ist es wirklich schwer zu erraten, auf welche Probleme Sie gestoßen sind, aber als ein paar Ideen:

  • Ist die Verbindung wirklich unterbrochen oder haben Sie gerade Ihre Standardroute verloren, als Ihr eth0 gestartet wurde?
    • Überprüfen Sie dies in beiden netstat -rnund ifconfig.
    • Ist eine Schnittstelle in netstat -rn? Wenn ja, gibt es eine Standardroute dazu?
    • In ifconfigsehen Sie Schnittstelle für den Dongle (wahrscheinlich ppp)? ist es UP?
  • Ich kann mich nicht erinnern, wo ppp/ wvdiallog, aber das sollte überprüft werden. Dieses Protokoll informiert Sie über den Verbindungsstatus und sollte Sie darüber informieren, ob das gesamte System aus irgendeinem Grund heruntergefahren wurde
  • Wenn Sie eine Schnittstelle sehen, versuchen Sie es mit pingetwas (... irgendetwas ...) und prüfen Sie, ob die Verbindung zustande kommt.
    • Ich weiß, dass die ppp/ wvdialcombo eine automatische Verbindungsmöglichkeit hat (abhängig von der Konfiguration)
      • Wenn die Verbindung einen Ping hat (oder die Verbindung die ganze Zeit über besteht), ist möglicherweise die (ppp) -Standardroute verloren gegangen, als Sie das Ethernet gestartet haben.
      • Wenn dies das Problem ist, müssen Sie lediglich eine Standardroute hinzufügen, und das gesamte System wird wieder online geschaltet.
Mike Lutz
quelle
2
ip routeverwendet nicht ganz die gleiche Syntax. Sie können jedoch die Ausgabe kopieren und einfügen, um sie als Eingabe zu verwenden. Wenn dies beispielsweise angezeigt wird default via 192.168.9.1 dev eth0, können Sie diese Route einfach durch Ausführen von entfernen ip route del default via 192.168.9.1 dev eth0. Sie können die Ausgabe einfach als Vorlage verwenden, um neue Befehle hinzuzufügen, z ip route add default via 172.20.10.1 dev wlan0.
Fred