我们有一台服务器通过两个网卡连接到 2 个交换机。每个网卡上有 2 个 VLAN,分别是管理和生产。目前我们只连接了一个交换机,因此尚未设置生成树等。
我们已经安装了 LXC,并且想要桥接(而不是 NAT)XLC 容器(以便它们与主机位于同一子网)。
当我们尝试在主机 ubuntu 服务器上的 /etc/network/interfaces 中创建网桥时,网络无法启动,我们必须转到控制台,删除编辑并重新启动(幸运的是我们有 LOM 卡!)
接口文件:
auto em1.3
iface em1.3 inet manual
bond-master bond2
bond-primary em1.3
auto em2.3
iface em2.3 inet manual
bond-master bond2
auto bond2 #Production VLAN
iface bond2 inet static
address 10.100.100.10
netmask 255.255.255.0
gateway 10.100.100.1
dns-nameservers 10.100.10.1
bond-slaves em1.3, em2.3
bond-miimon 100
bond-mode active-backup
dns-nameservers 10.100.100.1
auto br_prod
iface br_prod inet dhcp
bridge_ports bond2
bridge_fd 0
bridge_maxwait 0
当我们添加最后一个部分 (br_prod) 时,服务器不会启动网络,我们必须使用控制台。它显示“再等待 60 秒才能启动网络”,但实际上并没有。
我也尝试添加
pre-up ifup bond2
post-down ifup bond2
尝试将其设为手动。
尝试将其设为静态而不是 DHCP,并提供适当的 ip/网关/网络掩码。没有成功。
尝试将其命名为 br2 而不是 br_prod,尝试了 pre_up post_down、bridge-ports 等。我们尝试了选项、开关和下划线与破折号的每种组合。效果总是相同的 - 网络无法启动(没有错误)。
有任何想法吗?
更新 1
根据下面 electrometro 的回答,我尝试了这个:
auto bond1
iface bond1 inet static
address 10.30.30.10
netmask 255.255.255.0
#bond-slaves em1.2, em2.2
bond-slaves none
bond-miimon 100
bond-mode active-backup
up route add -net .....
auto em1.2
iface em1.2 inet manual
bond-master bond1
bond-primary em1.2
auto em2.2
iface em2.2 inet manual
bond-master bond1
bond-primary em1.2
br1
iface br1 inet manual
bridge_ports bond1
bridge_fd 0
bridge_maxwait 0
但遇到了同样的问题——网络无法启动。
更新2
感谢 Oliver 的贡献。我尝试了这个配置,网络启动了,我可以使用 ifconf 查看接口,但是由于路由不起作用,我无法使用 ssh。基本上,我无法使用手动添加的路由 ping 默认网关。
auto em1.2
iface em1.2 inet manual
auto em2.2
iface em2.2 inet namual
auto bond1
iface bond1 inet manual
bond-slaves em1.2 em2.2
bond-mode active-backup
auto br10
iface br10 inet static
address 10.30.30.10
netmask 255.255.255.0
bridge_ports bond1
up route add -net 10.242.1.0/24 gw 10.30.30.1 dev bond1 # also tried dev br10
我们手动设置网关的原因是我们必须定义两个网络:生产网络和管理网络。我们有 2 个接口,每个接口都连接到交换机。每个接口都为两个网络提供故障转移功能,生产网络有默认网关。我现在只是想在管理网络上建立一座桥作为开始。
更新 3
在多次反复试验后,我还尝试指定 VLAN:
auto em1.2
iface em1.2 inet manual
auto em2.2
iface em2.2 inet manual
auto bond1
iface bond1 inet manual
bond-slaves em1.2 em2.2
bond-mode active-backup
auto br10.2
iface br10.2 inet static
address 10.30.30.10
netmask 255.255.255.0
bridge_ports bond1
up route add -net 10.242.1.0/24 gw 10.30.30.1 dev br10.2
答案1
这是适用于 docker 主机的类似设置。希望它能为您指明正确的方向。
# Interface bond_lan
auto bond_lan
iface bond_lan inet manual
slaves none
bond-mode active-backup
bond-miimon 100
# Interface bridge_lan
auto bridge_lan
iface bridge_lan inet static
address 10.10.10.129
netmask 255.255.0.0
gateway 10.10.0.1
bridge_ports bond_lan
bridge_stp on
bridge_fd 0
bridge_maxwait 0
# Interface em1
auto em1
iface em1 inet manual
bond-master bond_lan
bond-primary em1
# Interface em2
auto em2
iface em2 inet manual
bond-master bond_lan
bond-primary em1
# Interface lo
auto lo
iface lo inet static
address 127.0.0.1
netmask 255.0.0.0
答案2
在 Ubuntu VM 中测试了以下内容:
使用物理接口 em1 和 em2 创建主动-备份绑定接口:
auto bond0 iface bond0 inet manual bond-slaves none bond-mode active-backup auto em1 iface em1 inet manual bond-master bond0 auto em2 iface em2 inet manual bond-master bond0
创建第一个网桥,该网桥也可用于管理指定 IP 地址上的机器。我们为此使用 VLAN 100:
auto br100 iface br100 inet static address 10.100.100.10 netmask 255.255.255.0 gateway 10.100.100.1 bridge_ports bond0.100
创建用于生产流量的第二个网桥,我们假设这是 VLAN 200:
auto br200 iface br200 inet manual bridge_ports bond0.200
您现在可以根据需要将容器或虚拟机添加到 br100 和/或 br200。
更新:更改了 bond0 的创建方式。物理接口不再引用来自 Bond Master 的物理接口,而是现在指向 Bond Master。