--Linux網絡配置文件詳解
----------------------2013/10/03
目前在企業級服務器的Linux系統中,RHEL占有絕對的優勢,不管是曾經在互聯網公司還是在目前測試Virtualization都是用的RHEL,所以本文主要是針對RedHat的linux來寫的。前陣子有一次也被測試中的各種網絡配置給搞暈了,因為我們VT-D和SR-IOV基本上都用NIC來測試的。收集了點資料,結合實際經驗總結一下。
Redhat Linux的網絡配置,基本上是通過修改幾個配置文件來實現的,雖然也可以用ifconfig來設置IP,用route來配置默認網關,用hostname來配置主機名,但是重啟后會丟失。
Linux中網絡相關的主要的幾個配置文件為:
/ect/hosts配置主機名(域名)和IP地址的對應
/etc/sysconfig/network配置主機名和網關
/etc/sysconfig/network-scripts/ifcfg-eth0 eth0配置文件,eth1則文件名為ifcfg-eth1,以此類推/etc/resolv.conf配置DNS客戶端(關於使用哪個DNS服務器的配置)
1./etc/sysconfig/network-scripts/ifcfg-<interface-name>文件
在RedHat中,系統網絡設備的配置文件保存在/etc/sysconfig/network-scripts目錄下,ifcfg-eth0包含第一塊網卡的配置信息,ifcfg-eth1包含第二塊網卡的配置信息。在啟動時,系統通過讀取這個配置文件決定某個網卡是否啟動和如何配置。
下面是/etc/sysconfig/network-scripts/ifcfg-eth0文件的示例:
DEVICE=eth0
IPADDR=192.168.0.2
NETMASK=255.255.255.0
BROADCAST=192.168.0.255
NBOOT=yes
BOOTPROTO=none
GATEWAY=192.168.0.1
若希望手工修改網絡地址或增加新的網絡連接,可以通過修改對應的文件ifcfg-<interface-name>或創建新的文件來實現。
DEVICE=<name> <name>表示物理設備的名字
IPADDR=<address> <address>表示賦給該網卡的IP地址
NETMASK=<mask> <mask>表示子網掩碼
BROADCAST=<address> <address>表示廣播地址
NBOOT=yes/no 啟動時是否激活該卡
BOOTPROTO=none none:無須啟動協議;bootp:使用bootp協議;dhcp:使用dhcp協議
GATEWAY=<address> <address>表示默認網關
MACADDR=<MAC-address> <MAC-address>表示指定一個MAC地址
USERCTL=yes/no 是否允許非root用戶控制該設備
2./etc/resolv.conf文件
文件/etc/resolv.conf配置DNS客戶端,它包含了DNS服務器地址和域名搜索配置,每一行應包含一個關鍵字和一個或多個的由空格隔開的參數。下面是一個例子文件:
search wuxp.com
nameserver 192.168.0.1
nameserver 192.168.0.2
search wuxp.com:表示當提供了一個不包括完全域名的主機名時,在該主機名后添加wuxp.com的后綴;nameserver:表示解析域名時使用該地址指定的主機為域名服務器。其中域名服務器是按照文件中出現的順序來查詢的。因此,應該首先給出最可靠的服務器。目前,至多支持三個名字服務器。
3./etc/sysconfig/network文件
該文件用來指定服務器上的網絡配置信息,下面是一個示例:
NETWORK=yes
RORWARD_IPV4=yes
HOSTNAME=server.wuxp.com
GAREWAY=192.168.0.1
GATEWAYDEV=eth0
NETWORK=yes/no 網絡是否被配置
FORWARD_IPV4=yes/no 是否開啟IP轉發功能
HOSTNAME=<hostname> <hostname>表示服務器的主機名
GAREWAY=<address> <address>表示網絡網關的IP地址
GAREWAYDEV=<device> <device>表示網關的設備名,如:eth0
4./etc/hosts文件
當機器啟動時,在可以查詢DNS以前,機器需要查詢一些主機名到IP地址的匹配。這些匹配信息存放在/etc/hosts文件中。在沒有域名服務器情況下,系統上的所有網絡程序都通過查詢該文件來解析對應於某個主機名的IP地址。
下面是一個/etc/hosts文件的示例:
127.0.0.1 Localhost server.wuxp.com
192.168.0.3 station1.wuxp.com
最左邊一列是主機IP信息,中間一列是主機名。任何后面的列都是該主機的別名。
修改后,需要重啟網絡才會生效:重新啟動網絡設置:/sbin/service network restart
service network start //啟動網絡服務
service network stop //停止網絡服務
service network status //查看網絡服務狀態
另外,還有單個網卡綁定多個IP和多個網卡綁定為一塊虛擬網卡的配置。
1、單網卡綁定多個IP
有時,我們需要在一塊網卡上配置多個IP,例如,在上面的例子中,我們還需要為eth0配置IP 192.168.168.2和192.168.168.3。那么需要再在/etc/sysconfig/network-scripts下新建兩個配置文件:
ifcfg-eth0:0內容如下:
DEVICE=eth0:0
BOOTPROTO=static
IPADDR=192.168.168.2
NETMASK=255.255.255.0
NBOOT=yes
ifcfg-eth0:1內容如下:
DEVICE=eth0:1
BOOTPROTO=static
IPADDR=192.168.168.3
NETMASK=255.255.255.0
NBOOT=yes
2、多個網卡綁定成一塊虛擬網卡
為了提供網絡的高可用性,我們可能需要將多塊網卡綁定成一塊虛擬網卡對外提供服務,這樣即使其中的一塊物理網卡出現故障,也不會導致連接中斷。比如我們可以將eth0和eth1綁定成虛擬網卡bond0
首先在/etc/sysconfig/network-scripts/下創建虛擬網卡bond0的配置文件ifcfg-bond0,內容如下
DEVICE=bond0
BOOTPROTO=none
BROADCAST=192.168.168.255
IPADDR=192.168.168.1
NETMASK=255.255.255.0
NETWORK=192.168.168.0
NBOOT=yes
TYPE=Ethernet
GATEWAY=192.168.168.250
USERCTL=no
然后分別修改eth0和eth1的配置文件
ifcfg-eth0內容:
DEVICE=eth0
BOOTPROTO=none
NBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
ifcfg-eth1內容
DEVICE=eth1
BOOTPROTO=none
NBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
因為linux的虛擬網卡是在內核模塊中實現的,所以需要安裝的時候已經裝好該module。在/etc/modprobe.conf文件(好像有些老版本是/etc/modules.con)中添加如下內容(如果沒有該文件,則新建一個):
alias bond0 bonding
options bond0 miimon=100 mode=1 primary=eth0
其中miimon=100表示每100ms檢查一次鏈路連接狀態,如果不通則會切換物理網卡
mode=1表示主備模式,也就是只有一塊網卡是active的,只提供失效保護。如果mode=0則是負載均衡模式的,所有的網卡都是active,還有其他一些模式很少用到
primary=eth0表示主備模式下eth0為默認的active網卡
最后,在/etc/rc.local中加入
modprobe bonding miimon=100 mode=1
重啟機器后可以看到虛擬網卡已經生效,可以通過插拔兩個物理網卡的網線來進行測試,不過linux中網卡接管的時間好象比較長。