我正在将
vpnc
用于VPN客户端。我还在用route
做一些棘手的事情,以确保我仍然可以访问我的本地网络等。(这里的细节不是很重要)。有时候我得到了路由表,所以顶起来,我得到
ping: sendto: Network is unreachable
可以解决的网址。 当前,如果我重新启动Mac OS X,则一切恢复正常。我想做的是将路由表重置为“默认”(例如,在启动时设置为默认值),而无需整个系统重新启动。
我认为第一步是
route flush
(删除所有路由)。第2步需要重新加载所有默认路由。关于如何执行此操作的任何想法? (例如,第2步是什么?)
EDIT
另外,我注意到另一个症状是
traceroute
在相关地址上也失败了。例如:traceroute the.good.dns.name
traceroute: bind: Can't assign requested address
#1 楼
您需要冲洗路线。使用route -n flush多次。然后使用route add添加您的路线。#2 楼
在使用家用OpenVPN服务器并使用Mac上的Tunnelblick应用程序连接到它时,我遇到了这个问题。最后发生的事情是以我的家庭IP为目的地的路由,从VPN断开连接后,不正确的网关将剩余。删除这条路线即可解决问题,只需
$ sudo route -n delete the.good.dns.name
示例:我在学校,重新启动计算机后,我连接了无线网络。我使用Tunnelblick连接到我的家庭OpenVPN服务器。
$ netstat -nr
Destination Gateway
....
[home-ip]/32 [school-default-gateway-1] ....
....
我从VPN服务器断开连接。我更改无线网络。这会更改我的默认网关。
$ 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
...
这种情况发生后,无论如何我都无法连接到我的家庭网络(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服务器/客户端的运行方式可能存在问题已配置,该设置将保留此设置(我很想找出是什么),但是我安装了Tunnelblick断开后脚本,该脚本可自动执行此路由删除。
评论
我实际上在这里有一个类似的问题。真烦人。
–汤姆·比斯比(Tom Busby)
2015年6月17日14:16在
即使使用示例ovpn脚本,我也遇到了相同的问题。我发现的唯一解决方案与OP相同,只是删除了断开连接后脚本中的路由:/
– jklp
2015年10月5日23:11
有没有办法在每次断开连接时自动运行此脚本?
–白猫
17年5月25日在17:21
@Whitecat是的!签出:superuser.com/a/1305361
– Elad Nava
18年5月22日在10:31
#3 楼
首先,您需要网络接口的路由。如果VPN断开连接,则只需断开您的网络接口,然后使用ifconfig将其恢复。然后使用路由命令构建默认的gw。就像这样:ifconfig en0 down
ifconfig en0 up
route add <ip address> default
评论
是的,但是Mac OS X如何知道默认路由的IP地址是什么?我真正想看到的是Mac OS X如何完成启动过程并完成完全相同的操作。
–内特·默里(Nate Murray)
09-10-26在22:10
...?它是从DHCP获取的...
–乔丹·尤森(Jordan Eunson)
09-10-26在22:21
#4 楼
我遇到了与@Sean相同的问题(我也正在运行OS X),因为当我在家庭和工作网络之间切换时,默认路由没有被删除。为完整起见,当我在家中连接VPN并运行以下命令时,它将显示默认网关,如下所示
$ netstat -nr
Destination Gateway
...
[home-ip]/32 [work-default-gateway-1]
当我断开连接时,[home-ip]网关仍然存在。当我连接到我的工作网络时,我根本无法连接到Internet,并遇到与OP相同的问题。
$ traceroute the.good.dns.name
$ traceroute: bind: Can't assign requested address
使用
$ sudo route -n delete [home-ip]
手动删除路由最初,我在
post-disconnect.sh
脚本中放置了“ route -n delete”,但这有点混乱,所以我找到了此链接https://code.google.com/p/tunnelblick/issues/detail?id=177
显然原因是由于在我的
.ovpn
文件中设置了以下内容user nobody
group nogroup
这意味着将路由设置为root,但断开连接后,用户不再是root,因此无法删除该路由。
在我的
.ovpn
文件中注释了这两行,无需使用post-disconnect.sh
即可解决此问题。 评论
谢谢,这也为我工作。不幸的是,谷歌代码链接不再起作用。
–托比
18年2月1日在6:06
我尝试使用您的建议,问题是当我连接到VPN时,它会从某处提取配置文件并覆盖我的更改。据我所知,它并没有从服务器上获取它们,因为当我更改这些文件时,并不能解决问题。是否有一些客户端位置可以找到这些文件并销毁/修改它们,以便我的更改得以保留?
–价格
18-10-24在9:19
我犯了一个琐碎的错误,将〜/ Library与/ Library混淆了。糟糕!对于阅读本文的任何人,您都想要在〜/ Library / Application Support / Tunnelblick / Configurations /
–价格
18-10-24在9:26
评论
我已将其更改为可接受的答案。有用!我做了几次-n flush命令,然后通过“系统”偏好设置重新启动了网络。我只花了一年时间就回来解决这个问题:)
–内特·默里(Nate Murray)
11年5月13日在16:44
Sonicwall的Aventail Connect VPN客户端为我解决了类似的问题,我发现它特别容易出现“无法分配请求的地址”故障,尤其是在切换无线网络时。现在,我有一种解决方法,可以避免电源重启。谢谢!
–艾伦·唐纳利(Alan Donnelly)
2012-10-18 18:56
哇!这也有助于解决BarracudaVPN的问题……我关闭/打开了Wi-Fi,最后可以再次连接!非常感谢!
–hans_meine
19年6月27日在15:50