Starten Sie die Netzwerkkonfiguration vom Terminal neu

Ich habe ein Problem, bei dem sich mein MacBook nicht wieder mit dem Internet verbindet, nachdem ich mein Arbeits-VPN deaktiviert habe. Ein einfacher Neustart behebt dies, aber ich habe mich gefragt, ob es eine Möglichkeit gibt, die Netzwerkkonfigurationen neu zu starten oder den Cache (nicht sicher, was genau das Problem ist) von der Befehlszeile aus zu löschen - ohne einen Neustart durchführen zu müssen?

Ich habe folgendes versucht, ohne Erfolg

$ ifconfig en0 down && ifconfig en0 up

Gibt es eine Möglichkeit, die Netzwerkkonfiguration nach einem Neustart auf die Standardwerte zurückzusetzen?

Bearbeiten: Dies passiert nicht jedes Mal, ich bin mir nicht genau sicher, welche Ereigniskette es auslöst.

Ist es ein DNS- oder Routing-Problem? Können Sie eine IP (z. B. 4.4.4.4) anpingen?
Ich kann keine externe Adresse anpingen. Mein Verdacht war ein DNS-Problem; Die DNS-Adressen schienen jedoch nach einem Neustart unverändert zu sein. Ich sollte auch beachten, dass dieses Problem nicht jedes Mal auftritt - es ist sporadisch.
Wenn Sie eine IP-Adresse nicht anpingen können, handelt es sich nicht um DNS. Try sudo networksetup -setnetworkserviceenabled Ethernet off; sleep 10; networksetup -setnetworkserviceenabled Ethernet onThat deaktiviert Ihr Ethernet, wartet 10 Sekunden und schaltet es dann wieder ein.
Okay danke. Beim nächsten Ausfall probiere ich es aus und melde mich wieder!
Es kann sein, dass die von der VPN-Verbindung bereitgestellten Routen nicht aus den Tabellen gelöscht werden, wenn Sie die Verbindung trennen. Ich würde vorschlagen, es zu versuchen sudo networksetup -setadditionalroutes "Insert Name of Network Service here". Das Fehlen von Argumenten nach dem Dienstnamen löscht alle zusätzlichen Routen. PS Ich glaube nicht, dass macOS so niedrigen Zugriff auf Schnittstellen gewährt hat, die Sie von der Verwendung von erwarten könnten ifconfig, es ist im Grunde ein Wrapper, der an dieser Stelle für die Kompatibilität übrig bleibt. Werfen Sie einen Blick auf man scutilfür eine wirklich feinkörnige Steuerung.

Antworten (1)

Mangelnder Netzwerkzugriff nach der Trennung von einem VPN kann ein Symptom für ein Routing-Problem sein. Wenn Ihr VPN-Client die Verbindung nicht ordnungsgemäß trennt, kann das Gateway, das Ihren Datenverkehr an das virtuelle Netzwerk weiterleitet, manchmal bestehen bleiben und Ihren Datenverkehr effektiv in eine Sackgasse leiten.

Ich würde vorschlagen, Ihre Schnittstellen herunterzufahren, die Routing-Tabelle der Gateway-Einträge zu leeren und sie wieder hochzufahren:

  1. Fahren Sie Ihre Netzwerkschnittstellen herunter:

    for i in $(ifconfig | egrep -o "^[a-z].+\d{1}:" | sed 's/://'); do sudo ifconfig "$i" down; done
    
  2. Leeren Sie die Routing-Tabelle: sudo route -n flush.

  3. Bringen Sie Ihre Schnittstellen wieder hoch: (wiederholen Sie Schritt 1 mit upstatt down).

Wenn Sie dafür eine wiederverwendbare Bash-Funktion wünschen, die Sie in Ihre .bashrc (oder wo auch immer) einfügen können, können Sie Folgendes speichern:

resetroute () {
    echo "Flushing routes...";
    for i in $(ifconfig | egrep -o "^[a-z].+\d{1}:" | sed 's/://');
    do
        sudo ifconfig "$i" down;
    done;
    sudo route -n flush;
    for i in $(ifconfig | egrep -o "^[a-z].+\d{1}:" | sed 's/://');
    do
        sudo ifconfig "$i" up;
    done
}
Überraschenderweise ist der Fehler nicht wieder aufgetaucht. Ich werde das auf jeden Fall ausprobieren, wenn es funktioniert, und es akzeptieren, wenn es funktioniert. Bis dahin +1 für den Vorschlag