一.需求概括
最近部门接了一个边缘计算的项目,项目方要求机器上必须做bond并且内网网隔离然后进行交付
那么什么是bond呢?
如上图所示,假设服务器有2个万兆网卡,那么对应的交换机也接了两根线,原来的时候eth0只能通过网线从交换机的网口1出去,只有一万兆,eth1同理,那么现在通过bond做一个汇聚,将eth0和eth1绑在一起做成bond,那么这个bond理论上就有了2万兆的速度,这就是bond的目的,可以使出口变大,bond还有很多的模式,详情可以自行百度。
那么什么是vlan和trunk呢?
VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。VLAN内的主机间可以直接通信,而VLAN间不能直接通信,从而将广播报文限制在一个VLAN内。
- 限制广播域:广播域被限制在一个VLAN内,节省了带宽,提高了网络处理能力。
- 增强局域网的安全性:不同VLAN内的报文在传输时是相互隔离的,即一个VLAN内的用户不能和其它VLAN内的用户直接通信。
- 提高了网络的健壮性:故障被限制在一个VLAN内,本VLAN内的故障不会影响其他VLAN的正常工作。
- 灵活构建虚拟工作组:用VLAN可以划分不同的用户到不同的工作组,同一工作组的用户也不必局限于某一固定的物理范围,网络构建和维护更方便灵活。
TRUNK
如果交换机与交换机之间存在多条链路,交换机每增加一个vlan,交换机与交换机就会增加一条链路。这样会存在链路浪费,就产生了 DTP ( dynamic trunk protocols),
- 采用trunk后,所有的vlan都走一条线。
如上图所示,服务器的同vlan内的机器进行通信时,则需要首先打tag,打了tag后的数据发送到交换机的trunk后,进行脱tag处理,然后在将数据传送到对应的服务器,这样的好处就是当存在多个vlan的时候不会存在链路浪费。
1.需求
1)打bond0,且mode=4
2)内外网隔离,即vlan划分出bond0.361和bond0.192
2.交换机侧
1)打bond
2)做trunk策略,以识别bond0.361和bond0.192 这个trunk可以百度下,我也不太清楚交换机侧的策略
3.服务器侧
1)打bond
2)打tag
二.遇到的问题
1.比如升级内核后网卡名称会变,导致的ip不通,配置文件无法被正常生效,系统为centos7.8的话,可以试着使用下面的指令
sed -i "s/crashkernel=auto/crashkernel=auto net.ifnames=0 biosdevname=0 quiet/" /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
重启后生效,网卡的名称就不会发生变化了
2.bond配置无法生效,这个是由于NetworkManager这个程序导致的
systemctl disable NetworkManager && systemctl stop NetworkManager
三.配置文件
1.bond配置
1)bond0
/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
2)bond0.361
/etc/sysconfig/network-scripts/ifcfg-bond0.361
DEVICE=bond0.361
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPADDR=
NETMASK=
GATEWAY=
DEFROUTE=yes ##DNS配置,非必须
DNS1=114.114.114.114 ##DNS配置,非必须
DNS2=119.29.29.29 ##DNS配置,非必须
VLAN=yes
IPV6INIT="yes" ##下面为ipv6配置
IPV6_MTU="1460"
IPV6ADDR=
IPV6_DEFAULTGW=
DNS3=240c::6666
3)ifcfg-bond0.192
/etc/sysconfig/network-scripts/ifcfg-bond0.192
DEVICE=bond0.192
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPADDR=
NETMASK=255.255.255.0
VLAN=yes
4)ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
MASTER=bond0
SLAVE=yes
5)ifcfg-eth1
/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
MASTER=bond0
SLAVE=yes
6)modprobe.conf
/etc/modprobe.d/modprobe.conf
alias bond0 bonding
options bond0 miimon=100 mode=802.3ad xmit_hash_policy=layer3+4
然后重启即可