如果没有正常断开连接,Juniper Network Connect VPN 客户端似乎会使 OS X 网络接口处于不可用状态。
编辑:“正常断开连接”是指 VPN 因点击软件客户端上的“退出”按钮以外的原因而断开连接的情况。当 wifi 断开连接时间过长导致 VPN 断开连接时,或者我可能忘记断开连接而关闭了笔记本电脑屏幕等,就会发生这种情况。
从终端,简单的 ping 可以得到以下结果:
ping: sendto: Cannot allocate memory
重新启动可以解决问题,但是很不方便。
使用ifconfig重置接口不起作用:
ifconfig en0 down
ifconfig en0 up
刷新路由表也不会:
route -n flush
我还尝试重置 DNS 缓存(完全不相关,但我想我还是会尝试一下)。这显然没有用。
launchctl unload /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
launchctl load /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
最终可靠有效的方法是关闭 IPv4,然后按照以下步骤将其重新打开:
- 打开系统偏好设置
- 点击网络图标
- 点击损坏的界面。
- 单击“高级”按钮。
- 选择 TCP/IP
- 在配置 IPv4 下选择“关闭”。
- 选择“确定”
- 选择“应用”。
- 重复步骤 4 - 8,但将步骤 6 替换为您想要的 IP 配置方法。
所以我的问题是... 有没有办法从命令行实现与上述步骤 1-9 相同的操作?理想情况下,我希望能够调用 bash 脚本来执行重置。
注意:这是在 OS X Mountain Lion 和 OS X Yosemite 上测试的。我跳过了 OS X Mavericks,因此我省略了该特定标签。我有充分的理由认为这也适用于 Mavericks,但我无法证明这一点。
答案1
这些命令对我有用。
关闭 IPv4:
sudo networksetup -setv4off Wi-Fi
将其设置回 DHCP:
sudo networksetup -setdhcp Wi-Fi
答案2
查看路由表并删除所有到本地/VPN 网络的路由,然后尝试重新连接到您的 VPN。
sudo route delete 192.168.1.0
或者 :)
答案3
也许您正在寻找networksetup
?特别是此缩写列表中最后一个开/关,以及可能直接有用的其他选项。(运行不带参数的该命令可查看整个很长的选项列表。)
Usage: networksetup -listnetworkserviceorder
Display services with corresponding port and device in order they are tried for connecting
to a network. An asterisk (*) denotes that a service is disabled.
Usage: networksetup -listallnetworkservices
Display list of services. An asterisk (*) denotes that a network service is disabled.
Usage: networksetup -getnetworkserviceenabled <networkservice>
Display whether a service is on or off (enabled or disabled).
Usage: networksetup -setnetworkserviceenabled <networkservice> <on off>
Set <networkservice> to either <on> or <off> (enabled or disabled).
答案4
我每次关闭 Network Connect VPN 时都会看到此问题忘恩负义方式。我使用了上面提供的答案,并在我的/etc/profile
alias netbounce='sudo networksetup -setv4off Wi-Fi;sudo networksetup -setdhcp Wi-Fi'
现在,当这种情况发生时,我netbounce
在终端上打字,一切正常。