--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中網卡接管的時間好象比較長。