如何使用 netplan 进行多宿主 - 将多个 IP 绑定到同一个网络适配器?

如何使用 netplan 进行多宿主 - 将多个 IP 绑定到同一个网络适配器?

如何使用 netplan 进行多宿主 - 将多个 IP 绑定到同一个网络适配器?

我看到有几个人采取了两种不同的方法来解决这个问题 - 一种方法是将两个 IP 都定义在与 nic 相同的设备名称下,这限制了 IPTables 的选项。

另一个选项是创建一个 vlan 并将其指向 nic。

哪个是正确的做法,为什么首先要改变这一点。/etc/network/interfaces 很简单,很有意义,而且显然支持多宿主。

答案1

独立于 netplan,目前的最佳做法是将多个地址分配给单个接口,而不是使用接口别名。/etc/network/interfaces 中缺乏对此的干净支持实际上是 ifupdown 的过时问题。

使用 netplan 在接口上配置多个地址很简单:https://netplan.io/examples#multiple-addresses-on-an-interface

要在 iptables 中处理这些地址,您可以使用 -s 和 -d 选项指定要匹配的源地址和目标地址,而不是使用 -i 和 -o 选项通过输入或输出接口进行区分。在绝大多数情况下,这是等效的。唯一的例外是,如果您在同一个接口上配置了多个别名,并且配置了动态地址,并且想要对发送到每个地址的流量应用不同的规则;在知道目标地址之前,您无法配置防火墙规则。但您也无法将 netplan 配置为在同一接口上多次请求 dhcp,因此如果您需要这样做,您可能必须使用 vlan。

您可以使用以下命令来最大限度地减少 iptables 规则中的地址重复:

iptables -N eth0
iptables -N eth0_0
iptables -N eth0_1
iptables -A INPUT -i enp3s0 -d 192.168.1.5 -j eth0
iptables -A INPUT -i enp3s0 -d 192.168.1.6 -j eth0_0
iptables -A INPUT -i enp3s0 -d 192.168.1.7 -j eth0_1
iptables -A INPUT -i enp3s0 -j DROP
iptables -A eth0 [... eth0 rules here]
iptables -A eth0_0 [... eth0:0 rules here]
iptables -A eth0_1 [... eth0:1 rules here]

相关内容