我创建了一个 libvirt 网络打开模式并添加了为 a 创建的 iptable 规则纳特模式网络。我的计划基本上是创建一个纳特网络,但在顶部添加一些自定义 iptable 规则。 (使用开放模式并自己管理规则会更容易。)示例用例:除了从 vmX 到 vmY、vmZ 之外,虚拟机之间没有网络内部通信。到目前为止,一切都像以前一样工作纳特模式。
但是,当我添加规则来阻止内部 com 时,我注意到以下内容:
小背景:Libvirt 创建以下 iptable 链:
LIBVIRT_FWI
:传入流量LIBVIRT_FWO
:出站流量LIBVIRT_FWX
:内部流量(例如 virbr0 内)LIBVIRT_INP
(暂时无关)LIBVIRT_OUT
(暂时无关)
虽然 FWI 和 FWO 按预期工作,例如 eth0->>-virbr0 和 eth0-<<-virbr0,但用于内部通信的 FWX 链没有效果。
iptables -L LIBVIRT_FWX -v
节目
Chain LIBVIRT_FWX (1 references)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- virbr0 virbr0 anywhere anywhere
我的定制链:
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- virbr2 virbr2 anywhere anywhere state RELATED,ESTABLISHED
0 0 ACCEPT all -- virbr2 virbr2 192.168.122.10 anywhere
0 0 REJECT all -- virbr2 virbr2 anywhere anywhere reject-with icmp-port-unreachable
现在,我的猜测是 iptables 不适用于网络接口内部通信。我的这个假设正确吗?
我的选择大概是:
- 我做错了什么 iptable 规则做申请
- FWX 链位于 FORWARD 的顶部,因此其他规则不应干扰
- 我必须为每个虚拟机创建一个网络,以阻止它们之间的流量
我真的很感激关于此事的第二意见。
为了完整性:
Chain DMZ_LIBVIRT_FWO (1 references)
pkts bytes target prot opt in out source destination
58531 24M ACCEPT all -- virbr2 any 192.168.122.0/24 anywhere
133 10336 REJECT all -- virbr2 any anywhere anywhere reject-with icmp-port-unreachable
Chain DMZ_LIBVIRT_FWI (1 references)
pkts bytes target prot opt in out source destination
55149 21M ACCEPT all -- any virbr2 anywhere 192.168.122.0/24 ctstate RELATED,ESTABLISHED
66 3960 REJECT all -- any virbr2 anywhere anywhere reject-with icmp-port-unreachable