我正在使用一台具有多种接口(eth0-3)的服务器,目前我只使用一个用于主机通信,另一个用于LXC桥通信。因为我有几个备用端口,而且我的桥上有很多流量,所以我想我应该使用其他端口来进行一些好的老式链接聚合。
这不是我以前真正搞砸过的事情,这不是一个问题,更多的问题是‘我是如何在/etc/网络/接口中实现这个的’.所以我们开始吧。
根据我的理解,我可以用键连接的东西来连接eth1和eth2 say (甚至eth3!)到设备bond0,然后将my bridge br0的bridge_port更改为bond0。这一切对我来说都是有意义的,我非常困惑的是,如果我不想给bond0一个ip的话,该怎么做呢?目前,我的br0设置为没有IP,这意味着主机是不可接触的,但是主机上的所有lxc容器都有可路由的IP,因此可以联系到它们。
我将如何实现这一点?我能不能不给bond0一个ip,并假设它会以同样的方式运行?
下面是我的备注/etc/network/interface文件,说明我如何实现它(请注意,我还没有实现这一点,因为我不想破坏我的整个主机网络):
# host communications times
auto eth0 inet static
iface eth0 inet static
blahblahblah
# first slave device
auto eth1
iface eth1 inet manual
bond-master bond0
# second slave device
auto eth2
iface eth2 inet manual
bond-master bond0
# our bond master or aggregation device
auto bond0
iface bond0 inet manual
# no IP?
gateway 192.168.1.1
netmask 255.255.255.0
bond-mode 0
# our bridge device
auto br0
iface br0 inet manual
# also no IP
bridge_ports bond0
bridge_fd 0
bridge_maxwait 0发布于 2015-03-03 05:04:45
因此,我在Ubuntu14.04上的连接+桥接工作也遇到了类似的问题。我必须做三件关键的事情:
好的,步骤1。确保您对此框具有本地访问权限。键盘和监视器。我们要破坏你的网络。编辑此文件:/etc/default/grub并更改该行:
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 net.ifnames=1 biosdevname=0"
(我们不使用IPV6,所以我们也禁用它)
接下来,运行sudo update-grub并重新启动。
下一步,登录到您的框并运行以下命令:sudo dmesg | grep eth
如果幸运的话,你应该找到你的设备,这样我们就可以编写udev规则了。通常人们用MAC地址重命名他们的网络设备,但是债券往往会混淆udev,因为这种连接可能会在某些配置中占用NIC的MAC地址之一,所以不要走这条路。相反,您可以通过设备ID来实现它。我有Intel NIC,所以这是我的输出。你的里程会有所不同:
[ 17.888965] igb 0000:07:00.0: added PHC on eth0 [ 17.888969] igb 0000:07:00.0: eth0: (PCIe:2.5Gb/s:Width x1) d0:50:99:xx:xx:xx [ 17.889097] igb 0000:07:00.0: eth0: PBA No: 001300-000 [ 17.932484] igb 0000:08:00.0: added PHC on eth1 [ 17.932488] igb 0000:08:00.0: eth1: (PCIe:2.5Gb/s:Width x1) d0:50:99:xx:xx:xx [ 17.932615] igb 0000:08:00.0: eth1: PBA No: 001300-000
好的,所以我的设备ID是0000:07:00.0和0000:08:00.0。这些都是每个硬件设置所特有的。
编辑此文件,并从其中删除任何现有行:/etc/udev/rules.d/70-persistent-net.rules
添加所需的设备名称如下(请注意将0000:07:00.0和0000:08:00.0划分到何处):
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", KERNELS=="0000:07:00.0", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", KERNELS=="0000:08:00.0", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
哇哦。就快完成了。
第三步。无论出于什么原因,如果债券使用IP地址,我无法让网络工作,但它似乎在工作,只是看看桥是否起作用。我使用这个/etc/network/interfaces (我也使用DHCP而不是静态BTW,只需保留这些节):
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
bond-master bond0
auto eth1
iface eth1 inet manual
bond-master bond0
auto bond0
iface bond0 inet manual
bond-slaves none
bond-mode 802.3ad
bond-miimon 100
bond-downdelay 200
bond-updelay 200
auto lan0
iface lan0 inet dhcp
bridge_ports bond0
bridge_fd 0
bridge_maxwait 0重新启动并交叉你的脚趾。祝好运!
Ubuntu在这个配置中有一些有顺序的bug。我插入了一些延迟,因为我无法始终在DHCP上提取和IP地址:
/etc/network/interfaces:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
bond-master bond0
auto eth1
iface eth1 inet manual
bond-master bond0
auto bond0
iface bond0 inet manual
bond-slaves eth0 eth1
bond-mode 802.3ad
bond-miimon 100
bond-downdelay 200
bond-updelay 200
bond-xmit-hash-policy layer3+4
up sleep 2
auto lan0
iface lan0 inet dhcp
bridge_ports bond0
bridge_waitport 10
bridge_fd 0
bridge_maxwait 0
bridge_stp off
pre-up sleep 2https://askubuntu.com/questions/492181
复制相似问题