我的 Mac 上运行着一台 VirtualBox 机器,我可以毫无问题地连接到它,例如使用 SSH:
$ ssh [email protected]
user-centos-6:~ user $
但是,当我从 Mac 连接到 VPN 时,SSH 连接就会关闭,并且我无法再访问 VM:
$ ssh [email protected]
ssh: connect to host 192.168.12.101 port 22: Permission denied
$ ping 192.168.12.101
PING 192.168.12.101 (192.168.12.101): 56 data bytes
ping: sendto: Permission denied
ping: sendto: Permission denied
Request timeout for icmp_seq 0
鉴于我是网络新手,我该如何调试这种情况?
更新 1:
netstat -nr
启用 VPN 之前的输出:
default 192.168.1.1 UGSc 273 0 en0
...
192.168.1.1 XXX UHLWIir 274 3247 en0 1197
192.168.1.255 ff:ff:ff:ff:ff:ff UHLWbI 0 18 en0
192.168.12 link#7 UC 2 0 vboxnet
192.168.12.101 YYY UHLWIi 0 2116 vboxnet 1054
192.168.12.255 ff:ff:ff:ff:ff:ff UHLWbI 0 18 vboxnet
启用VPN后,以上内容基本相同。
VM 有两个网络适配器:
- NAT
- 仅主机适配器(vboxnet0)
答案1
您的 VPN 可能正在更改您的网络路由和/或默认网关。当您连接/断开 VPN 时,请检查输出netstat -nr
并查找默认路由。您可以通过在虚拟机和主机之间使用专用网络来解决这个问题。如果虚拟机使用桥接适配器,则更改网络配置可能会阻止访问。
答案2
最有可能发生的情况是,您的 VPN 使用所有 RFC-1918 地址并将它们映射到您的 VPN 网络。
这意味着,即使您仍分配了 IP 地址,所有网络现在都静态路由到另一端的网络。
到目前为止,我发现唯一可以预测且稳定的解决方案是让您的本地 DHCP 服务器为不在您的 VPN 网络中的 VM 分配地址(我使用223.x.x.x
,因为该范围已交给 ARIN 分配,而且我怀疑我是否会尝试访问该范围内的站点;如果我这样做,我只会管理它),以便您的 VPN 和您的 VM 之间的 NAT 仍然处于活动状态。
大多数 VM 管理程序将允许您为 VM 分配其他地址范围,因此您应该能够弄清楚如何执行此操作。