问候,
我使用vpnc
作为VPN客户端。 我也正在做一些棘手的事情,以确保我仍然可以访问我的本地networking等等(这里的细节不是很重要)。
有时我得到的路由表,所以顶起来我得到了ping: sendto: Network is unreachable
的url,否则应该解决。
目前,如果我重新启动Mac OS X,一切都恢复正常。 我想要做的就是将路由表重置为“默认”(例如,启动时设置的), 而不需要重新启动整个系统。
我认为第1步是route flush
(删除所有路由)。 第二步需要重新加载所有的默认路由。
任何想法如何做到这一点? (例如,步骤2是什么?)
编辑此外,我注意到另一个症状是traceroute
也有问题的地址上失败。 例如:
traceroute the.good.dns.name
traceroute: bind: Can't assign requested address
你需要刷新路线。 使用路由-n冲洗几次。 之后,添加路线添加您的路线。
我在使用家庭OpenVPN服务器时遇到了这个问题,并使用Mac上的Tunnelblick应用程序连接到它。
在我的最后发生了什么事情是,我的家庭IP作为目的地和一个不正确的网关路由从VPN断开后,剩下的路由。 删除这条路线简单地解决了这个问题
$ sudo route -n delete the.good.dns.name
例如:我在学校,在电脑启动后,我连接到无线networking。 我用Tunnelblick连接到我的家庭OpenVPN服务器。
$ netstat -nr Destination Gateway .... [home-ip]/32 [school-default-gateway-1] .... ....
我从VPN服务器断开连接。 我改变无线networking。 这改变了我的默认网关。
$ 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 ...
在这种情况发生之后,我不能在任何情况下连接到我的家庭networking(VPN,ping,任何东西)。 如果我只是删除路线:
$ 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
它工作正常。
OpenVPN服务器/客户端的configuration方式可能会出现问题(我想知道这是什么),但是我安装了一个Tunnelblick post-disconnect脚本,可以自动删除这个路由。
首先你需要一个networking接口的路由。 如果VPN断开连接,只要把你的networking接口closures,然后用ifconfig重新启动。 然后使用路由命令来构build默认的gw。 所以像这样:
ifconfig en0 down
ifconfig en0 up
route add <ip address> default
我遇到了与@Sean(我也在运行OS X)相同的问题,因为当我在家庭和工作networking之间切换时,默认路由没有被删除。
为了完整起见,当我在家连接到我的VPN并运行以下命令时,它将显示如下的默认网关
$ netstat -nr Destination Gateway ... [home-ip]/32 [work-default-gateway-1]
当我断开连接时,[home-ip]网关仍然在那里。 当我连接到我的工作networking时,根本无法连接到互联网,并遇到与OP相同的问题
$ traceroute the.good.dns.name $ traceroute: bind: Can't assign requested address
然后我必须手动删除路由
$ sudo route -n delete [home-ip]
最初,我把“route -n delete”放在post-disconnect.sh
脚本中,但是有点麻烦,所以我find了这个链接
https://code.google.com/p/tunnelblick/issues/detail?id=177
显然原因是由于在我的.ovpn
文件中设置以下内容
user nobody group nogroup
这意味着路由是以root身份build立的,但是当连接断开时,用户不再是root用户,所以路由不能被删除。
在我的.ovpn
文件中注释这两行解决了这个问题,而不必使用post-disconnect.sh
。