IP 别名和端口桥接

IP 别名和端口桥接

情况是,我有一个带有多个以太网端口的 Ubuntu 盒子,我想让它表现得像通过交换机连接到计算机一样。我可以使用网桥轻松实现这一点。在/etc/network/interfaces

iface br0 inet static
  bridge_ports regex eth.*
  address 192.168.1.1
  netmask 255.255.255.0

在这种配置下,另一台设备可以插入任意端口并 ping 192.168.1.1 处的这个盒子。

现在,第二部分是我希望其中一个端口具有 IP 别名,从而它也会尝试获取 DHCP 地址。我可以在不使用网桥的情况下在 eth0 上执行此操作,如下所示:

iface eth0 inet static
  address 192.168.1.1
  netmask 255.255.255.0

iface eth0:0 inet dhcp

现在的诀窍是,我该如何将它与软件交换机功能结合起来?因为 brctl 在第 2 层运行,所以一旦 eth0 成为 br0 的一部分,我就无法创建 eth0:0。我唯一能做的就是将其创建为 br0:0:

iface br0 inet static
  bridge_ports regex eth.*
  address 192.168.1.1
  netmask 255.255.255.0

iface br0:0 inet dhcp

这实际上几乎完全符合我的要求,但有一个奇怪的问题:当以太网端口断开连接或没有 DHCP 服务器时,网桥无法获取其正确的静态 IP --- 或者它会获取它,但要等到启动完成后一两分钟才能获取。

所以我的问题是,延迟是怎么回事?我能以某种方式摆脱它吗?

或者,有没有更好的方法可以实现我想要的功能?理想的情况是一个守护进程,它会定期轮询 DHCP,当它获得 IP 分配时,将其放在别名上而不是主接口上。

谢谢。

答案1

看起来您正受到转发延迟的影响。

查看man brctl有关如何调整各种时间参数的详细信息,但本质上发生的情况是,当 brctl 将您的网桥组合在一起时,它必须等待一段时间以了解新网络的拓扑结构,然后才能实际发送任何数据包。

长话短说,这可能会解决你的问题:

# brctl setfd br0 0

答案2

别名接口通常无法获取 DHCP。

尝试将 DHCP 放在 br0 接口上,并将静态 IP 放在 br0:0 别名上。

相关内容