So laden Sie die Standard-Mac OSX-Routingtabelle ohne Neustart neu

71

Schöne Grüße,

Ich benutze vpncfür einen VPN-Client. Ich mache auch einige knifflige Dinge route, um sicherzustellen, dass ich immer noch auf mein lokales Netzwerk zugreifen kann, usw. usw. (die Angaben hier sind nicht sehr wichtig).

Manchmal bekomme ich die Routing-Tabelle so aufgebockt, dass ich sie ping: sendto: Network is unreachablefür URLs bekomme, die sich ansonsten auflösen sollten.

Derzeit ist alles wieder normal, wenn ich Mac OS X neu starte. Ich möchte die Routing-Tabellen auf die "Standardeinstellung" (z. B. die beim Booten festgelegte Einstellung) zurücksetzen, ohne das gesamte System neu zu starten .

Ich denke, dass Schritt 1 ist route flush(um alle Routen zu entfernen). In Schritt 2 müssen alle Standardrouten neu geladen werden.

Irgendwelche Gedanken darüber, wie das geht? (zB was ist Schritt 2?)

BEARBEITEN Außerdem traceroutestelle ich fest, dass ein anderes Symptom auch bei der fraglichen Adresse fehlschlägt. Zum Beispiel:

traceroute the.good.dns.name

traceroute: bind: Can't assign requested address

Nate Murray
quelle

Antworten:

64

Sie müssen die Routen leeren. Verwenden Sie mehrmals route -n flush . Anschließend fügen Sie Ihre Routen mit route add hinzu.

Höhlenforscher
quelle
1
Ich habe dies auf die akzeptierte Antwort geändert. Es klappt! Ich habe es route -n flushmehrmals gemacht, dann habe ich mein Netzwerk über die Systemeinstellungen neu gestartet. Ich habe nur ein Jahr gebraucht, um das herauszufinden :)
Nate Murray
Dies löste ein ähnliches Problem für mich mit dem Aventail Connect-VPN-Client von Sonicwall, der besonders anfällig für Fehler beim Zuweisen der angeforderten Adresse ist, insbesondere beim Umschalten von drahtlosen Netzwerken. Jetzt habe ich eine Lösung, die ein Aus- und Einschalten nicht vermeidet. Vielen Dank!
Alan Donnelly
Beeindruckend! Es hat auch bei meinem Problem mit BarracudaVPN geholfen ... Ich schalte WLAN aus / ein und konnte endlich wieder eine Verbindung herstellen! Danke vielmals!
Hans_Meine
19

Ich bin auf dieses Problem gestoßen, als ich einen OpenVPN-Heimserver verwendet und eine Verbindung mit dem Tunnelblick-Programm auf dem Mac hergestellt habe.

Was auf meiner Seite passiert ist, ist, dass eine Route mit meiner Heimat-IP als Ziel und einem falschen Gateway nach dem Trennen der VPN-Verbindung übrig geblieben ist. Das Löschen dieser Route löste das Problem einfach

$ sudo route -n delete the.good.dns.name

Beispiel: Ich bin in der Schule und verbinde mich nach einem Neustart des Computers mit einem drahtlosen Netzwerk. Ich verbinde mich mit meinem OpenVPN-Server mit Tunnelblick.

$ netstat -nr
Destination                   Gateway
....
[home-ip]/32                  [school-default-gateway-1] ....
....

Ich trenne mich vom VPN-Server. Ich ändere drahtlose Netzwerke. Dies ändert mein Standard-Gateway.

$ netstat -nr
Destination                   Gateway
...
[home-ip]/32                  [school-default-gateway-1] ...
...
$ ping [home-ip]
PING [home-ip]: 56 data bytes
ping: sendto: Network is unreachable
ping: sendto: Network is unreachable
Request timeout for icmp_seq 0
...

Ich kann in keinem Fall eine Verbindung zu meinem Heimnetzwerk (VPN, Ping, irgendetwas) herstellen, nachdem dies passiert ist. Wenn ich dann nur die Route lösche:

$ sudo route -n delete [home-ip]
delete net [home-ip]
$ ping [home-ip]
PING [home-ip]: 56 data bytes
64 bytes from [home-ip]: icmp_seq=1 ttl=56 time=13.111 ms

Es funktioniert gut.

Möglicherweise gibt es ein Problem mit der Konfiguration des OpenVPN-Servers / -Clients, das dies verlässt (und ich würde gerne herausfinden, was das ist), aber ich habe ein Tunnelblick-Post-Disconnect-Skript installiert, das das Löschen dieser Route automatisiert.

Sean
quelle
Ich habe hier tatsächlich ein ähnliches Problem. Ziemlich nervig.
Tom Busby
Ich bin auf das gleiche Problem gestoßen, auch mit dem Beispiel-Ovpn-Skript. Die einzige Lösung, die ich gefunden habe, ist die gleiche wie bei OP: Löschen der Route in einem Post-
Disconnect
Gibt es eine Möglichkeit, dieses Skript bei jeder Trennung automatisch auszuführen?
Whitecat
@Whitecat Ja! Überprüfen Sie dies heraus: superuser.com/a/1305361
Elad Nava
13

Zunächst benötigen Sie eine Route für Ihre Netzwerkschnittstelle. Wenn das VPN nicht verbunden ist, nehmen Sie einfach Ihre Netzwerkschnittstelle herunter und rufen Sie sie mit ifconfig wieder auf. Verwenden Sie dann den Befehl route, um Ihr Standard-GW einzubauen. Also so etwas wie:

ifconfig en0 down

ifconfig en0 up

route add <ip address> default

Jordan Eunson
quelle
1
Ja, aber woher weiß Mac OS X, welche IP-Adresse die Standardroute hat? Was ich wirklich sehen möchte, ist, wie Mac OS X den Startvorgang ausführt und genau dasselbe tut.
Nate Murray
1
...? Es bekommt es von DHCP ...
Jordan Eunson
5

Ich hatte das gleiche Problem wie bei @Sean (unter OS X), da beim Wechsel zwischen Heim- und Arbeitsnetzwerk die Standardroute nicht gelöscht wurde.

Wenn ich der Vollständigkeit halber zu Hause eine Verbindung zu meinem VPN herstelle und den folgenden Befehl ausführe, wird das Standard-Gateway wie folgt angezeigt

$ netstat -nr
Destination                   Gateway
...
[home-ip]/32                  [work-default-gateway-1]

Und wenn ich die Verbindung abbrach, war das [home-ip] -Gateway immer noch da. Wenn ich mich mit meinem Arbeitsnetzwerk verbinde, kann ich mich überhaupt nicht mit dem Internet verbinden und stoße auf dasselbe Problem wie bei OP

$ traceroute the.good.dns.name    
$ traceroute: bind: Can't assign requested address

Ich müsste dann die Route mit manuell löschen

$ sudo route -n delete [home-ip]

Anfangs habe ich "route -n delete" in ein post-disconnect.shSkript eingefügt, aber das war ein bisschen chaotisch, also habe ich stattdessen diesen Link gefunden

https://code.google.com/p/tunnelblick/issues/detail?id=177

Anscheinend liegt der Grund in den folgenden Einstellungen in meiner .ovpnDatei

user nobody
group nogroup

Dies bedeutet, dass die Route als root eingerichtet ist. Wenn die Verbindung jedoch getrennt wird, ist der Benutzer nicht länger root, sodass die Route nicht gelöscht werden kann.

Das Kommentieren dieser 2 Zeilen in meiner .ovpnDatei behebt das Problem, ohne a verwenden zu müssen post-disconnect.sh.

jklp
quelle
Danke, das hat auch bei mir funktioniert. Es ist bedauerlich, dass der Google-Code-Link nicht mehr funktioniert.
Toby
Ich habe versucht, Ihren Vorschlag zu verwenden. Das Problem ist, dass beim Herstellen einer Verbindung zum VPN die Konfigurationsdateien von irgendwoher abgerufen und meine Änderungen überschrieben werden. Soweit ich das beurteilen kann, werden sie nicht vom Server abgerufen, da das Problem dadurch nicht behoben wird, wenn ich diese Dateien ändere. Gibt es einen clientseitigen Speicherort, an dem ich diese Dateien finden und zerstören / ändern kann, damit meine Änderungen erhalten bleiben?
Finncent Price
Ich habe den trivialen Fehler gemacht, ~ / Library mit / Library zu verwechseln. Hoppla! Für alle , die dies lesen, möchten Sie in ~ / Library / Application Support / Tunnel / Konfiguration / <vpnname> .tblk / Contents / Resources die Datei ändern
Finncent Preis