使用网桥和静态 IP 配置 iptables

使用网桥和静态 IP 配置 iptables

我的服务器设置了多个公共 IP 地址,网络配置如下(带有示例 IP):

eth0
 \- br0 - 1.1.1.2
     |- [VM 1 的 eth0]
     | |- 1.1.1.3
     | \- 1.1.1.4
     \- [VM 2 的 eth0]
          \- 1.1.1.5

我的问题是,如何为实际物理服务器和虚拟机设置具有不同规则的 iptables?我不介意让虚拟机执行自己的 iptables,但我希望 br0 具有一组不同的规则。现在我只能让所有内容通过,这不是所需的行为(因为 br0 是公开的)。

谢谢!

答案1

由于您已为 br0 分配了 IP 地址,因此它实际上是服务器的“真实”网络接口。您可以在服务器上创建 iptables 规则,无论您的网络接口名为 br0 还是 eth0,这些规则都可以同样有效地工作。也就是说,只需编写服务器的防火墙 iptables 规则,就好像您的网络接口是普通的 eth0(除了名为 br0 之外)。

不必担心必须编写 iptables 规则来明确允许流量到连接到网桥 br0 的虚拟接口,因为(这是一个关键点)iptables 规则不能明确过滤或影响网桥上的流量。原因是网桥在链路层 (L2) 上运行,而 iptables (大多数情况下) 在更高网络层 (通常是 L3 和 L4) 的数据包上运行。下面这张图可能对您有所帮助:网桥的功能几乎与网络集线器完全相同,所有桥接接口都插入其中。

如果你想过滤通过桥梁的流量,你应该研究一下ebtables,但您不太可能需要这样做。将网桥简单地视为网络基础设施的一部分(即像集线器或交换机)并为网络上的每个主机(无论是真实的还是虚拟机)创建一个 iptables 防火墙脚本会更加自然和方便。

相关内容