- linux中網路相關的主要的幾個配置文件為:
/etc/hosts
配置主機名(域名)和IP地址的對應/etc/sysconfig/network
配置主機名和網關/etc/sysconfig/network-scripts/ifcfg-eth0
eth0配置文件,eth1則文件名為ifcfg-eth1,以此類推/etc/resolv.conf
配置DNS客戶端(關于使用哪個DNS配置)
/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> # 表示子網掩碼 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用戶控制設備
/etc/resolv.conf
文件/etc/resolv.conf
配置DNS客戶端,它包含了DNS服務器地址和域名搜索配置,每一行應包含一個關鍵字和一個或多個的由空格隔開的參數.下面是一個例子的文件:search wuxp.com namesever 192.168.0.1 namesever 192.168.0.2
search wuxp.com
:表示當提供一個不包含完全域名的主機名時,在該主機名后添加wuxp.com
的后綴;namesever
:表示解析域名時使用該地址指定的主機為域名服務器.其中域名服務器按照文件中出現的順序來查詢的.因此,應該首先給出最可靠的服務器.目前,至多支持三個名字的服務器./etc/sysconfig/network
該文件用來指定服務器上的網絡配置信息,下面是一個示例:
```
NETWORK=yes
RORWARD_IPV4=yes
HOSTNAME=server.wuxp.com
GAREWAY=192.168.0.1
GATEWAYDEV=eth0NETWORK=yes/no # 網絡是否被配置
# 表示網絡網關的IP地址
FORWARD_IPV4=yes/no # 是否開啟IP轉發功能
HOSTNAME= # 表示服務器的主機名
GAREWAY=
GAREWAYDEV= # 表示網關的設備名,如:eth0
```/etc/hosts
當機器啟動時,在可以查詢DNS以前,機器需要查詢一些主機名到IP地址的匹配.這些匹配信息存放在/etc/hosts
文件中.在沒有域名服務器情況下.系統上的所有網絡程序都通過查詢該文件來解析對應于某個主機名的IP地址:- 示例:
127.0.0.1 Localhost server.wuxp.com 192.168.0.3 stationl.wuxp.com
最左邊一列是主機IP信息,中間一列是主機名.任何后面的列都是該主機的別名.
修改后需要重啟網路才能生效,重新啟動網絡設置:/sbin/service network restart
service network start
# 啟動網絡服務service network stop
# 停止網絡服務service network status
# 查看網絡服務狀態
- 示例:
- 單個網卡綁定多個IP和多個網卡綁定為一塊虛擬網卡的配置
- 單網卡綁定多個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-eth1
DEVICE=eth0:1 BOOTPROTO=static IPADDR=192.168.168.3 NETMASK=255.255.255.0 NBOOT=yes
- 多個網卡綁定成一塊虛擬網卡
為了提供網絡的高可用性,我們可能需要將多塊網卡綁定成一塊虛擬網卡對外提供服務,這樣即使其中的一塊物理網卡出現故障,也不會導致鏈接中斷.比如我們可以將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的配置文件
DEVICE=eth0 BOOTPROTO=none NBOOT=yes USERCTL=no MASTER=bond0 SLAVE=yes
- ifcfg-eth1內容
因為linux的虛擬網卡是在內核模塊中實現的,所以需要安裝的時候已經裝好該module.在DEVICE=eth1 BOOTPROTO=none NBOOT=yes USERCTL=no MASTER=bond0 SLAVE=yes
/etc/modprobe.conf
文件中添加如下內容(如果沒有該文件,則新建一個):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中網卡接管的時間好象比較長。
- 單網卡綁定多個IP
- 示例
- 查看當前網絡信息
用命令:ifconfig
這個命令會顯示當前系統中起來的所有網卡設備信息,虛擬網卡或者二層網橋都會顯示出來.在windows中查看網卡設備的命令是:ipconfig
, 結果如下代碼:
em1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 58.221.61.137 netmask 255.255.255.0 broadcast 58.221.61.255 ether 08:00:27:a7:04:4c txqueuelen 1000 (Ethernet) RX packets 897976926 bytes 460354493652 (428.7 GiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 732008453 bytes 77462607445 (72.1 GiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 loop txqueuelen 1 (Local Loopback) RX packets 2795715777 bytes 1058364974383 (985.6 GiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2795715777 bytes 1058364974383 (985.6 GiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
如果你開機后用ifconfig命令查到的結果和上面的一樣,那么你的網絡很可能就是正常的。
簡單介紹下上面的結果的內容,首先有兩塊網卡:
- eth0是我設置的,一般來說每個Linux系統都會有塊eth0(有的是eth1或者eth2等等);
- lo網卡是塊回環網卡,就是內部回環查詢的,可以用來查看下是不是自己網卡硬件有問題(自己ping自己),這塊設備每個操作系統都是有的。但有些可能是沒有起來。- 如果在第一步中沒有查看到結果那么別傷心,可以用命令:ifconfig -a 來查看所有存在的網卡設備,當然包括沒有起來的。因為有些設置有問題或者在開機時無法讀取你的網絡設置腳步,所以無法幫你的網卡自動起來。這時候就得靠自己手動起來了。
如果ifconfig -a發現有些沒起來的設備,那么可以手動起來,網絡應該就沒問題了。現假設查看到eth0沒有自動起來,那么用命令:ifconfig eth0 up(相對命令關閉網卡命令:ifconfig eth0 down) 執行命令后如果沒有打印出什么來就表示執行命令成功(這是Linux的低調:命令執行成功什么都沒有顯示,如果沒有成功那么錯誤信息恐怕有可能會刷屏);然后執行下第一個命令:ifconfig 如果結果顯示出eth0的信息了,那么表示網卡已經開始工作了,網絡沒問題了。當然這只是暫時的,至于為什么沒有自動起來,有兩個原因:- 系統啟動時讀取網絡配置腳本出問題,這個可以查看下啟動日志;
- 是網絡配置腳步本身的問題,這個可以看后面幾步的網絡配置;
當然如果是系統啟動讀取腳本出問題,那這個就可能比較復雜了。我當時也出現過一次,系統啟動時死活都讀取不到我配置腳本,后來才發現是我自己把物理網卡設備關掉了,這個到后面會分享下。如果查找不出什么原因來,也沒關系,用個簡單的方法:把ifconfig eth0 up這個命令寫到啟動腳本中就可以了。執行下命令:echo 'ifconfig eth0 up' >> /etc/rc.local(我記得會讀取rc.local,可以查看下應該是rc.local)把這個命令追加到啟動腳本中去就可以了。每次開機就會自啟動了。
- 這才是網絡配置的關鍵。進入到網卡所在目錄:cd /etc/sysconfig/network-scripts,可以查看到很多和網絡有關的設備;有ifcfg-eth0和ifcfg-lo這個兩個文件,就是對應ifconfig出來的eth0和lo網卡設備的。進入到ifcfg-eth0文件中
大家可以根據自己的需求對網卡進行配置,上面是我基本配置,把一些無關的(如:uuid,mac地址等)刪除掉了。設置好重啟下網絡:server network restart 再ping下內網看看通不通(可以用arp -a來查看下當前有哪些主機是開放的)。如果通了,那么大概就指定怎么設置網卡信息了。這里提下,如果你需要用eth1的話可以拷貝份eth0修改成eth1,但前提是你要有物理網卡,虛擬機的話也要設置虛擬網卡。到此內部網絡已經通了,接下來配置外網了。DEVICE=eth0 // 這是網卡的名稱 TYPE=Ethernet // 網卡類型 ONBOOT=yes // 是否隨著開機自啟動 BOOTPROTO=static // static表示固定ip地址,dhcp表示隨機獲取ip IPADDR=192.168.10.150 // 手動設置的固定ip地址 NETMASK=255.255.255.0 // mask地址,就是掩碼 GATEWAY=192.168.10.1 // 網關地址
- 如果內網已經沒問題了那么來看看外網的配置(一定不能跳過內網配置來直接配置外網)。首先也是檢查下外網有沒有通,直接ping百度:ping www.baidu.com,如果通了,那行,可以到此結束了。如果通不了,出現無法識別主機之類的。那么跟著配置下下面腳本。第一、要配置下DNS,直接進入文件:vim /etc/resolv.conf 添加兩行腳本即可。
nameserver 192.168.10.1 // 用網關做DNS nameserver 8.8.8.8 // 用谷歌免費提供的DNS
- 如果前一步DNS已經配置好了,那么可以先ping下百度,能不能通。如果不能通那么查看下路由設置,路由的概念就啰嗦的講了,簡單一句:控制里面數據包到達外面的路線規則。用命令:route -n 查看下路由表
[zongzhen@collect ~]$ route -nKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface0.0.0.0 58.221.61.1 0.0.0.0 UG 0 0 0 em158.221.61.0 0.0.0.0 255.255.255.0 U 0 0 0 em1169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 em1172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
linux 查詢文件。可以看到Gateway一欄中有 58.221.61.1表面這里有個默認網關,當數據包找不到出口時,一律往這個網關丟。路由器另外一端是連接公網的,所以如果配置了默認網卡那么就可以和外界通訊了。如果沒有默認網關則要自己手動添加一條默認網關:route add default gw 58.221.61.1然后重啟網絡再試試能不能和外界通信了。如果你的Linux不是虛擬機,這幾步配置下來網絡基本上可以工作的了。但如果你的是虛擬機里面裝的Linux系統,那么配置網絡還是比較復雜的。
- 查看當前網絡信息