我想阻止流向在我的计算机上运行的虚拟机的流量(某些端口除外)。我向虚拟桥添加了一些规则,以接受 FORWARD 链中过滤器表中端口 80 上的流量,因为虚拟桥被设置为转发来自虚拟机的流量。
我写了以下内容:
sudo iptables -F
sudo iptables -I FORWARD -o [bridge_iface] -p tcp --dport 80 -m state --state 新,已建立 -j 接受
sudo iptables -I FORWARD -i [bridge_iface] -p tcp --sport 80 -m state --state 新,已建立 -j 接受
sudo iptables -I FORWARD -o [bridge_iface] -p tcp --dport 53 -m state --state 新,已建立 -j 接受
sudo iptables -I FORWARD -i [bridge_iface] -p tcp --sport 53 -m state --state 新,已建立 -j 接受
sudo iptables -P 转发丢弃
当我连接到桥上的虚拟机时,我无法连接到外部网站。如果我删除最后一行,当然,一切正常,但一切也都打开了。所以这不太正确。
最佳答案
如果您想减少虚拟机的流量,为什么还要过滤另一个方向,您真的想阻止您的虚拟机访问互联网吗?
iptables -I FORWARD -o [bridge_iface] -m state --state NEW,ESTABLISHED -j DROP
iptables -I FORWARD -o [bridge_iface] -p tcp -m state --state NEW,ESTABLISHED --dport 80 -j ACCEPT
iptables -I FORWARD -o [bridge_iface] -p udp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT
请注意:DNS 主要使用 UDP,而不是 TCP,因此您应该过滤 UDP。
我的设置的整体想法:您应该允许您的计算机转发任何内容,默认情况下仅删除与特定接口(interface)的连接,并在该设备上打开特定端口。
我怀疑您在由虚拟机提供服务的端口 80 和 53 上的传入连接上使用端口转发,对吗? 如果你想拒绝你的虚拟机访问互联网,除了我们刚刚设置的2个端口之外,你必须在脚本中将-o更改为-i。
关于linux - 阻止 VM 特定端口上的所有流量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26001406/