Debian 下通過Bonding 實現雙網卡單IP冗餘
Linux 雙網卡綁定一個IP地址,實現網卡冗餘,將兩個網卡虛擬爲一塊。使用同一個IP地址。本文介紹了 bonding 的原理,及如何在 Debian 下通過bonding 實現雙網卡單IP的操作。
Linux 雙卡綁定一個IP地址,實質工作是使用兩塊網卡虛擬爲一塊,使用同一個IP地址,是我們能夠得到更穩定的連接。在Linux2.4.x 中內核也採用這種技術,被稱爲 bonding.
bonding 的原理:
在正常情況下,網卡只接受目的硬件地址是自身Mac的以太網幀,對於別的數據幀都過濾掉,以減輕驅動程序的負擔。但是網卡也支持混雜模式,可以接受網絡上所有的幀(如抓包工具sniffer)。bonding也運行在這個模式下,並且修改了MAC地址,將兩塊網卡的MAC地址改爲相同,可以接受特定MAC的數據幀。然後把響應的數據幀傳送給bond驅動程序處理。
bonding mode 工作方式:
bonding 有0~6 共七種工作方式,常用的工作方式是0,1,6 三種:
mode = 0 :表示負載均衡模式(兩個網卡都工作),但需要交換機支持,並且交換機進行相應配置。
mode = 1 :表示提供冗餘功能,默認情況下只有一塊網卡工作,另一塊做備份
mode = 6 :表示負載均衡模式(兩個網卡都工作),不需要交換機支持。
bonding 配置:
apt-get install ifenslave
讓系統開機自動加載模塊 bonding , 其中miimon 用於鏈路監測,miimon=100 表示每100ms 監測一次鏈路狀態,如果有一條不通,則自動轉入另一條線路。
sh -c "echo bonding mode=6 miimon=100 >> /etc/modules"
修改 /etc/network/interfaces 文件爲如下內容:
auto lo
iface lo inet loopback
auto bond0
iface bond0 inet static #虛擬網卡的TCP/IP配置
address 192.168.58.100
netmask 255.255.255.0
gateway 192.168.58.1
dns-nameservers 192.168.58.1
post-up ifenslave bond0 eth0 eth1
pre-down ifenslave -d bond0 eth0 eth1
重啓計算機 或者手動加載bonding 模塊
modprobe bonding mode=6 miimon=100
/etc/init.d/networking restart