为一个网卡配置一个vlan比较容易,设置两个vlan就麻烦了。
涉及路由过滤,不修改内核可能会不通。
举一个更复杂的例子
有2个网卡4个网口,命名分别为:p1p1 p1p2 p2p1 p2p2
p1p1和p2p1做bond0
p1p2和p2p2做bond1
bond0上有vlan 20 1101 1102
bond1上有vlan 1001
配置如下:
bond0:
# cat ifcfg-p1p1TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=noneNAME=p1p1UUID=b796742a-aa84-488b-b9c9-74ca9e0e4ebfDEVICE=p1p1MASTER=bond0SLAVE=yesONBOOT=yes[root@gerrit-mirror network-scripts]# cat ifcfg-p2p1TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=noneNAME=p2p1UUID=6e923643-967b-46bc-bc36-7b894354a1feDEVICE=p2p1MASTER=bond0SLAVE=yesONBOOT=yes# cat ifcfg-bond0DEVICE=bond0BOOTPROTO=staticUSERCTL=noONBOOT=yesTYPE=BondBONDING_MASTER=yesNAME=bond0BONDING_OPTS="mode=4 miimon=100"# cat ifcfg-bond0.20DEVICE=bond0.20TYPE=vlanNAME=bond0.20IPADDR=192.168.32.12NETMASK=255.255.255.0DNS1=202.96.128.86#BROADCAST=10.104.101.255ONBOOT=yesREORDER_HDR=yesGVRP=noMVRP=noBOOTPROTO=noneUSERCTL=noVLAN=yesVLAN_ID=20# cat ifcfg-bond0.1101DEVICE=bond0.1101TYPE=vlanNAME=bond0.1101IPADDR=192.168.51.12NETMASK=255.255.255.0DNS1=202.96.128.86ONBOOT=yesREORDER_HDR=yesGVRP=noMVRP=noBOOTPROTO=noneUSERCTL=noVLAN=yesVLAN_ID=1101# cat ifcfg-bond0.1102DEVICE=bond0.1102TYPE=vlanNAME=bond0.1102IPADDR=192.168.52.12NETMASK=255.255.255.0DNS1=202.96.128.86ONBOOT=yesREORDER_HDR=yesGVRP=noMVRP=noBOOTPROTO=noneUSERCTL=noVLAN=yesVLAN_ID=1102
bond1
# cat ifcfg-p1p2TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=noneNAME=p1p2UUID=573ae805-c524-4fe8-90ad-a62bcf811c75DEVICE=p1p2ONBOOT=yesMASTER=bond1SLAVE=yes# cat ifcfg-p2p2TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=noneNAME=p2p2UUID=1050382b-5e55-4651-8ee4-f21307ad933dDEVICE=p2p2MASTER=bond1SLAVE=yesONBOOT=yes# cat ifcfg-bond1DEVICE=bond1BOOTPROTO=staticUSERCTL=noONBOOT=yesTYPE=BondBONDING_MASTER=yesNAME=bond1BONDING_OPTS="mode=4 miimon=100"# cat ifcfg-bond1.1001DEVICE=bond1.1001PHYSDEV=bond1TYPE=vlanNAME=bond1.1001BONDING_MASTER=yesIPADDR=172.29.1.12NETMASK=255.255.255.0GATEWAY=172.29.1.1DNS1=202.96.128.86DEFROUTE=yes#BROADCAST=10.104.101.255ONBOOT=yesBOOTPROTO=noneUSERCTL=noBONDING_OPTS="mode=4 miimon=100"#BONDING_OPTS="mode=802.3ad miimon=100 lacp_rate=fast"VLAN=yesVLAN_ID=1001
修改network的启动脚本:
在/etc/init.d/network 的start)的最后,加入:
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/bond0.20/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/bond1.1001/rp_filter
rp_filter是reverse path,会与FIB(转发信息表)比较,回程路由是否最优,如果不是就丢弃。对于多网卡,如果访问ip地址1,但实际走ip地址2的路由就会被丢弃。改成0值后,就不再校验。
在rc.local加只是启动有效,网络重启就无效了。
而且无法写在/etc/sysctl.conf 因为bond0.20这种写法,sysctl会认为.是一个子路径,转成bond0/20的,而找不到文件。
