王繼敏
【摘 要】筆者以RHEL6系統為例,總結了在Linux安裝完成后需要進行的基礎網絡配置,以供Linux學習者參考。
【關鍵詞】Linux;網絡配置;網絡參數
中圖分類號: TP393.0文獻標識碼: A文章編號: 2095-2457(2019)34-0115-002
DOI:10.19694/j.cnki.issn2095-2457.2019.34.051
1 網卡名稱和網卡別名
Linux啟動后,網卡被內核探測到并自動被命名為ethX(此處的X為數字,如0、1等)。內核將探測到的第一塊網卡命名為eth0,第二塊網卡命名為eth1……依次類推。除了ethX這個名稱以外,網卡也可以有其他名稱,稱之為網卡別名(aliases)。需要注意的是,同一個網卡的每個別名都會被當作一個獨立的網卡對待,可以配置不同的IP地址。例如給eht0網卡命名兩個別名分別為eth0:1和eht0:2,此時就可以給這塊網卡分配三個不同的IP地址了,即網卡eth0一個IP地址,網卡eth0:1一個IP地址,網卡eth0:2一個IP地址。網卡別名需要用戶手動實現。
2 需配置的幾個網絡參數
初學者首先應該知道有哪些網絡參數需要配置,并能夠通過命令或者配置文件查看這些網絡參數的當前配置。這里主要有IP地址、子網掩碼、網關、主機名和DNS的配置信息。
IP地址與子網掩碼
要查看當前網卡IP地址配置信息,可以用ifcfg命令。如:
#ifconfig
eth0 ? ? ?Link encap:Ethernet ?HWawddr 08:00:27:09:21:0E
inet addr:192.168.1.45 ?Bcast:192.168.1.255 ?Mask:255.255.255.0
……
命令ifcfg后面也可以不跟任何參數,它將列出系統內所有網卡的IP配置信息。而命令ip是一個比ifcfg更強大的命令,命令ip有很多子命令,如ip link show可以列出系統內的所有網卡,ip addr show可以查看某網卡的具體地址配置信息。下面這條命令即可查看eth0網卡的當前配置:
#ip addr show eth0
這兩條命令輸出的信息都相當豐富,除了網卡的IP地址以外,還有MAC地址、子網掩碼、網卡狀態等等,如這里的state UP表示該網卡已啟用,qlen 1000表示eth0是一個千兆網卡。
路由和網關信息
當一個IP包要發送到其他網絡的主機地址時,就需要檢查路由表中的靜態路由,如果沒有找到路由信息,則這個IP包就被發往默認網關。要查看當前系統的路由配置信息,可以使用命令ip route,它將列出當前系統的路由表。如:
#ip route
192.168.1.0/24 dev eth0 ?proto kernel ?scope link ?src 192.168.1.45
169.254.0.0/16 dev eth0 ?scope link ?metric 1002
default via 192.168.1.1 dev eth0
屏幕上打印出的最后一行default via 192.168.1.1 dev eth0,表示的含義是192.168.1.1是eth0網卡的默認網關。另外查看路由表還可以使用route-n命令,具體可以參閱man手冊,此處不再贅述。
主機名和主機名的本地解析
可以用hostname命令查看當前系統的主機名,而系統中/etc/hosts文件實現了從主機名到IP地址的本地解析,這是一個文件,可以用任意文本編輯器打開編輯。此處主要是定義本機主機名到IP地址的對應。如:
#hostname
stu1.sailor.org
#cat /etc/hosts
192.168.1.111 ? stu1.sailor.org ? ?stu1
……
這里可以看到,當前系統的主機名為stu1.sailor.org,對應的IP地址為192.168.1.111。當前系統的主機名是在系統安裝的過程中設定的,如果系統安裝完成后又想要修改主機名,則需要修改/etc/sysconfig/network文件。如:
#cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME= stu1.sailor.org
GATEWAY=192.168.1.1
其中NETWORKING項可以控制系統網絡的開啟或者關閉,yes表示開啟網絡,no表示關閉網絡;HOSTNAME是設置系統主機名的地方,當前系統的主機名為stu1.sailor.org;GATEWAY設置了系統的默認網關,此處系統的默認網關為192.168.1.1。需要注意的是,在系統的另一個配置文件中,即/etc/sysconfig/network-scripts/ifcfg-ethX(X為數字)中還可以配置了某個具體網卡的網關。如果這個文件中配置了網關,則該配置覆蓋了默認網關;如果該文件沒有設置該網卡的網關,則該網卡使用全局的默認網關。對/etc/sysconfig/network的修改通常需要重啟整個系統才能生效。
DNS
Linux將本地/etc/hosts文件無法解析的主機名提交給DNS服務器進行解析,Linux系統對DNS的配置分為全局DNS和僅對某網卡有效的DNS。其中全局DNS是對所有網卡都有效的,它在系統中的/etc/resolv.conf文件中進行配置。可以用文本編輯器打開并編輯這個文件。如:
#cat /etc/resolv.conf
nameserver 192.168.1.1
我們可以看到,當前系統的DNS服務器地址為192.168.1.1。
僅對某網卡有效的DNS是在該網卡的配置文件中定義的,如eth0網卡的配置文件是/etc/sysconfig/network-scripts/ifcfg-eth0,用cat命令查看該文件可以看到“DNS1=192.168.1.254”這樣的字樣,其含義為192.168.1.254這個DNS僅僅當eth0激活時對eth0有效,它可以覆蓋全局的DNS。
3 網絡配置文件
系統的/etc/sysconfig/network-scripts目錄是傳統UNIX的網絡配置文件的保存位置,在Redhat Enterprise Linux 6中也保留了這一傳統。但是在RHEL6中,還采用/etc/sysconfig/networking目錄來存放網絡配置文件。如果通過手工修改配置文件的方式配置網絡,則需確保這兩套配置體系的一致和同步,否則系統有可能會產生紊亂。因此,推薦用戶使用Redhat開發的網絡配置工具system-config-network或者system-config-network-tui,可以自動同步兩套配置文件,節省了不少工作量也避免了出錯。其中system-config-network是GUI界面,需要依賴XWindows運行而system-config-network-tui可以在字符終端界面下運行。由于Linux服務器通常不會安裝XWindows系統,所以這里推薦安裝和使用后者。如以下命令演示了安裝和運行system-config-network-tui,配置完成后通常需要重啟網絡服務以使配置生效:
#yum install system-config-network-tui
#system-config-network-tui
#service network restart
在Redhat Enterprise Linux 6系統中,如果用戶啟動了NetworkManager服務,那么它可以自動地進行網絡配置。在一些經常需要移動辦公的環境中,NetworkManager服務是非常便利的,但是對于服務器使用環境來說,因為各自網絡配置基本上不可能經常變動,因此最好一開始就關閉該服務,以免該服務影響我們配置好的網絡。
4 網絡配置基本流程
Linux運維的初學者在安裝Linux虛擬機完成后,可以依照以下流程來設置各項網絡參數:
1)IP地址
2)子網掩碼
3)路由與網關 #1、2和3的修改需重啟網絡服務才能生效
4)DNS
5)DNS后綴 #4和5的修改無需重啟網絡服務即可生效
6)主機名 #6的修改需重啟整個系統才能生效
7)/etc/hosts文件 #7的修改無需重啟網絡服務即可生效
對于步驟1~3,如果使用system-config-network-tui工具配置網絡,則步驟1、2和3可以一步完成,配置完成后需要使用命令service network restart重啟網絡服務以使配置生效。因為直接使用ip、ifconfig命令或者直接修改配置文件比較復雜且非常容易出錯,所以不推薦這種做法。可以直接修改/etc/resolv.conf文件定義全局的DNS和DNS后綴來完成步驟4和5,該文件修改完成后,DNS配置信息是立即生效的,無需重啟網絡服務。可以通過修改/etc/sysconfig/network文件來配置主機名。當Linux系統需要進行主機名解析時,會先進行本地解析即讀取/etc/hosts文件查找對應條目,如果沒有找到,再訪問DNS服務器。因此在步驟7,可以將本主機名和一些需要經常訪問的主機名對應的IP地址放在/etc/hosts文件中以加快解析的速度。
5 結束語
Linux下的網絡配置相關內容的知識點較為分散,涉及的命令和配置文件也比較多,通常成為初級Linux運維學員在配置實驗環境過程中的一個攔路虎。本文將Linux下的網絡配置相關知識進行總結提煉,并給出一個基礎網絡配置的七個步驟以供讀者參考。
【參考文獻】
[1]鳥哥.鳥哥的Linux私房菜基礎學習篇[M].第三版.北京:人民郵電出版社,2010.