Linux實現雙網卡綁定及自動綁定shell指令碼

來源:互聯網
上載者:User

一,手工綁定網卡


雙網卡綁定實現就是使用兩塊網卡虛擬成為一塊網卡,這個彙總起來的裝置看起來是一個單獨的乙太網路介面裝置,通俗點講就是兩塊網卡具有相同的IP地址而並行連結彙總成一個邏輯鏈路工作。根據交換器可支援的功能不通,最常見的是設定為主備方式的雙網卡綁定。
一、建立ifcfg-bond0檔案

在/etc/sysconfig/network-scripts下vim ifcfg-bond0,內容如下


DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
IPADDR=IP
NETMASK=掩碼

二、分別編輯ifcfg-eth0和ifcfg-eth1檔案
eth0

DEVICE=eth0
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
eth1


DEVICE=eth1
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none

三、修改/etc/modprobe.conf 檔案,添加下面兩行

alias bond0 bonding
options bond0 miimon=100 mode=1 [max_bonds=2]
PS:
a、miimon 是鏈路監測的時間間隔單位是毫秒,miimon=100的意思就是每100ms,監測一次鏈路串連狀態,如果有一條線路不通就轉入另一條線路;
b、mode=0 表示負載平衡方式,兩塊網卡都工作,需要交換器作支援
mode=1 表示冗餘方式,網卡只有一個工作,一個出問題啟用另外的
mode=6 表示負載平衡方式,兩塊網卡都工作,不需要交換器作支援
對於目前0模式測試是有點問題,如果交換器上沒有相關配置的話網路上丟包會很嚴重,而且用0模式他只是一種輪流發送的模式而不是所謂的會增加網路的頻寬,輪流發送包這樣無形中導致了網路的速率下降(因為要去做出選擇走那個網卡),現在普遍用的是1模式冗餘的模式安全可靠,速度也快速。
c、bonding只能提供鏈路監測,即從主機到交換器的鏈路是否接通。如果只是交換器對外的鏈路down掉了,而交換器本身並沒有故障,那麼bonding會認為鏈路沒有問題而繼續使用;
d、max_bonds=2網卡綁定如果BOND在一個以上最好加上這參數限制BOND最大載入幾個,如果沒有載入這個參數會網路重啟的時候會報類似於“找不到BOND1參數,BOND1載入失敗的錯誤”

四、卸載bond0裝置
1、刪除bond0檔案


#rm -f /etc/sysconfig/network-scripts/ifcfg-bond0

2、修改/etc/modprobe.conf 檔案,刪除上面添加的兩行

alias bond0 bonding

options bond0 miimon=100 mode=1 [max_bonds=2]

3、最後重新設定eth0和eth1的IP,並重啟網路即可。

二,雙網卡綁定自動化指令碼

其實認真觀察上面的步驟,都是固定的。於是我們就可以寫個指令碼實現自動化配置

#!/bin/bash
if [ $# -lt 6 ];then
echo “Usage: $0 <bond*> <eth*> <eth*> <ipaddress> <netmask> <gateway>”
echo “eg: $0 bond0 eth0 eth1 192.168.0.1 255.255.255.0 192.168.0.254″
exit 1
fi
 
#修改 ifcfg-bond* 檔案
echo “DEVICE=$1
IPADDR=$4
NETMASK=$5
GATEWAY=$6
ONBOOT=yes
BOOTPROTO=none
USERCTL=no” >/tmp/ifcfg-$1
mv -f /tmp/ifcfg-$1 /etc/sysconfig/network-scripts/
 
#修改 ifcfg-eth0 檔案
echo “DEVICE=$2
USERCTL=no
ONBOOT=yes
MASTER=$1
SLAVE=yes
BOOTPROTO=none” >/tmp/ifcfg-$2
mv -f /tmp/ifcfg-$2 /etc/sysconfig/network-scripts/
 
#修改 ifcfg-eth1 檔案
echo “DEVICE=$3
USERCTL=no
ONBOOT=yes
MASTER=$1
SLAVE=yes
BOOTPROTO=none” >/tmp/ifcfg-$3
mv -f /tmp/ifcfg-$3 /etc/sysconfig/network-scripts/
 
##修改 network 檔案
#sed /GATEWAY/d /etc/sysconfig/network >/tmp/network
#echo “GATEWAY=\”$6\”">>/tmp/network
#mv -f /tmp/network /etc/sysconfig/
 
#修改 modules.cof/modprobe.cof
MODCONF=/NULL
TEMPFILE1=/tmp/mod1.$$
TEMPFILE2=/tmp/mod2.$$
BAKFILE=/etc/.modconf
 
#選擇綁定的模式是輪詢還是冗餘,一般建議選擇1
echo “Please Select Your Bond Mode:(balance-rr/active-backup)or(0/1)?”
read MODE
 
if [ -f /etc/modprobe.conf ]; then
MODCONF=/etc/modprobe.conf
else
MODCONF=/etc/modules.conf
fi
 
cp $MODCONF $BAKFILE
 
sed ‘/alias[ \t]*’$1′[ \t]*bonding/d;/options[ \t]*’$1′[ \t]*/d;/install.*’$1′/d’ $MODCONF > $TEMPFILE1
cp $TEMPFILE1 $TEMPFILE2
 
if [ "$(grep "alias.*bonding" $TEMPFILE1)" != "" ]; then
bondcount=$(grep “alias.*bonding” $TEMPFILE1 | wc -l)
elif [ "$(grep "install.*bond.*" $TEMPFILE1)" != "" ]; then
bondcount=$(grep “install.*bond.*” $TEMPFILE1 | wc -l)
else
bondcount=0
fi
 
if [ "$bondcount" -ge 1 ]; then
sed ‘/alias.*bonding/d;s/\(options[ \t]*\)\(bond[0-9]*\)/install\ \2\ \/sbin\/modprobe\ –ignore-install\ bonding\ -o\ \2/’ $TEMPFILE1 > $TEMPFILE2
 
echo “install $1 /sbin/modprobe –ignore-install bonding -o $1 miimon=100 mode=$MODE” >> $TEMPFILE2
else
 
echo “alias $1 bonding” >> $TEMPFILE2
echo “options $1 miimon=100 mode=$MODE” >> $TEMPFILE2
fi
mv -f $TEMPFILE2 $MODCONF
 
#重啟網路
echo “System will restart network continue(y/n)?”
read bb
if [ "$bb" = "y" ] || [ "$bb" = "yes" ] || [ "$bb" = "Y" ];then
for tempmod in $(lsmod | grep -i bond | awk ‘{print $1}’)
do
modprobe -r bonding -o “$tempmod”
done
 
/etc/init.d/network restart
fi
echo “OK!”
exit 0

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.