1. 程式人生 > >Ubuntu16.04 網路管理

Ubuntu16.04 網路管理

本文記錄Ubuntu下的網路管理

一、配置檔案簡介
在Ubuntu系的Linux系統裡,與網路相關的主要設定檔案如下:

/etc/host.conf 配置域名服務客戶端的控制檔案

/etc/hosts 配置主機名和IP地址的對映

/etc/resolv.conf 域名服務客戶端的配置檔案,指定域名伺服器的IP地址

/etc/network/interfaces 用於設定網路配置資訊(IP地址,子網掩碼,閘道器IP等)

/etc/udev/rules.d/70-persistent-net.rules 記錄主機中所有網絡卡的MAC地址

/etc/xinetd.conf 定義了由程序守護程式xinetd所守護的網路服務

/etc/networks 實現域名與網路地址的對映

/etc/protocols 設定主機使用的協議及各個協議的協議號(協議ID)

/etc/services 設定主機上各個網路服務程序所使用的埠號

  1. /etc/host.conf配置檔案
    /etc/host.conf檔案的預設內容如下:
# The"order" line is only used by old versions of the C library.

order hosts,bind #指定主機名的解析順序,即本地解析,DNS域名解析

multi on #允許主機擁有多個IP地址

這個檔案一般不需要我們修改,預設的解析順序是本地解析,DNS伺服器解析。也就是說在本系統裡對於一個主機名首先進行本地解析,如果本地解析沒有,然後進行DNS伺服器解析。

  1. /etc/hosts配置檔案
    /etc/hosts檔案的預設內容如下(不同主機,IP對映的主機名不同):
127.0.0.1 butbueatiful  localhost.localdomain  localhost
::1 localhost6.localdomain6  localhost6

可見,預設的情況是本機ip和本機一些主機名的對應關係,第一行是ipv4資訊,第二行是ipv6資訊,如果用不上ipv6本機解析,一般把該行註釋掉。
第一行的解析效果是,butbueatiful localhost.localdomain localhost三者都會被解析成127.0.0.1,我們可以用ping試試。

[[email protected] ~]# ping -c 3 butbueatiful
PING butbueatiful (127.0.0.1) 56(84) bytes ofdata.
64 bytes from butbueatiful (127.0.0.1):icmp_seq=1 ttl=64 time=0.061 ms
64 bytes from butbueatiful (127.0.0.1):icmp_seq=2 ttl=64 time=0.052 ms
64 bytes from butbueatiful (127.0.0.1):icmp_seq=3 ttl=64 time=0.051 ms

--- butbueatiful ping statistics ---
3 packets transmitted, 3 received, 0% packetloss, time 1999ms
rtt min/avg/max/mdev = 0.051/0.054/0.061/0.009ms

[[email protected] ~]# ping -c 3localhost.localdomain
PING butbueatiful (127.0.0.1) 56(84) bytes ofdata.
64 bytes from butbueatiful (127.0.0.1):icmp_seq=1 ttl=64 time=0.055 ms
64 bytes from butbueatiful (127.0.0.1):icmp_seq=2 ttl=64 time=0.035 ms
64 bytes from butbueatiful (127.0.0.1):icmp_seq=3 ttl=64 time=0.050 ms


--- butbueatiful ping statistics ---

3 packets transmitted, 3 received, 0% packet loss,time 1999ms

rtt min/avg/max/mdev = 0.035/0.046/0.055/0.011 ms

看到上面的結果,你可能會問為什麼ping localhost.localdomain的時候,下面顯示的是卻是butbueatiful,這是因為第一個主機名butbueatiful後面的那些主機名其實都是butbueatiful的主機別名。

如果我們要追加新的本地解析,比如我們希望在我們的機器裡把yyyy.com和www.yyyy.com都解析成192.168.0.100,那麼就追加如下一句即可:

192.168.0.100  yyyy.com  www.yyyy.com

同樣,在這裡,www.yyyy.com是yyyy.com的主機別名。

如果你仔細一想,會發現,其實這個檔案是很危險的,如果有人惡意修改了你這個檔案,比如把淘寶的網站域名解析到了他的釣魚網站,那你就要中招了。

  1. /etc/resolv.conf配置檔案
    該檔案用來指定DNS域名解析伺服器的IP資訊,其配置引數一般有以下四個:
nameserver #指定DNS伺服器的IP地址
domain #定義本地域名資訊
search #定義域名的搜尋列表
sortlist #對gethostbyname返回的地址進行排序

但是最常用的配置引數是nameserver,其他的可以不設定,這個引數指定了DNS伺服器的IP地址,如果設定不正確,就無法進行正常的域名解析。

一般來說,推薦設定2個DNS伺服器,比如我們用google的免費DNS伺服器,那麼該檔案的設定內容如下:

nameserver 8.8.8.8

nameserver 8.8.4.4

同樣,這個檔案也是危險的,如果被人惡意改成了他自己的DNS伺服器,他就可以為所欲為的控制你通過域名訪問的每個目的地了,這就是常說的DNS劫持。

  1. /etc/network/interfaces配置檔案
    interfaces網路介面配置檔案,是Ubuntu網路配置中最為重要的一個檔案。本檔案用來設定主機的IP型別,IP地址,子網掩碼,閘道器IP,廣播地址,MAC實體地址等資訊,詳細的配置方法參見本文第二章節,以下以靜態IP配置給出該檔案的內容示例。
auto lo

iface lo inetloopback

 

auto eth0 # 指明當前配置的是主機上的eth0網絡卡

iface eth0 inetstatic  # 將eth0網絡卡配置為靜態IP型別

address10.8.210.145 # 手動設定eth0網絡卡的IP地址為10.8.210.145

netmask255.255.255.0 # 手動設定子網掩碼

gateway10.8.210.7 # 手動設定閘道器IP

#pre-up ifconfigeth0 hw ether 11:22:33:44:55:66       # 手動設定MAC地址

【說明】一般網絡卡的MAC地址是由廠家設定好的,系統啟動的時候可以偵測到MAC地址,如非特殊需求,一般情況下不必人為修改。故而此處將該配置資訊註釋掉,只做示例。

  1. /etc/udev/rules.d/70-persistent-net.rules配置檔案
    該檔案屬於主機的一個記錄檔案,其主要作用就是記錄主機識別到的網絡卡資訊。每當識別到一個新的網路介面配置資訊,就會自動追加到該檔案,使用者也可以自己新增網路介面資訊。主機識別網絡卡資訊主要依據就是通過MAC地址。

  2. /etc/xinetd.conf配置檔案
    該檔案就是簡單的用include命令指定了xinetd守護程序可以讀取的配置檔案,所有xinetd可讀取的配置檔案其實都放在/etc/xinted.d目錄下面。xinetd守護程序通過讀取不同的服務程序的配置檔案,啟動並配置相應的服務程序。

6.其他配置檔案
/etc/networks # 實現域名與網路地址的對映

/etc/protocols # 設定主機使用的協議及各個協議的協議號(協議ID)

/etc/services # 設定主機上各個網路服務程序所使用的埠號

上述三個配置檔案的作用如註釋所說,一般保持預設,不必修改。

二、Ubuntu網路配置常見問題
1.Ubuntu網路配置中,圖形介面配置和文字命令列配置的區別
Ubuntu在Desktop版本中,提供了兩種方法來進行網路引數配置。即圖形介面和文字命令列配置。文字命令列方式是通過修改/etc/network/interfaces來進行配置的。而圖形介面配置是通過network-manager進行配置,通過啟動Ubuntu桌面的SystemàPreferencesàNetwork Connections即可進行圖形化配置。network-manager的配置和直觀,按照提示一步一步操作即可,讀者可以自行查閱相關的配置方法。

但如果修改了interfaces配置檔案,又配置了network-manager(以下簡稱nm),就會出現一些莫名其妙的問題:

1、interfaces和 nm中的網路設定不一樣,系統實際的IP是哪個?

2、有時候莫名其妙的,介面右上角的網路連線圖示就丟失了。

3、明明在nm中配置了正確的網路設定,為什麼就上不了網呢?

其實,只要弄清楚 interfaces和 nm之間的關係,這些問題就不難解釋了。

首先,當系統內沒有第三方網路管理工具(比如nm)時,系統預設使用interfaces檔案內的引數進行網路配置。

接著,當系統內安裝了 nm之後,nm預設接管了系統的網路配置,使用nm 自己的網路配置引數來進行配置。

但是,如果使用者在安裝nm之後(Desktop版本預設安裝了nm),自己手動修改了interfaces 檔案,那nm 就自動停止對系統網路的管理,系統改使用interfaces 檔案內的引數進行網路配置。

此時,再去修改nm 內的引數,不影響系統實際的網路配置。若要讓nm 內的配置生效,必須重新啟用nm 接管系統的網路配置。

現在知道了兩者之間的工作關係,再看上面的三個問題:

1、要看nm是否接管,如果沒有接管,系統實際的IP設定以interfaces 中的為準。反之,以nm 中的為準。

2、當nm 停止接管的時候,網路連線圖示就丟失了。

3、同樣是接管的問題。

如果使用者希望在Desktop版本中,直接使用interfaces 進行網路配置,那麼可以通過以下指令來關閉network-manager:

/etc/init.d/network-manager stop    # 手動關閉network-manager

之後通過檢視/etc/NetworkManager/nm-system-settings.conf檔案來確定nm是否停止網路配置工作。即只需要確保/etc/NetworkManager/nm-system-settings.conf內的managed=false
之後就可以通過檔案命令列方式進行網路引數配置。

vi /etc/network/interfaces # 手動修改interfaces配置檔案

/etc/init.d/networking restart  # 配置完成後,重啟網路服務

如果希望能繼續使用nm 來進行網路配置,則需要進行如下操作:

sudo service network-manager stop # 停止nm服務

sudo rm /var/lib/NetworkManager/NetworkManager.state# 移除nm 的狀態檔案

sudo gedit /etc/NetworkManager/nm-system-settings.conf# 開啟nm 的配置檔案

修改檔案裡面這一行:managed=false,將false修改成true,然後重啟nm程式,指令如下:

sudo servicenetwork-manager start # 由nm程式重新接管網路配置工作

【注意】如果手工改過/etc/network/interfaces,nm會自己把這行改成:managed=false(這裡應該預設就是false)

2.Ubuntu網路配置示例(以文字命令列為例,包含靜態IP配置和動態IP配置)
首先通過ifconfig檢視網絡卡資訊,顯示網絡卡enp0s31f6和網絡卡lo

一般通過修改/etc/network/interfaces配置檔案設定網路介面引數,示例如下:

#配置環回網路,系統預設就好,一般不必修改。

auto lo

iface lo inetloopback

 

#配置靜態IP配置

#auto enp0s31f6 # 配置enp0s31f6網絡卡

#iface enp0s31f6 inetstatic # 將enp0s31f6網絡卡設定為靜態IP

#address10.8.210.145 # 配置enp0s31f6網絡卡的IP地址

#netmask255.255.255.0 # 配置enp0s31f6網絡卡的子網掩碼

#gateway10.8.210.7 # 配置enp0s31f6網絡卡的閘道器地址

 

#auto eth0:1 # 建立基於eth0網絡卡的虛擬網絡卡,即讓一個網絡卡擁有過個IP

#iface eth0:1inet static # 將虛擬網絡卡eth0:1設定為靜態IP

#address192.168.1.10 # 配置虛擬網絡卡eth0:1網絡卡的IP地址

#netmask255.255.255.0 # 配置虛擬網絡卡eth0:1網絡卡的子網掩碼

#gateway192.168.1.1 # 配置虛擬網絡卡eth0:1網絡卡的閘道器地址
#動態IP配置

auto eth0

iface eth0 inetdhcp # 將eth0網絡卡設定為動態IP

系統按主機中網絡卡的個數進行編號,例如主機存在三張網絡卡,則分別為eth0eth1eth2。每張網絡卡均可配置多個虛擬網路IP。上述配置中,遮蔽了靜態IP配置,啟用的是動態IP配置。

之後需要在/etc/resolv.conf 配置檔案中指定DNS域名伺服器的IP地址資訊,參見第一小節說明。

配置完成後,執行如下指令,使配置生效:

/etc/init.d/networkingforce-reload     # 重新載入配置檔案

/etc/init.d/networking restart              # 重啟網路服務

或者

ifconfig enp0s31f6 down           #關閉網絡卡斯蒂芬     

ifconfig enp0s31f6 up                #開啟網絡卡

3.關於 Ubuntu 配置 DNS 的說明
目前我所掌握的 Ubuntu 下通過配置檔案設定DNS的方式有兩種:interfaces 和 resolvconf。

(1)interfaces方式

修改/etc/network/interfaces配置DNS需要在該檔案中加入

dns-nameserver xx.xx.xx.xx
dns-nameserver xxx.xxx.xx.xx
dns-nameservers xxx.xxx.xxx.xxx xxx.xxx.xx.xxx

dns-nameserver: 指定一條DNS地址,如果需要指定多個DNS則需要使用新增多行。
dns-nameservers: 指定多個DNS地址,用空格隔開。
備註: 這種方式修改DNS後需要重啟電腦方可生效(我沒有找到其它使其生效的方式,重啟網路並不能更新cat /etc/resolv.conf。

(2)resolvconf方式
修改/etc/network/interfaces配置DNS需要在該檔案中加入

dns-nameserver xx.xx.xx.xx
dns-nameserver xxx.xxx.xx.xx
dns-nameservers xxx.xxx.xxx.xxx xxx.xxx.xx.xxx

dns-nameserver: 指定一條DNS地址,如果需要指定多個DNS則需要使用新增多行。
dns-nameservers: 指定多個DNS地址,用空格隔開。
修改成功後,執行sudo resolvconf -u更新/etc/resolv.conf檔案即可。這種方式不需要重啟電腦。

備註: 看到網上說可以修改/etc/resolvconf/resolv.conf.d/head檔案同樣能配置DNS,但經我測試,不能正確配置,不知道是什麼原因。

4.關於 Ubuntu 網路配置中沒有eth0,只有eth1,eth2,eth3……的說明

Ubuntu是在虛擬機器裡安裝的,剛開始正常,網絡卡裝置名為eth0。後來新增一塊網絡卡(虛擬的),然後eth0就消失了,只有eth1和eth2了。原來問題出在檔案/etc/udev/rules.d/70-persistent-net.rules中。由於以前可以更改過MAC地址,所以70-persistent-net.rules中仍然保留了老網絡卡的內容,新網絡卡則被識別為eth1,eth2。

將表示老網絡卡的行註釋掉,然後將表示新網絡卡的行中eth1改成eth0,eth2改為eth1重啟即可

三、Ubuntu常用的網路指令

ifconfig                                         # 檢視網路資訊

ifconfig ethx 10.8.210.150      # 臨時設定ethx網絡卡的IP地址為10.8.210.150 (重啟後失效)

//例如:ifconfig eth0 10.8.210.150

ifconfig ethx:y 192.168.1.125                         # 臨時建立ethx網絡卡的虛擬網絡卡(重啟後失效)

//例如:ifconfig eth0:0 192.168.1.125 # 建立eth0的第一張虛擬網絡卡,並設定IP地址

ifconfig      eth0:1 192.168.3.250                     # 建立eth0的第二張虛擬網絡卡,並設定IP地址
ifconfig ethx:y down                                        # 臨時刪除ethx網絡卡的虛擬網絡卡(重啟後失效)

//虛擬網絡卡的永久配置方式需要修改配置檔案,參見本文第二章節第二點。

ifup ethx                                                # 啟用網絡卡ethx (x=0,1,2,3……),需要root許可權

ifdown ethx                                          # 禁用網絡卡ethx,需要root許可權

ifconfig ethx up                                   # 啟用網絡卡ethx(x=0,1,2,3……),需要root許可權

ifconfig ethx down                             # 禁用網絡卡ethx,需要root許可權

//兩種啟動/禁止網絡卡裝置方法的區別參見一下文章:

//http://blog.csdn.net/gdutlyp/article/details/50498202

/etc/init.d/networking start                # 啟動網路服務

/etc/init.d/networking stop                # 關閉網路服務

/etc/init.d/networking restart            # 重啟網路服務

/etc/init.d/networking force-reload  # 強制過載網路配置

reference:
https://blog.csdn.net/GDUTLYP/article/details/73087476
https://blog.csdn.net/GDUTLYP/article/details/73087476
https://blog.csdn.net/japinli/article/details/54897264