Comment recharger la table de routage par défaut Mac OSX sans redémarrer

71

Salutations,

J'utilise vpncpour un client VPN. Je fais aussi des choses délicates routepour m'assurer que je peux toujours accéder à mon réseau local, etc. etc. (les détails ici ne sont pas très importants).

Parfois, je reçois la table de routage tellement levée que je reçois ping: sendto: Network is unreachabledes URL qui devraient autrement être résolues.

Actuellement, si je redémarre Mac OS X, tout est revenu à la normale. Ce que je voudrais faire est de réinitialiser les tables de routage sur "par défaut" (par exemple, ce qui est défini sur au démarrage) sans un redémarrage complet du système.

Je pense que l'étape 1 est route flush(pour supprimer tous les itinéraires). Et l'étape 2 doit recharger toutes les routes par défaut.

Des idées sur la façon de faire cela? (par exemple, quelle est l'étape 2?)

EDIT En outre, je remarque un autre symptôme est tracerouteégalement échoue sur l'adresse en question. Par exemple:

traceroute the.good.dns.name

traceroute: bind: Can't assign requested address

Nate Murray
la source

Réponses:

64

Vous devez vider les routes. Utilisez route -n plusieurs fois. Ensuite, ajoutez vos itinéraires avec route add.

cavern
la source
1
J'ai changé cela en réponse acceptée. Ça marche! Je l'ai fait route -n flushplusieurs fois, puis je viens de redémarrer mon réseau via les préférences système. Cela ne m'a pris qu'un an pour revenir et résoudre ce problème :)
Nate Murray
Cela a résolu un problème similaire pour moi avec le client VPN Aventail Connect de Sonicwall, que je trouve particulièrement sujet aux échecs "Impossible d’attribuer une adresse demandée", en particulier lors de la commutation de réseaux sans fil. Maintenant, j'ai un moyen de résoudre cela qui n'empêche pas un cycle d'alimentation. Merci!
Alan Donnelly
Hou la la! Cela m'a également aidé avec mon problème avec BarracudaVPN… J'ai activé / désactivé le Wi-Fi et j'ai enfin pu me reconnecter! Merci beaucoup!
hans_meine
19

Je rencontrais ce problème en utilisant un serveur domestique OpenVPN et en le connectant à l'aide de l'application Tunnelblick sur Mac.

Ce qui se passait de mon côté, c’est qu’un itinéraire avec mon IP de destination comme destination et une passerelle incorrecte obtenait des restes après la déconnexion du VPN. La suppression de cette route a résolu le problème, simplement

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

Exemple: je suis à l'école et après un nouveau démarrage d'ordinateur, je me connecte à un réseau sans fil. Je me connecte à mon serveur OpenVPN à la maison avec Tunnelblick.

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

Je me déconnecte du serveur VPN. Je change de réseau sans fil. Cela change ma passerelle par défaut.

$ 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
...

Je ne peux en aucun cas me connecter à mon réseau domestique (VPN, ping, quoi que ce soit) après cela. Si je supprime simplement la route:

$ 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

Ça fonctionne bien.

Il pourrait y avoir un problème avec la configuration du serveur / client OpenVPN qui laisse cela (et j'aimerais savoir ce que c'est), mais j'ai installé un script de post-déconnexion Tunnelblick qui automatise la suppression de cette route.

Sean
la source
En fait, j'ai un problème similaire ici. Vraiment énervant.
Tom Busby
Je rencontre le même problème, même avec l'exemple de script ovpn. La seule solution que j'ai trouvée est la même que OP, en supprimant la route dans un script post-déconnexion: /
jklp
Existe-t-il un moyen d'exécuter automatiquement ce script à chaque déconnexion?
Whitecat
@ Whitecat Oui! Découvrez ceci: superuser.com/a/1305361
Elad Nava
13

Tout d'abord, vous avez besoin d'un itinéraire pour votre interface réseau. Si le VPN est déconnecté, il suffit de déconnecter votre interface réseau, puis de la rétablir avec ifconfig. Ensuite, utilisez la commande route pour intégrer votre gw par défaut. Donc, quelque chose comme:

ifconfig en0 down

ifconfig en0 up

route add <ip address> default

Jordan Eunson
la source
1
Oui, mais comment Mac OS X sait-il quelle est l'adresse IP de la route par défaut? Ce que j'aimerais vraiment voir, c'est comment Mac OS X effectue le processus de démarrage et fait exactement la même chose.
Nate Murray
1
...? Ça vient de DHCP ...
Jordan Eunson Le
5

Je rencontrais le même problème que @Sean (je suis aussi sous OS X), en ce sens que lorsque j'ai basculé entre le réseau domestique et le réseau professionnel, la route par défaut n'était pas supprimée.

Pour être complet, lorsque je me connecte à mon VPN à la maison et que j'exécute la commande suivante, la passerelle par défaut est affichée comme ci-dessous.

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

Et quand je me suis déconnecté, la passerelle [home-ip] serait toujours là. Lorsque je me connectais à mon réseau professionnel, je ne pouvais plus me connecter à Internet et je rencontrais le même problème que l'OP

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

Je devais alors supprimer manuellement l'itinéraire avec

$ sudo route -n delete [home-ip]

Initialement, je mettais "route -n delete" dans un post-disconnect.shscript, mais c'était un peu compliqué alors j'ai plutôt trouvé ce lien

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

Apparemment, la raison est due à la définition des paramètres suivants dans mon .ovpndossier

user nobody
group nogroup

Ce qui signifie que la route est configurée en tant que root, mais que lorsque la connexion est établie, l'utilisateur n'est plus root et la route ne peut donc pas être supprimée.

Commenter ces 2 lignes dans mon .ovpnfichier a résolu le problème, sans avoir à utiliser un fichier post-disconnect.sh.

jklp
la source
Merci, cela a fonctionné pour moi aussi. Il est regrettable que le lien de code Google ne fonctionne plus.
Toby
J'ai essayé d'utiliser votre suggestion, le problème est que lorsque je me connecte au VPN, il extrait les fichiers de configuration de quelque part et écrase mes modifications. Autant que je sache, cela ne les récupère pas du serveur, car le fait de modifier ces fichiers ne résout pas le problème. Existe-t-il un emplacement côté client où je peux trouver ces fichiers et les détruire / les modifier afin que mes modifications restent en place?
Prix ​​Finncent
Je faisais l'erreur triviale de confondre ~ / Library avec / Library. Oops! Pour tous ceux qui lisent ceci, vous voulez modifier le fichier dans ~ / Bibliothèque / Application Support / Tunnelblick / Configurations / <nom du vpn> .tblk / Contenu / Ressources
Finncent Price