我可以通过 Linux 上的 NAT 控制 VirtualBox 客户机的网络访问吗?

我可以通过 Linux 上的 NAT 控制 VirtualBox 客户机的网络访问吗?

我使用 VirtualBox 作为 Vagrant 的 VM 提供程序,作为管理员,我在 CentOS 7.2 系统上将两者都作为软件包安装。我大体上信任主机操作系统的安全性,但这些 VM 的目的是让人们能够在相当安全的环境中以 root 身份试用 Linux。

我已经将vboxnetflt内核模块列入黑名单,现在您无法使用桥接网络启动虚拟机,这让用户只能选择不连接主机外部的网络或 NAT。但是,在虚拟机上使用 NAT 时,主机系统上没有我可以设置防火墙的接口,我只想提供访客可以与之通信的系统的白名单。

(显然,没有来自主机外部的入站访问,但这里我担心的是出站连接。)

鉴于我无法强制控制客人的谈话内容,限制这些客人谈话内容的最佳方法是什么?

答案1

我可以通过 Linux 上的 NAT 控制 VirtualBox 客户机的网络访问吗?

不可以:通过数据包分析tcpdump清楚地表明传出的数据包不带有任何来源的痕迹(来自主机/来自客户机),因此没有简单的方法来区分这两者。

你可以做的是使用仅主机适配器启用 DHCP 服务器,而不是 NAT,然后将以下行添加到/etc/rc.local每个虚拟机的文件(我马上就告诉你如何做):

ip route add default via 192.168.56.1

并在主机上发出以下命令:

 echo 1 > /proc/sys/net/ipv4/ip_forward
 iptables -t nat -A POSTROUTING -o YourMainInterface -j MASQUERADE

在哪里您的主接口 = eth0,wlan0,..., 任何。

为了生产相同的 BM,只需配置根据你的喜好,将其保存为 OVA 文件文件 -> 导出设备,然后重新导入它,更改所有接口的 MAC 地址(当时一个简单的自动选项进口电器)。

现在主机有一个接口,默认情况下调用vbonet0,您可以在其上激活防火墙:

iptables -A OUTPUT -o vboxnet0 -p udp --dport 53 -j ACCEPT 
iptables -A OUTPUT -o vboxnet0 -d AllowedIpAddress -j ACCEPT 
iptables -P OUTPUT -o vboxnet0 DROP

相关内容