保护来宾虚拟机以使其能够访问互联网,但阻止其访问主机 LAN

保护来宾虚拟机以使其能够访问互联网,但阻止其访问主机 LAN

我在 Windows 主机下运行了一个 Linux 客户虚拟机。如果我将网络模式设置为 NAT,客户虚拟机可以访问互联网(我想要的),但也可以访问主机 LAN(我不想要)。

由于各种原因,我无法设置单独的网络仅供客人访问互联网。

我可以使用 Windows 防火墙或某些路由软件来允许我向访客提供互联网访问权限,但阻止所有其他访问吗?

编辑-我从virtualbox论坛获得了解决方案:使用带有Windows防火墙的NAT来阻止客户机。

我的错误是试图在主机上设置规则(程序 = 全部,本地 IP = 客户机 IP 范围)。规则实际上应该是(本地 IP = 全部,程序 = virtualbox.exe),因为 NAT 在到达防火墙之前已经发生

答案1

解决方案——向主机添加防火墙规则:阻止(本地 IP = 全部,程序 = virtualbox.exe,远程 IP = {您想要阻止的范围})

答案2

你说的是 Linux,所以我假设你已经安装了 IPtables。你只能允许端口 80(HTTP)、端口 443(HTTPS)和出站 DNS 上的入站/出站流量。使用时请自担风险,因为我没有测试过这些规则。此外,执行此操作时请确保你是物理机器。如果你是远程连接,你可能会断开连接,无法返回机器。

#delete all rules
iptables -F

#change default policy to drop everything
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

#add rules for port 80 and 443 to only allow this traffic
iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

#allow outbound DNS
iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT
iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT

#allow loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

列表规则:

iptables -L

答案3

为了向不受信任的客户虚拟机提供互联网访问,但不授予对本地网络的访问权限,我将设置第二个运行 Linux 的受信任的客户虚拟机,并将其配置为路由器和流量过滤器。

原始客户虚拟机将有一个连接到内部网络的网络适配器。路由器客户虚拟机将有两个网络适配器,其中第一个将连接到同一个内部网络,第二个将像往常一样通过桥接或 NAT 连接到主机网络。

路由器虚拟机将运行域名系统为原始客户虚拟机提供网络连接。为了确保来自不受信任的机器的数据包不会独立于网络协议到达 LAN 接口,我将操作路由策略数据库并创建专用路由表:

[root@trustedRouter]# echo 'nolan' >> /etc/iproute2/rt_tables

[root@trustedRouter]# ip rule add iif ${intIF} table nolan

[root@trustedRouter]# ip route show table main | grep -F " dev ${intiF} " | \
    while read L; do ip route add table nolan ${L}; done

[root@trustedRouter]# ip route show table main | grep -E "^default " | \
    while read L; do ip route add table nolan ${L}; done

${intIF}上面的例子就是连接到不受信任的客户机的网卡。

为了安心,nftables还将通过以下方式进行网络过滤:

[root@trustedRouter]# nft add chain inet filter FORWARD \
    meta iifname ${intIF} ip daddr ${lanADDR4} counter DROP

[root@trustedRouter]# nft add chain inet filter FORWARD \
    meta iifname ${intIF} ip6 daddr ${lanADDR6} counter DROP

答案4

我已经桥接了我的连接。这仍然不起作用,但选中电缆连接框(下图中圈出)修复了我的网络连接。我不完全明白为什么。

在此处输入图片描述

相关内容