![当我的 Mac 使用 VPN 时,如何通过 ssh 进入我的 Ubuntu VM?](https://linux22.com/image/500810/%E5%BD%93%E6%88%91%E7%9A%84%20Mac%20%E4%BD%BF%E7%94%A8%20VPN%20%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%20ssh%20%E8%BF%9B%E5%85%A5%E6%88%91%E7%9A%84%20Ubuntu%20VM%EF%BC%9F.png)
当我没有使用雇主的 VPN 时,我可以通过 ssh 进入我的 Ubuntu VM(在 VMware Fusion 中运行)。(当 VM 的网络连接为 NAT 和桥接时,它都可以工作。)但是当我连接到 VPN 时,我无法再通过 ssh 进入我的 VM:
$ ssh 172.16.193.128
ssh: connect to host 172.16.193.128 port 22: Operation timed out
我尝试过 NAT 和桥接网络连接,但遇到了同样的问题。我甚至尝试过在连接到 VPN 后从桥接切换到 NAT。
连接到 VPN 时,我可以从 VM ping 我的 Mac。
是什么原因导致了这个问题?有什么建议可以解决它吗?有解决方法吗?
(请注意,我希望能够通过 ssh 进入 VM,这样我就可以使用 MacFUSE 挂载其文件系统,并使用我的 Mac OS X 编辑器编辑文件等。)
答案1
我怀疑,当您连接到 VPN 时,它会更改计算机上的路由表,并将该路由重定向到 VPN。我相信netstat -r
在连接和断开 VPN 的情况下运行并比较结果,是测试此问题的方法。
我假设您在连接时无法从 Mac ping 通 VM,但断开连接时可以。
我相信你可以通过使用反向 SSH 隧道来解决这个问题。(这里是如何做到这一点的一个解释——请注意,我实际上还没有尝试过。)
另外,虚拟机还有其他方式可以访问它吗?您可以使用 mDNS(Bonjour)进行连接吗,例如使用 hostname.local,其中 hostname 是虚拟机的主机名?
答案2
您也可以选择不使用 VPN 隧道上的默认路由。这样,除 VPN 网络流量之外的所有流量都将正常发送。但是,在我的办公室,我们有多个 VPN 接入所需的网络。每次创建 VPN 隧道后,我都必须添加特定路由。
假设: 10.0.0.100 为 Mac 的 VPN 分配地址 10.0.0.0,子网为 255.255.255.0,为主要工作网络 10.0.100.0,子网为 255.255.255.0,为第二个工作网络
在 Windows 下:route add 10.0.100.0 mask 255.255.255.0 10.0.0.100 在 Linux 下:route add -net 10.0.100.0 netmask 255.255.255.0 gw 10.0.0.100