我搜索了好久,但还是没找到办法。我找到的答案说要买第二个网卡,并将其专用于 Windows 客户机。我的主机是 Linux Mint 16。
我知道如何为客户机指定网络适配器,但如何让 Windows 客户机可以访问互联网但无法访问主机网络上的任何其他计算机。
我想确保即使手动更改了访客的 IP 地址,它也无法访问网络的其余部分。它应该只能看到自己(也可能是主机)。
答案1
这可以在 VirtualBox 中完成。
您必须选择允许使用iptables控制数据包。因此 NAT 和 Bridge 都不能做到这一点,因为它们不会创建用户可访问的 NIC。您应该使用仅主机网络而是在主机上创建一个名为 vboxnet0 的用户可访问的接口。
要配置它,请通过文件 -> 首选项 -> 网络 -> 仅主机网络 -> 加号来创建它,然后通过 Screwdriver -> DHCP 服务器,启用 DHCP 服务器。保存设置,启动虚拟机。
现在,您需要在客户机上将主机设置为其网关:主机的默认 IP 为 192.168.56.1。使用 Google 查找有关如何在 Windows 上执行此操作的说明。并且,您可能必须设置 DNS 服务器。
在主机上,所有这些指令都以 sudo 形式执行:
1)启用IP转发:
echo "1" > /proc/sys/net/ipv4/ip_forward
2)发出以下命令iptables规则:
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables -A FORWARD -m iprange --dst-range 192.168.1.2-192.168.1.254 -j DROP
iptables -I FORWARD -m iprange --src-range 192.168.1.2-192.168.1.254 -j DROP
第一条规则允许虚拟机访问互联网;第二条规则禁止虚拟机访问局域网,当然路由器和广播地址除外。
上述规则假设主机通过eth0,您的 LAN 是192.168.1.0/24,您的路由器和广播地址分别为 192.168.1.1 和 192.168.1.255。如果不是,请进行相应更改。
答案2
简而言之,仅使用 VirtualBox 无法实现所需的隔离。虚拟机将始终继承与主机相同的网络可用性(假设桥接或 NAT 网络模式)。
在 VirtualBox 中您有四种网络选择:
桥接:与主机的一个适配器共享连接。这就像虚拟机和主机都插入同一个交换机一样。虚拟机可以访问主机可以访问的所有内容。
NAT:VirtualBox 在主机适配器和虚拟网络之间放置虚拟 NAT 防火墙。虚拟机仍然可以访问主机可以访问的所有内容。
仅限主持人:虚拟机只能与主机通信。
内部的:虚拟机位于隔离网络上,并且只能与同一内部网络上的其他虚拟机通信。
这些选项都不能满足您的要求,因此仅使用 VirtualBox 无法实现。正如您所提到的,添加额外的 NIC 可以提供创建所需隔离所需的物理隔离。
答案3
好的,我找到了一个很好的解决方案,只需要主机操作系统中的 1 张网卡。
- 为客户操作系统提供仅主机适配器(默认为 vboxnet0)并确保 vboxnet0 执行 dhcp。
- 安装 squid 代理(sudo apt-get install squid3
- 打开文件 /etc/squid3/squid.conf 并进行以下更改:A. 找到包含“http_access denied all”的行,并在行首添加 # 将其注释掉。B. 将以下两行粘贴到文件中:
- acl 所有计算机 src 192.168.56.0/255.255.255.0
- http_access 允许所有计算机
- 运行以下命令重新启动 squid 3 服务:sudo service squid3 restart
- 在客户操作系统中,确保网卡已设置 dhcp
- 打开 Internet Explorer 的 Internet 选项,转到连接选项卡,单击局域网设置...,选中代理服务器框并设置地址为 192.168.56.1 和端口为 3128。
- 互联网现在可在访客上使用,并且访客无法看到本地网络。
感谢这篇文章的帮助。它引导我找到 Squid3。整个设置过程只需 5-10 分钟,非常简单。