Linux系統學習之網路管理

youcongtech發表於2017-11-12

網路介面配置

使用ifconfig檢查和配置網路卡

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:3576 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3576 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1781256 (1.6 MiB)  TX bytes:1781256 (1.6 MiB)

venet0(eth0)    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00
-00-00-00 inet addr:127.0.0.1 P-t-P:127.0.0.1 Bcast:0.0.0.0 Mask:255.255.255.255 UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1 RX packets:149510 errors:0 dropped:0 overruns:0 frame:0 TX packets:130564 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:34270807 (32.6 MiB) TX bytes:33492903 (31.9 MiB) venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:23.228.103.10 P-t-P:23.228.103.10 Bcast:23.228.103.10
   Mask:255.255.255.255 UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1 在我的虛擬機器上eth0叫venet0,通常不管是eth0也好或venet0也罷,表示的都是乙太網的第一塊網路卡。
其中eth是Ethernet的前三個字母,代表乙太網,
0代表第一張網路卡,第二塊網路卡則是eth1,以此類推。 Link encap是指 封裝的方式為乙太網;HWaddr是指網路卡的硬體地址;
inet addr是指網路卡當前的IP地址;Broadcast是廣播地址
(這部分是由系統根據IP和掩碼算出來的,一般不需要算出來的,一般不需要手工設定);
Mask是指掩碼;UP說明了該網路卡目前處於活動狀態;
MTU代表最大的儲存單位,即此網路卡一次所能傳輸的最大分包;RX和TX分別代表接受和傳送的包;
collision代表傳送的衝突數,如果發現值不為0則很可能網路存在故障;txqueuelen代表傳輸緩衝區長度大小;
第二個裝置是lo,表示主機的環回地址,這個地址是用於本地通訊的。 關閉和啟動網路卡的命令是: ifconfig venet0 down ifconfig venet0 up 將IP配置資訊寫入配置檔案 RedHat和CentOS系統的網路配置檔案所在目錄為/etc/sysconfig/network-scripts/,
通常所在配置檔案為ifcfg-eth0,如果有第二塊物理網路卡,則配置檔案為ifcfg-eth1,以此類推。
cat ifcft-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

其中,DEVICE變數定義了裝置的名稱;BOOTPROTO變數定義了獲取IP的方式,這裡BOOTPROTO=dhcp的含義是:
系統在啟用這塊網路卡時,IP將會通過dhcp的方式獲得;還有一個可選的值為static,表示靜態設定的IP;ONBOO
T變數定義了啟動時是否啟用使用該裝置,yes表示啟用,no表示不啟用。

 

路由和閘道器的設定

Linux主機之間使用IP進行通訊,假設A主機和B主機同在一個網段內且網路卡都處於啟用狀態,
則A具備和B同樣的直接通訊的能力(通過交換機或簡易的HUB)。
但是如果A主機和B主機處於兩個不同的網段,則A必須通過路由器B才能和B通訊。
一般來說,路由器屬於IT裝置的基礎設定,每一個網段都應該有至少一個閘道器。
在Linux上可使用route命令新增預設閘道器。假設新增的閘道器是192.168.160.55,新增的方式如下: route add default gw 192.168.160.55 如果想刪除的話只需將add改為del即可。 該命令可以簡寫為如下形式: route del default [root@Cfhost-170820-UCNK /]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 169.254.0.0 0.0.0.0 255.255.0.0 U 1004 0 0 venet0 0.0.0.0 192.168.160.55 0.0.0.0 UG 0 0 0 venet0 0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0 如果只使用route命令新增閘道器,一旦系統重啟,配置資訊就不存在了,必須將這種配置資訊寫入配置檔案
中才能永久儲存。可以進入到
/etc/sysconfig/network-scripts/目錄下,找到ifcfg-eth0目錄,
新增GATEWAYT=192.168.160.55就可以永久儲存。

 DNS客戶端配置

 

因特網發明初期,聯網的主機數量有限,想要訪問對方的主機只需要輸入對方的IP地址
即可。
但是隨著主機的不斷增長,單憑人腦已經無法記憶越來越多的IP地址了。為了解決這個問題,
人們使用hosts主機來記錄主機名和IP地址的對應關係,這樣訪問對方的主機時,就不需要使用IP了,只需
要使用主機名。這個檔案在linux下就是/etc/hosts. hosts檔案的具體作用如下: 1.為了加快域名解析。當訪問網站時,系統會首先檢視hosts檔案中是否有記錄,如果記錄存在則直接解析
出對應的IP,這時則不需要請求DNS伺服器。 2.方便小型區域網使用者使用的內部裝置。很多單位的區域網中都存在著不少內部應用系統(比如辦公自動化
OA、公司論壇等),平時在工作中也都需要訪問,但是由於這些區域網太小而不必為此專門設定DNS伺服器,
那麼此時使用hosts檔案則能簡單地解決這個問題。 假設公司裡有兩臺主機,B主機的IP為10.1.1.145,為了方便訪問B主機,可以再A主機的/etc/hosts檔案中新增一條記錄: 10.1.1.145 hostB 完成後再主機上使用ping命令測試B主機的連通性,再ping的輸出中可以看到主機名hostB
被正確地解析為10..1.1.145,如果沒有之前新增的記錄,
這裡將會顯示ping:unknown host hostB的錯誤。

/etc/resolv.conf

使用hosts檔案畢竟只能做有限的主機記錄,無法將所有已知的主機名記錄到hosts檔案中。因此
,當今幾乎所有的主機都在使用DNS來解析地址,從技術上來說,DNS就是全網際網路上主機名
及其IP地址對應的資料庫。設定主機為DNS客戶端的配置檔案就是/etc/resolv.conf,其中包含namesever、
、、search、domain這三個關鍵字。
[root@Cfhost-170820-UCNK ~]# cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver關鍵字後面會緊跟一個DNS主機的IP地址,可以設定2~3個nameserver,但是主機在查詢域名時
,會首先查詢第一個DNS,當該DNS不可用時,才會查詢第二個DNS,以此類推。

注意:雖然你可以在該檔案中定義多於3個的nameserver,但是這並沒有意義,因為系統永遠不會用
到第四個nameserve

search關鍵字後面跟的是一個域名。每個主機嚴格來說都應該有一個FQDN(全限定域名)
,所以往往域名就很長,如果這裡寫成search google.com,那麼www就代表www.google.com,這個關鍵
字後面可以跟多個域名。

domain關鍵字和search類似,不同的是domain後面只能跟一個域名






 

網路測速工具

ping 程式的目的在於測試另外一臺主機是否可到達,一般來說,如果ping不通某臺機器,就是說明對方主機已經嚴重出問題,但是不排除由於鏈路防火牆的因素、ping包被丟棄等原因
造成ping不通情況。
ping命令最簡單的使用方式是接收一個主機名或IP作為單一的引數,在按Enter鍵後,
執行ping命令的主機會向對端主機傳送一個ICMP的echo請求包,對端主機在接收到這個包後
會回應一個ICMP的reply回應包。在linux下ping命令並不會主動停止,需要使用Ctry+C    
組合鍵來停止,ping命令將會對發出的請求包和收到的回應包進行計數,這樣就能計算網路丟包率。

[root@Cfhost-170820-UCNK ~]# ping www.baidu.com
PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data.
64 bytes from 14.215.177.39: icmp_seq=1 ttl=50 time=149 ms
64 bytes from 14.215.177.39: icmp_seq=2 ttl=50 time=149 ms
64 bytes from 14.215.177.39: icmp_seq=3 ttl=50 time=150 ms
64 bytes from 14.215.177.39: icmp_seq=4 ttl=50 time=149 ms
64 bytes from 14.215.177.39: icmp_seq=5 ttl=50 time=149 ms
64 bytes from 14.215.177.39: icmp_seq=6 ttl=50 time=149 ms
64 bytes from 14.215.177.39: icmp_seq=7 ttl=50 time=149 ms
64 bytes from 14.215.177.39: icmp_seq=8 ttl=50 time=150 ms
^C

 host

host命令是用來查詢DNS記錄的,如果使用域名作為host的引數,命令返回該域名的IP,
如下所示:
[root@Cfhost-170820-UCNK ~]# host www.google.com
www.google.com has address 172.217.11.164
www.google.com has IPv6 address 2607:f8b0:4007:804::2004

注意:如果使用host www.google.com
出現-bash: host: command not found
說明缺包,執行yum install bing-utils命令即可解決

 

traceroute

在IP包結構中有一個定義資料包生命週期的TTL欄位,該欄位用於表明IP包的生命值,當IP資料包在網路上傳輸時,每經過一個路由器該值就減1,當該值減為0時此包就會被路由器丟棄。這種設計可用於避免出現一些由於某種原因始終無法到達目的地包不斷地在網際網路上傳遞(可以形象的稱之為“幽靈包”),減少無謂的網路資源消耗。

 

不過路由器也不是無聲無息地將TTL值為0的IP包丟棄的,它會同時給發生該IP資料包的主機傳送一個ICMP”超時“資訊,主機在接收到這個ICMP包後就同時能得到該路由的IP地址。

 

traceroute原理:它先構造一個TTL值為1的資料包傳送給目的地主機,這個資料包在經由第一個路由器時,路由器先將TTL值減1變0,然後將該IP包丟棄,同時給傳送一個ICMP訊息,這樣就得到了經過的第一臺路由器的IP地址;然後再構造一個TTL值為2的資料包,以此類推,就能得到該IP包經歷的整條鏈路的路由器IP。這裡會有一個問題:traceroute如何確認該IP包成功地被目的主機接收了呢?因為目的主機即便收到了TTL值為1的資料包也不會傳送ICMP通知給源主機的。這時traceroute所做的工作就是傳送一個UDP包給目的主機,同時制定該UDP接收的埠為主機不可能存在的埠–

 

常見網路故障排查:

首先網路故障分為兩類:硬體故障和軟體故障

硬體故障又主要分為網路卡物理損壞、鏈路故障等原因。其中網路卡物理損壞指網路卡裝置由於使用中傳送電子元件損壞而造成網路卡裝置無法繼續使用的情況;鏈路故障橫多時候表現為網線或者水晶頭在製作過程中出現線路問題,或由於線路老化等原因造成物理鏈路斷開,從而致使網路無法物理連通的情況。

 

軟體主要表現為網路卡驅動故障,也就是作業系統對網路卡驅動的不相容,這個問題往往需要安裝對應的網路卡裝置驅動來解決。

基於以上兩點,將解決網路在故障時採用的步驟如下:

 

第一步 是要確認網路卡本身是否能正常工作?利用ping工具可以確認這一點。輸入ping 127.0.0.1,然後看是否能正常ping通?這裡的127.0.0.1被稱為主機的迴環介面,是TCP/IP協議棧正常工作的前提。如果ping不通,一般可以證實為本機TCP/IP協議棧有問題,自然就無法連線網路了,不過,出現這種現象的概率比較低。

第二步確認網路卡是否出現物理或驅動故障,使用ping本機IP地址,如果ping通說明本地裝置和驅動都正常。

第三步要確認能否ping通同網段的其他主機。這一步主要是確認二層網路裝置(比如交換機或者HUB)工作是否正常。如果ping不通往往說明二層網路上出現了問題,可能涉及交換機的埠工作模式、 vlan劃分等因素。

第四步要確認是否能ping通閘道器IP。如果資料包能正常到達閘道器,則說明主機和本地網路都正常。

第五步確認是否能ping通公網上的IP,如果可以則說明本地的路由設定正確、否則就要確認路由裝置是否做了正確的net或路由設定。

第六步確認是否能ping通公網上的某個域名,如果能ping 通則說明DNS部分設定正確。

 

即便實際工作中可能受到諸如更復雜的網路環境、安全ACL、防火牆等眾多的因素的影響,而加大了網路排查的困難,但以上步驟是排除網路故障的主要環節,在排除不同的網路個性化的設定之後,排查步驟都與此類似

 


相關文章