问候,
我正在使用vpnc
VPN客户端。我也在做一些棘手的事情,route
以确保我仍然可以访问我的本地网络等(这里的细节不是很重要)。
有时我得到了路由表,所以我得到ping: sendto: Network is unreachable
了原本应该解决的 url。
目前,如果我重新启动 Mac OS X,那么一切都会恢复正常。我想做的是将路由表重置为“默认值”(例如它在启动时设置的值),而无需重新启动整个系统。
我认为第 1 步是route flush
(删除所有路线)。第 2 步需要重新加载所有默认路由。
关于如何做到这一点的任何想法?(例如,第 2 步是什么?)
编辑
另外,我注意到另一个症状traceroute
在有问题的地址上也失败了。例如:
traceroute the.good.dns.name
traceroute: bind: Can't assign requested address
您需要刷新路线。多次使用route -n flush 。然后使用 route add 添加您的路线。
我在使用家庭 OpenVPN 服务器并使用 Mac 上的 Tunnelblick 应用程序连接到它时遇到了这个问题。
我这边发生的事情是,在与 VPN 断开连接后,一条以我的家庭 IP 为目的地且网关不正确的路由正在剩余。删除这条路线解决了这个问题,只是
示例:我在学校,重新启动计算机后,我连接到无线网络。我使用 Tunnelblick 连接到我的家庭 OpenVPN 服务器。
我断开与 VPN 服务器的连接。我改变无线网络。这会更改我的默认网关。
发生这种情况后,我在任何情况下都无法连接到我的家庭网络(VPN、ping 等)。如果我只是删除路线:
它工作正常。
OpenVPN 服务器/客户端的配置方式可能存在问题,这会导致此问题(我很想知道那是什么),但我安装了一个 Tunnelblick 断开连接后脚本,可以自动删除此路由。
首先,您需要网络接口的路由。如果 VPN 已断开连接,则只需关闭您的网络接口,然后使用 ifconfig 将其重新启动。然后使用 route commnand 构建您的默认 gw。所以像:
ifconfig en0 down
ifconfig en0 up
route add <ip address> default
我遇到了与@Sean 相同的问题(我也在运行 OS X),因为当我在家庭网络和工作网络之间切换时,默认路由没有被删除。
为了完整起见,当我在家中连接到我的 VPN 并运行以下命令时,它会显示如下默认网关
当我断开连接时,[home-ip] 网关仍然存在。当我连接到我的工作网络时,我根本无法连接到互联网,并遇到与 OP 相同的问题
然后我必须手动删除路线
最初我将“route -n delete”放在
post-disconnect.sh
脚本中,但这有点乱,所以我找到了这个链接https://code.google.com/p/tunnelblick/issues/detail?id=177
显然原因是由于在我的
.ovpn
文件中设置了以下内容这意味着路由设置为root,但是当连接断开时,用户不再是root,因此无法删除路由。
在我的文件中注释这两行
.ovpn
可以解决问题,而无需使用post-disconnect.sh
.