歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux網卡綁定詳解

Linux網卡綁定詳解

日期:2017/2/28 16:02:38   编辑:Linux教程

Linux 雙網卡綁定概述

我們在這介紹的Linux 雙網卡綁定實現就是使用兩塊網卡虛擬成為一塊網卡,這個聚合起來的設備看起來是一個單獨的以太網接口設備,通俗點講就是兩塊網卡具有相同的IP地址而並行鏈接聚合成一個邏輯鏈路工作。其實這項技術在Sun和Cisco中早已存在,被稱為Trunking和Etherchannel 技術,在Linux的2.4.x的內核中也采用這這種技術,被稱為bonding。
bonding技術的最早應用是在集群——beowulf上,為了提高集群節點間的數據 傳輸而設計的。下面我們討論一下bonding 的原理,什麼是bonding需要從網卡的混雜(promisc)模式說起。我們知道,在正常情況下,網卡只接收目的硬件地址(MAC Address)是自身Mac的以太網幀,對於別的數據幀都濾掉,以減輕驅動程序的負擔。但是網卡也支持另外一種被稱為混雜promisc的模式,可以接收網絡 上所有的幀,比如說tcpdump,就是運行在這個模式下。bonding也運行在這個模式下,而且修改了驅動程序中的mac地址,將兩塊網卡的Mac地址改成相同,可以接收特定mac的數據幀。然後把相應的數據幀傳送給bond驅動程序處理。
直接給兩塊網卡設置同一IP地址是不可能的。Kernels 2.4.12及以後的版本均供bonding模塊,以前的版本可以通過patch實現。可以通過以下命令確定內核是否支持 bonding:
#cat /boot/config-kernel-version |grep -i bonding
CONFIG_BONDING=m

網卡綁定的意義

網絡負載均衡

對於bonding的網絡負載均衡是我們在文件服務器中常用到的,比如把三塊網卡,當做一塊來用,解決一個IP地址,流量過大,服務器網絡壓力過大的問題。對於文件服務器來說,比如NFS或SAMBA文件服務器,沒有任何一個管理員會把內部網的文件服務器的IP地址弄很多個來解決網絡負載的問題。如果在內網中,文件服務器為了管理和應用上的方便,大多是用同一個IP地址。對於一個百M的本地網絡來說,文件服務器在多個用戶同時使用的情況下,網絡壓力是極大的,特別是SAMABA和NFS服務器。為了解決同一個IP地址,突破流量的限制,畢竟網線和網卡對數據的吞吐量是有限制的。如果在有限的資源的情況下,實現網絡負載均衡,最好的辦法就是 bonding ;
網絡冗余;
對於服務器來說,網絡設備的穩定也是比較重要的,特別是網卡。在生產型的系統中,網卡的可靠性就更為重要了。在生產型的系統中,大多通過硬件設備的冗余來提供服務器的可靠性和安全性,比如電源。bonding 也能為網卡提供冗余的支持。把網個網卡綁定到一個IP地址,當一塊網卡發生物理性損壞的情況下,另一塊網卡也能提供正常的服務。

雙網卡綁定設置
一、編輯虛擬網絡接口配置文件,指定網卡IP
假設eth0是對外服務的網卡,已經調試好網絡;eth1是希望與eth0同時對外提供服務的網卡

# cd /etc/sysconfig/network-scripts/

#vi ifcfg-bond0

寫入如下信息和原來 ifcfg-eth0 的配置其實差不多。
所以我建議執行如下語句,將ifcfg-eth0復制一份再改。

# cp ifcfg-eth0 ifcfg-bon0

將ifcfg-bon0的信息修改大致如下:

DEVICE=bond0
BOOTPROTO=static
IPADDR=[IP]
NETMASK=[MASK]
BROADCAST=[BROADCAST]
GATEWAY=[GATEWAY]
ONBOOT=yes
TYPE=Ethernet

二、配置真實網卡
修改ifcfg-eth0如下:

DEVICE=eth0

BOOTPROTO=none

ONBOOT=yes

MASTER=bond0 #如果不寫,則必須做第四步

SLAVE=yes #如果不寫,則必須做第四步

USERCTL=yes

類似地修ifcfg-eth1如下:

DEVICE=eth1

BOOTPROTO=none

ONBOOT=yes

MASTER=bond0 #如果不寫,則必須做第四步

SLAVE=yes #如果不寫,則必須做第四步

USERCTL=yes

Copyright © Linux教程網 All Rights Reserved