Linux雙網卡bond、起子接口


適用場景

服務器兩張網卡需要做bond,並且bond后網卡需配置不同網段的地址,用於走不同流量,這個時候就可以采用起子接口的方式。

實驗場景

  • 設備
    • 服務器:Server_A
    • 核心交換機:Switch_A、Switch_B
  • 交換機連接方式:堆疊
  • 服務器網卡:enp176s0f0、enp176s0f1做bond
  • IP段划分
    • 業務段
      • VLAN 201:10.10.51.0/24
    • 公網
      • VLAN 401:111.20.200.88/27
  • 要求
    服務器Server_A上聯的兩台核心交換機Switch_A和Switch_B采用堆疊方式,Server_A的enp176s0f0和enp176s0f1光口分別互聯Switch_A和Switch_B;現要求enp176s0f0和enp176s0f1做bond,地址10.10.51.16走業務流量,地址111.20.200.90走公網流量,交換機端口做捆綁eth-trunk並透傳VLAN201和VLAN401。

網卡配置腳本

# 停掉NetworkManager服務
systemctl stop NetworkManager.service   
systemctl disable NetworkManager.service

# 備份
cp /etc/sysconfig/network-scripts/ifcfg-enp176s0f0{,.bak}
cp /etc/sysconfig/network-scripts/ifcfg-enp176s0f1{,.bak}

# 將網卡協議改為none並設備未開機自啟動,並做雙網卡配置
sed -i 's/BOOTPROTO=dhcp/BOOTPROTO=none/' /etc/sysconfig/network-scripts/ifcfg-enp176s0f0
sed -i 's/ONBOOT=no/ONBOOT=yes/' /etc/sysconfig/network-scripts/ifcfg-enp176s0f0
echo "MASTER=bond0" >>/etc/sysconfig/network-scripts/ifcfg-enp176s0f0
echo "SLAVE=yes" >>/etc/sysconfig/network-scripts/ifcfg-enp176s0f0

sed -i 's/BOOTPROTO=dhcp/BOOTPROTO=none/' /etc/sysconfig/network-scripts/ifcfg-enp176s0f1
sed -i 's/ONBOOT=no/ONBOOT=yes/' /etc/sysconfig/network-scripts/ifcfg-enp176s0f1
echo "MASTER=bond0" >>/etc/sysconfig/network-scripts/ifcfg-enp176s0f1
echo "SLAVE=yes" >>/etc/sysconfig/network-scripts/ifcfg-enp176s0f1

# 配置網卡bond0
echo "DEVICE=bond0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static" >/etc/sysconfig/network-scripts/ifcfg-bond0

# 寫模塊文件,bond模式為mode 0
echo "alias bond0 bonding
options bond0 miimon=100 mode=0" >/etc/modprobe.d/bond.conf
# 加載模塊
modprobe bonding

# 起子接口bond0.201
echo "DEVICE=bond0.201
TYPE=Vlan
PHYSDEV=bond0
ONBOOT=yes
BOOTPROTO=static
REORDER_HDR=yes
IPADDR=10.10.51.16
GATEWAY=10.10.51.1
NETMASK=255.255.255.0
DNS1=114.114.114.114
DNS2=8.8.8.8
VLAN=yes
VLAN_ID=201" >/etc/sysconfig/network-scripts/ifcfg-bond0.201

# 起子接口bond0.401
echo "DEVICE=bond0.401
TYPE=Vlan
PHYSDEV=bond0
ONBOOT=yes
BOOTPROTO=static
REORDER_HDR=yes
IPADDR=111.20.200.90
GATEWAY=111.20.200.89
NETMASK=255.255.255.0
DNS1=114.114.114.114
DNS2=8.8.8.8
VLAN=yes
VLAN_ID=401" >/etc/sysconfig/network-scripts/ifcfg-bond0.401

# 加載模塊並重啟主機
modprobe 8021q
reboot

關鍵點

  • 交換機側如果起eth-trunk,那么服務器側則必須起子接口
  • 交換機側和服務器側要么都起lacp協商,要么都不起,否則將造成端口不同
    • 交換機側eth-trunk口配置示例
      [HH2B108-H01-2-HW9006X-SW001-Eth-Trunk12]display this 
      #
      interface Eth-Trunk12
      port link-type trunk
      port trunk allow-pass vlan 201 401
      #
      return
      
    • 服務器側起lacp協議使用bond模式4,示例如下
       # more /etc/modprobe.d/bond.conf
       alias bond0 bonding
       options bond0 miimon=100 mode=4 lacp_rate=1
      
  • 子接口配置文件中"DEVICE=bond0.401“中的VLAN號一定要和需要透傳的VLAN號保持一致
  • 配置子接口后一定要重啟服務器才能生效!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM