Nat*_*ray 78 networking routing iptables mac-osx eth0
你好,
我正在使用vpncVPN 客户端。我也在做一些棘手的事情,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
小智 74
您需要刷新路线。多次使用route -n flush。然后使用 route add 添加您的路线。
小智 23
我在使用家庭 OpenVPN 服务器并使用 Mac 上的 Tunnelblick 应用程序连接到它时遇到了这个问题。
我这边发生的事情是,与 VPN 断开连接后,以我的家庭 IP 作为目的地和错误网关的路由被剩余。删除这条路线解决了这个问题,简单地
$ sudo route -n delete the.good.dns.name
Run Code Online (Sandbox Code Playgroud)
示例:我在学校,在重新启动计算机后,我连接到无线网络。我使用 Tunnelblick 连接到我的家庭 OpenVPN 服务器。
$ netstat -nr
Destination Gateway
....
[home-ip]/32 [school-default-gateway-1] ....
....
Run Code Online (Sandbox Code Playgroud)
我与 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
...
Run Code Online (Sandbox Code Playgroud)
发生这种情况后,我在任何情况下都无法连接到我的家庭网络(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
Run Code Online (Sandbox Code Playgroud)
它工作正常。
OpenVPN 服务器/客户端的配置方式可能存在问题,这将导致此问题(我很想知道那是什么),但我安装了一个 Tunnelblick 断开连接后脚本,可以自动删除此路由。
Jor*_*son 17
首先,您需要一个网络接口的路由。如果 VPN 断开连接,那么只需关闭您的网络接口,然后使用 ifconfig 将其恢复。然后使用路由命令构建您的默认 gw。所以像:
ifconfig en0 down
ifconfig en0 up
route add <ip address> default
我遇到了与@Sean 相同的问题(我也在运行 OS X),因为当我在家庭网络和工作网络之间切换时,默认路由没有被删除。
为了完整起见,当我在家里连接到我的 VPN 并运行以下命令时,它会显示如下默认网关
$ netstat -nr
Destination Gateway
...
[home-ip]/32 [work-default-gateway-1]
Run Code Online (Sandbox Code Playgroud)
当我断开连接时,[home-ip] 网关仍然存在。当我连接到我的工作网络时,我根本无法连接到互联网,并遇到与 OP 相同的问题
$ traceroute the.good.dns.name
$ traceroute: bind: Can't assign requested address
Run Code Online (Sandbox Code Playgroud)
然后我必须手动删除路线
$ sudo route -n delete [home-ip]
Run Code Online (Sandbox Code Playgroud)
最初我将“route -n delete”放在一个post-disconnect.sh脚本中,但这有点乱,所以我找到了这个链接
https://code.google.com/p/tunnelblick/issues/detail?id=177
显然原因是由于在我的.ovpn文件中设置了以下内容
user nobody
group nogroup
Run Code Online (Sandbox Code Playgroud)
这意味着路由设置为 root,但是当连接断开时,用户不再是 root,因此无法删除路由。
在我的.ovpn文件中注释这两行可以解决问题,而无需使用post-disconnect.sh.
| 归档时间: |
|
| 查看次数: |
120578 次 |
| 最近记录: |