限制 VirtualBox 网络访问

限制 VirtualBox 网络访问

我在 Linux 主机内运行 Windows XP VM。我的 Linux 机器通过 OpenVPN 连接到我公司的网络,我不希望 Windows 机器访问该网络。我原以为很容易解决的问题似乎要困难得多。

我的想法是通过主机上的 iptables 限制 VirtualBox 的访问,只需删除从客户机到 VPN 的所有内容即可。但是,与 Xen 不同,我似乎无法在主机中显示桥接接口。我是不是漏掉了什么?有人在主机上为客户机运行防火墙吗?

答案1

我正在运行类似的设置。你没有提到你的 Linux 发行版,但我使用的是 Ubuntu Linux 11.10。任何其他发行版都应该以非常类似的方式工作。

据我所知,我这样做的方式仍然在 VirtualBox 中有所记录,但不再是他们将 VirtualBox 网络连接到主机的默认方法。基本上,你需要安装uml-utilities(用户模式 ​​Linux 的一部分)。然后,向 添加一个接口/etc/network/interfaces,如下所示:

auto vbox1
iface vbox1 inet static
  address 192.168.1.1
  netmask 255.255.255.0
  tunctl_user virtualbox

启动此接口后,您就可以将 VirtualBox 桥接到它。您不想将此接口桥接到其他任何设备(例如eth0),否则您的 VM 将再次拥有对网络的完全访问权限。相反,您希望在此网络和任何其他允许的资源之间路由流量,在这种情况下,拒绝访问您的 VPN 网络。请注意,这需要net.ipv4.ip_forward=1在类似 的内容中指定/etc/sysctl.conf

这些是我在设置中与 VirtualBox 受限网络相关的具体部分iptables。您可能希望根据自己的具体需求进行调整,但这应该能给您一个良好的开端:

# Must be able to access DNS running on the host itself (everything else is denied elsewhere).
iptables -A INPUT -i vbox1 -p udp --dport 53 -j ACCEPT

iptables -A INPUT -i vbox1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i vbox1 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow access out to the Internet.
iptables -A FORWARD -i vbox1 -o $WAN_IF -j ACCEPT

只要您设置WAN_IF为您的 Internet 连接(并为其他允许的接口或地址添加类似的规则),但不向您的 VPN 添加允许的路径,这应该可以满足您的要求。

相关内容