我有一台台式 Linux(基于 Ubuntu 12.10、笔记本电脑、1 张网卡),我通过标准 pptp 连接到工作 VPN,因此我可以从机器访问本地网络和工作网络。在台式机上,我有一台带桥接网络适配器的 Windows Server 2008 VirtualBox 机器,因此它从本地路由器获取 IP。台式机和虚拟机可以毫无问题地互相看到。台式机可以看到 VPN 子网,但虚拟机当然看不到。
有没有办法让本地局域网(主要是我的虚拟机)上的其他机器访问工作网络?
我尝试了一些操作,比如添加路由(在虚拟中)到工作子网以通过我的桌面 IP,但我不知道如何在桌面上设置路由器服务(以及创建到我的 vpn 连接的路由)。
答案1
您需要遵循以下步骤:
- 为任何要连接到工作网络的 LAN 主机添加路由。首先,为虚拟机添加路由。工作网络的网关是您的笔记本电脑的 IP。
- 在笔记本电脑上启用转发。
echo 1 > /proc/sys/net/ipv4/ip_forward
并取消注释net.ipv4.ip_forward = 1
以/etc/sysctl.conf
使此参数在重启后启用。 - 由于您的 LAN 主机在 VPN 上没有地址,您可能需要使用笔记本电脑的 VPN IP 伪装其 IP。
iptables -t nat -A POSTROUTING -o tunX -j MASQUERADE
,tunX
是您的虚拟隧道接口。
答案2
最简单的方法是设置虚拟以使用 NAT。在 VirtualBox 中,只需单击一下即可。它应该处理 slimsuperhero 的回答中列出的大部分内容。就我个人而言,我宁愿将 vpn 卸载到我的 ADSL 路由器,在那里设置 NAT,然后这样解决它。