linux網絡概述

一、TCP/IP協議棧和OSI協議棧

摘抄和參考博文地址:
參考博文地址1
參考博文地址2
參考博文地址3
參考博文地址4

1.1、OSI協議棧

  OSI是Open System Interconnection的縮寫,意爲開放式系統互聯。國際標準化組織(ISO)制定了OSI模型,該模型定義了不同計算機互聯的標準,是設計和描述計算機網絡通信的基本框架。OSI模型把網絡通信的工作分爲7層,分別是物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。
請看下面幾幅圖:
linux網絡概述

linux網絡概述

linux網絡概述

linux網絡概述

linux網絡概述

linux網絡概述

  • 物理層(Physical Layer)
    傳輸數據格式:比特(bit)流;
    主要功能和連接方式:建立、維護和取消物理連接;
    典型設備:光纖、同軸電纜、雙絞線、網卡、中繼器、集線器等;
    說明:在OSI參考模型中,物理層(Physical Layer)是參考模型的最低層,也是OSI模型的第一層。物理層的主要功能是,利用傳輸介質爲數據鏈路層提供物理連接,實現比特流的透明傳輸。物理層的作用是實現相鄰計算機節點之間比特流的透明傳送,儘可能屏蔽掉具體傳輸介質和物理設備的差異。使其上面的數據鏈路層不必考慮網絡的具體傳輸介質是什麼。"透明傳送比特流"表示經實際電路傳送後的比特流沒有發生變化,對傳送的比特流來說,這個電路好像是看不見的。

  • 數據鏈路層(Data Link Layer)
    傳輸數據格式: 將比特信息封裝成數據幀(Frame);
    主要功能和連接方式:在物理層上建立、撤銷、標識邏輯鏈接和鏈路複用 以及差錯校驗等功能。通過使用接收系統的硬件地址或物理地址來尋址;
    典型設備:網橋、交換機;
    說明:數據鏈路層(Data Link Layer)是OSI模型的第二層,負責建立和管理節點間的鏈路。該層的主要功能是通過各種控制協議,將有差錯的物理信道變爲無差錯的、能可靠傳輸數據幀的數據鏈路。
    該層通常又被分爲介質訪問控制(MAC)和邏輯鏈路控制(LLC)兩個子層。
    MAC子層的主要任務是解決共享型網絡中多用戶對信道競爭的問題,完成網絡介質的訪問控制;
    LLC子層的主要任務是建立和維護網絡連接,執行差錯校驗、流量控制和鏈路控制。
    數據鏈路層的具體工作是接收來自物理層的位流形式的數據,並封裝成幀,傳送到上一層;同樣,也將來自上層的數據幀,拆裝爲位流形式的數據轉發到物理層;並且,還負責處理接收端發回的確認幀的信息,以便提供可靠的數據傳輸。

  • 網絡層(Network Layer)
    傳輸數據格式:分割和重新組合數據包(Packet);
    主要功能和連接方式:基於網絡層地址(IP地址)進行不同網絡系統間的路徑選擇
    典型設備:網關、路由器;
    說明:網絡層(Network Layer)是OSI模型的第三層,它是OSI參考模型中最複雜的一層。其主要任務是通過路由選擇算法,爲報文或分組通過通信子網選擇最適當的路徑。該層控制數據鏈路層與傳輸層之間的信息轉發,建立、維持和終止網絡的連接。具體地說,數據鏈路層的數據在這一層被轉換爲數據包,然後通過路徑選擇、分段組合、順序、進/出路由等控制,將信息從一個網絡設備傳送到另一個網絡設備。一般地,數據鏈路層是解決同一網絡內節點之間的通信,而網絡層主要解決不同子網間的通信。例如在廣域網之間通信時,必然會遇到路由(即兩節點間可能有多條路徑)選擇問題。
    在實現網絡層功能時,需要解決的主要問題如下:
    尋址:數據鏈路層中使用的物理地址(如MAC地址)僅解決網絡內部的尋址問題。在不同子網之間通信時,爲了識別和找到網絡中的設備,每一子網中的設備都會被分配一個唯一的地址。由於各子網使用的物理技術可能不同,因此這個地址應當是邏輯地址(如IP地址)。
    交換:規定不同的信息交換方式。常見的交換技術有:線路交換技術和存儲轉發技術,後者又包括報文交換技術和分組交換技術。
    路由算法:當源節點和目的節點之間存在多條路徑時,本層可以根據路由算法,通過網絡爲數據分組選擇最佳路徑,並將信息從最合適的路徑由發送端傳送到接收端。
    連接服務:與數據鏈路層流量控制不同的是,前者控制的是網絡相鄰節點間的流量,後者控制的是從源節點到目的節點間的流量。其目的在於防止阻塞,並進行差錯檢測。

  • 傳輸層(Transport Layer)
    傳輸數據格式:數據組織成數據段(Segment);
    主要功能和連接方式: 用一個尋址機制來標識一個特定的應用程序(端口號);
    典型設備:終端設備(PC、手機、平板等);
    說明:OSI下3層的主要任務是數據通信,上3層的任務是數據處理。而傳輸層(Transport Layer)是OSI模型的第4層。因此該層是通信子網和資源子網的接口和橋樑,起到承上啓下的作用。該層的主要任務是:向用戶提供可靠的端到端的差錯和流量控制,保證報文的正確傳輸。傳輸層的作用是向高層屏蔽下層數據通信的細節,即向用戶透明地傳送報文。該層常見的協議:TCP/IP中的TCP協議、Novell網絡中的SPX協議和微軟的NetBIOS/NetBEUI協議。
    傳輸層提供會話層和網絡層之間的傳輸服務,這種服務從會話層獲得數據,並在必要時,對數據進行分割。然後,傳輸層將數據傳遞到網絡層,並確保數據能正確無誤地傳送到網絡層。因此,傳輸層負責提供兩節點之間數據的可靠傳送,當兩節點的聯繫確定之後,傳輸層則負責監督工作。綜上,傳輸層的主要功能詳解:
    傳輸連接管理:提供建立、維護和拆除傳輸連接的功能。傳輸層在網絡層的基礎上爲高層提供“面向連接”和“面向無接連”的兩種服務。
    處理傳輸差錯:提供可靠的“面向連接”和不太可靠的“面向無連接”的數據傳輸服務、差錯控制和流量控制。在提供“面向連接”服務時,通過這一層傳輸的數據將由目標設備確認,如果在指定的時間內未收到確認信息,數據將被重發。
    監控服務質量。

  • 會話層(Session Layer)
    傳輸數據格式:數據DTPU;
    主要功能和連接方式:會話層連接到傳輸層的映射;會話連接的流量控制;數據傳輸;會話連接恢復與釋放;會話連接管理、差錯控制;
    典型設備:終端設備(PC、手機、平板等);
    說明:會話層(Session Layer)是OSI模型的第5層,是用戶應用程序和網絡之間的接口,主要任務是:向兩個實體的表示層提供建立和使用連接的方法。將不同實體之間的表示層的連接稱爲會話。因此會話層的任務就是組織和協調兩個會話進程之間的通信,並對數據交換進行管理。用戶可以按照半雙工、單工和全雙工的方式建立會話。當建立會話時,用戶必須提供他們想要連接的遠程地址。而這些地址與MAC(介質訪問控制子層)地址或網絡層的邏輯地址不同,它們是爲用戶專門設計的,更便於用戶記憶。域名(DN)就是一種網絡上使用的遠程地址。會話層的具體功能詳解:
    會話管理:允許用戶在兩個實體設備之間建立、維持和終止會話,並支持它們之間的數據交換。例如提供單方向會話或雙向同時會話,並管理會話中的發送順序,以及會話所佔用時間的長短。
    會話流量控制:提供會話流量控制和交叉會話功能。
    尋址:使用遠程地址建立會話連接。l
    出錯控制:從邏輯上講會話層主要負責數據交換的建立、保持和終止,但實際的工作卻是接收來自傳輸層的數據,並負責糾正錯誤。會話控制和遠程過程調用均屬於這一層的功能。但應注意,此層檢查的錯誤不是通信介質的錯誤,而是磁盤空間、打印機缺紙等類型的高級錯誤。

  • 表示層(Presentation Layer)
    傳輸數據格式:數據PTPU;
    主要功能和連接方式:數據表示、數據安全、數據壓縮;
    典型設備:終端設備(PC、手機、平板等);
    說明:表示層(Presentation Layer)是OSI模型的第六層,它對來自應用層的命令和數據進行解釋,對各種語法賦予相應的含義,並按照一定的格式傳送給會話層。其主要功能是“處理用戶信息的表示問題,如編碼、數據格式轉換和加密解密”等。表示層的具體功能如下:
    數據格式處理:協商和建立數據交換的格式,解決各應用程序之間在數據格式表示上的差異。
    數據的編碼:處理字符集和數字的轉換。例如由於用戶程序中的數據類型(整型或實型、有符號或無符號等)、用戶標識等都可以有不同的表示方式,因此,在設備之間需要具有在不同字符集或格式之間轉換的功能。
    壓縮和解壓縮:爲了減少數據的傳輸量,這一層還負責數據的壓縮與恢復。
    數據的加密和解密:可以提高網絡的安全性。

  • 應用層(Application Layer)
    傳輸數據格式:數據ATPU;
    主要功能和連接方式:網絡服務與使用者應用程序間的一個接口;
    典型設備:終端設備(PC、手機、平板等);
    說明:應用層(Application Layer)是OSI參考模型的最高層,它是計算機用戶,以及各種應用程序和網絡之間的接口,其功能是直接向用戶提供服務,完成用戶希望在網絡上完成的各種工作。它在其他6層工作的基礎上,負責完成網絡中應用程序與網絡操作系統之間的聯繫,建立與結束使用者之間的聯繫,並完成網絡用戶提出的各種網絡服務及應用所需的監督、管理和服務等各種協議。此外,該層還負責協調各個應用程序間的工作。
    應用層爲用戶提供的服務和協議有:文件服務、目錄服務、文件傳輸服務(FTP)、遠程登錄服務(Telnet)、電子郵件服務(E-mail)、打印服務、安全服務、網絡管理服務、數據庫服務等。上述的各種網絡服務由該層的不同應用協議和程序完成,不同的網絡操作系統之間在功能、界面、實現技術、對硬件的支持、安全可靠性以及具有的各種應用程序接口等各個方面的差異是很大的。應用層的主要功能如下:
    用戶接口:應用層是用戶與網絡,以及應用程序與網絡間的直接接口,使得用戶能夠與網絡進行交互式聯繫。
    實現各種服務:該層具有的各種應用程序可以完成和實現用戶請求的各種服務。

總結:
OSI七層模型太過於理想化,現實的生產環境下比較少用上,大部分實際應用都是按照TCP/IP協議棧來設計實現。
在7層模型中,每一層都提供一個特殊的網絡功能。從網絡功能的角度觀察:下面4層(物理層、數據鏈路層、網絡層和傳輸層)主要提供數據傳輸和交換功能,即以節點到節點之間的通信爲主;第4層作爲上下兩部分的橋樑,是整個網絡體系結構中最關鍵的部分;而上3層(會話層、表示層和應用層)則以提供用戶與應用程序之間的信息和數據處理功能爲主。簡言之,下4層主要完成通信子網的功能,上3層主要完成資源子網的功能。

1.2、TCP/IP協議棧

TCP/IP協議棧,有些人理解爲5層,有些人理解爲4層。其實這兩種理解都不爲錯,本身TCP/IP協議分層接口就不太規範,是比較實用的一種規範。請看對應圖解:

linux網絡概述

linux網絡概述

linux網絡概述

linux網絡概述

具體對應層的實現功能可以參照OSI的模型。簡單來說TCP/IP就分爲4層,第一層最底層是物理層,第二層是網絡層,第三層是傳輸層,第四層是應用層。就其通信細節來講,物理層實現底層的細節控制,網絡層主要用來標識網絡主機,設備網絡地址(邏輯地址,ipv4,ipv6),一個ip可以用來標識一個主機。而傳輸層,主要是用來做傳輸控制,比如可靠傳輸,高效傳輸,重點是可以標識進程地址(識別端口),這樣一來結合網絡層的ip和應用層的端口就可以用來標識一個特定主機特定服務的進程地址,而應用層就是具體的應用協議的實現。

1.3、5類ipv4地址

IP地址是一種邏輯地址,它與MAC地址有所不同。它的構成:
IP(Internet protocol)地址:網絡號+主機號
Ipv4由32位組成,而且每8位爲一段,構成4段8位,每段通常用對應二進制的十進制數字表示,所以通常ipv4地址的格式也叫"點分十進制格式"。如果8位二進制,其取值範圍爲00000000~11111111,其對應十進制表示爲0~255.
所以電分十進制範圍爲:
0.0.0.0~255.255.255.255

不過爲了規範使用地址,對地址應用做來分類,分爲5類,分別是A類,B類,C類,D類,E類。
A類:
第一段爲網絡號,後三段爲主機號
網絡號:
0 000 0000 - 0 111 1111:1-127
網絡數量:126,127
每個網絡中的主機數量:2^24-2
默認子網掩碼:255.0.0.0,/8
用於與IP地址按位進行“與”運算,從而取出其網絡地址;
1.3.2.1/255.0.0.0 = 1.0.0.0
1.3.2.1/255.255.0.0= 1.3.0.0
私網地址:10.0.0.0/255.0.0.0
B類:
前兩段爲網絡號,後兩段爲主機號
網絡號:
10 00 0000 - 10 11 1111:128-191
網絡數:2^14
每個網絡中的主機數量:2^16-2
默認子網掩碼:255.255.0.0,/16
私網地址:172.16.0.0-172.31.0.0
C類:
前三段爲網絡號,最後一段爲主機號
網絡號:
110 0 0000 - 110 1 1111:192-223
網絡數:2^21
每個網絡中的主機數量:2^8-2
默認子網掩碼:255.255.255.0, /24
D類:組播
1110 0000 - 1110 1111:224-239
E類:科研
240-255

示例:使用until和while分別實現192.168.56.0/24 網段內,地址是否能夠ping通,若ping通則輸出"success!",若ping不通則輸出"fail!"

[root@localhost ~]# cat while.sh 
#! /bin/bash
string=192.168.56
i=1
while [ $i -le 255 ]
do
    if ping -b -c 2 ${string}.${i} &>/dev/null;then
        echo "[${string}.${i}]: success!"
    else
        echo "[${string}.${i}]: fail!"
    fi
    let i++
done
[root@localhost ~]# cat until.sh 
#! /bin/bash
string=192.168.56
i=1
until [ $i -gt 255 ]
do
    if ping -b -c 2 ${string}.${i} &>/dev/null;then
        echo "[${string}.${i}]: success!"
    else
        echo "[${string}.${i}]: fail!"
    fi
    let i++
done

[root@localhost ~]# sh while.sh 
[192.168.56.1]: success!
[192.168.56.2]: success!
[192.168.56.3]: fail!
[192.168.56.4]: fail!
[192.168.56.5]: fail!
[192.168.56.6]: fail!
[192.168.56.7]: fail!
[192.168.56.8]: fail!
[192.168.56.9]: fail!
[192.168.56.10]: fail!
[192.168.56.11]: fail!
[192.168.56.12]: fail!
[192.168.56.13]: fail!
[192.168.56.14]: fail!
[192.168.56.15]: fail!
[192.168.56.16]: fail!
[192.168.56.17]: fail!
[192.168.56.18]: fail!
[192.168.56.19]: fail!
......

[root@myserver ~]# sh until.sh 
[192.168.56.1]: success!
[192.168.56.2]: success!
[192.168.56.3]: fail!
[192.168.56.4]: fail!
[192.168.56.5]: fail!
[192.168.56.6]: fail!
[192.168.56.7]: fail!
[192.168.56.8]: fail!
[192.168.56.9]: fail!
[192.168.56.10]: fail!
[192.168.56.11]: fail!
[192.168.56.12]: fail!
[192.168.56.13]: fail!
[192.168.56.14]: fail!
[192.168.56.15]: fail!
[192.168.56.16]: fail!
[192.168.56.17]: fail!
[192.168.56.18]: fail!
[192.168.56.19]: fail!
[192.168.56.20]: fail!
......

二、ifcfg家族和iproute家族

2.1、網絡接口命名方式

  • 傳統命名:
    (1) 以太網:ethX, [0,oo),例如eth0, eth1, ...
    (2) PPP網絡:pppX, [0,...], 例如,ppp0, ppp1, ...

  • 可預測命名方案(CentOS):
    支持多種不同的命名機制:Fireware, 拓撲結構
    (1) 如果Firmware或BIOS爲主板上集成的設備提供的索引信息可用,則根據此索引進行命名,如eno1, eno2, ...
    (2) 如果Firmware或BIOS爲PCI-E擴展槽所提供的索引信息可用,且可預測,則根據此索引進行命名,如ens1, ens2, ...
    (3) 如果硬件接口的物理位置信息可用,則根據此信息命名,如enp2s0, ...
    (4) 如果用戶顯式定義,也可根據MAC地址命名,例如enx122161ab2e10, ...
    上述均不可用,則仍使用傳統方式命名;

  • 命名格式的組成:
    en:ethernet
    wl:wlan
    ww:wwan

  • 名稱類型:
    o<index>:集成設備的設備索引號;
    s<slot>:擴展槽的索引號;
    x<MAC>:基於MAC地址的命名;
    p<bus>s<slot>:基於總線及槽的拓撲結構進行命名;

2.2、ifcfg家族常用工具

ifcfg家族的工具來自於軟件包net-tools,默認最小化安裝CentOS 6.x系列有安裝,而CentOS 7.x最小化安裝沒有安裝,主要原因是ifcfg家族的工具已經要被替換了,不過因爲歷史原因,這些工具廣爲人知,所以目前在安裝盤的base倉庫還有提供。
(1) ifconfig工具

ifconfig - configure a network interface
ifconfig是配置網絡接口的一個工具;
用法:
ifconfig [interface]
ifconfig interface [aftype] options | address ...
    ifconfig  interface  IP/MASK  [up|down]
    ifconfig  interface  IP  netmask  NETMASK 

ifconfig -a:查看所有網卡信息;
ifconfig interface IP/MASK [up|down]
ifconfig interface IP netmask NETMASK
上面這兩種形式可以設置指定接口的ip地址以及子網掩碼信息。

爲了演示效果,我以CentOS 6.x爲例,安裝了雙網卡:
a. 查看所有接口信息

[root@localhost ~]# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:0C:29:DC:BA:F3  
          inet addr:192.168.56.66  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fedc:baf3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6302 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3633 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:7691888 (7.3 MiB)  TX bytes:270052 (263.7 KiB)

eth1      Link encap:Ethernet  HWaddr 00:0C:29:DC:BA:FD  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

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:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

b. 查看指定網卡信息

[root@localhost ~]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0C:29:DC:BA:F3  
          inet addr:192.168.56.66  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fedc:baf3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6335 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3663 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:7694940 (7.3 MiB)  TX bytes:274298 (267.8 KiB)

[root@localhost ~]# ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 00:0C:29:DC:BA:FD  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

[root@localhost ~]# ifconfig lo
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:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

c. 爲eth1設置ip地址(ipv4:192.168.56.110,子網掩碼爲:255.255.255.0)

[root@localhost ~]# ifconfig eth1 192.168.56.110/24 up
[root@localhost ~]# ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:0C:29:DC:BA:F3  
          inet addr:192.168.56.66  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fedc:baf3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6433 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3742 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:7703838 (7.3 MiB)  TX bytes:283604 (276.9 KiB)

eth1      Link encap:Ethernet  HWaddr 00:0C:29:DC:BA:FD  
          inet addr:192.168.56.110  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fedc:bafd/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:238 (238.0 b)

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:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

說明,這裏採用的是第一種設置立即(非永久生效,立即寫入內存)生效的ip地址格式,其中的子網掩碼採用的是
短格式寫法,上面的設置形式也可以換成:
ifconfig eth1 192.168.56.110 netmask 255.255.255.0 up

第一種格式:ifconfig eth1 192.168.56.110/24 up
第二種格式:ifconfig eth1 192.168.56.110 netmask 255.255.255.0 up

(2) netstat工具

netstat  - Print network connections, routing tables, interface statistics, masquerade connections, 
and multicast memberships
netstat - 打印網絡連接、路由表、網卡接口統計信息、僞裝連接以及多波成員信息。

顯示路由表:
-r:顯示內核路由表;
-n:以數字格式顯示;

顯示網絡連接:
netstat  [--tcp|-t]  [--udp|-u]  [--udplite|-U]  [--sctp|-S]  [--raw|-w]  [--listening|-l]  [--all|-a]  [--numeric|-n]   
[--extend|-e[--extend|-e]]  [--program|-p]

-t, --tcp:顯示TCP協議的相關連接,連接均有其狀態;FSM(Finate State Machine);
-u, --udp:顯示UDP相關的連接;
-w, --raw:顯示raw socket(裸套接字,原始套接字)相關的連接;
-l, --listening:處於監聽狀態的連接;
-a, --all:處於所有狀態的連接;
-n, --numeric:以數字格式顯示IP和port;
-e, --extend:擴展格式;
-p, --program:顯示相關的進程和PID;
-x, --unix:顯示Unix 套接字的信息;

傳輸層協議:
tcp:面向連接的協議;通信開始之前,要建立一個虛鏈路;通信完成後還要拆除連接;
dp:無連接的協議;直接發送數據報文;

顯示接口的統計信息:
netstat    {--interfaces|-I|-i}    [iface]   [--all|-a]   [--extend|-e]   [--verbose|-v]   [--program|-p]  [--numeric|-n]

所有接口:
netstat  -i
指定接口:
netstat  -I<IFace>

a.顯示路由表信息

[root@localhost ~]# netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.56.0    *               255.255.255.0   U         0 0          0 eth0
192.168.56.0    *               255.255.255.0   U         0 0          0 eth1
link-local      *               255.255.0.0     U         0 0          0 eth0
default         192.168.56.2    0.0.0.0         UG        0 0          0 eth0
[root@localhost ~]# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.56.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.56.0    0.0.0.0         255.255.255.0   U         0 0          0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
0.0.0.0         192.168.56.2    0.0.0.0         UG        0 0          0 eth0

b.

netstat -l  ,顯示所有處於監聽狀態的信息(包括tcp,udp以及unix socket);
netstat -lt ,顯示所有處於監聽狀態的tcp的信息;
netstat -lu,顯示所有處於監聽狀態的udp的信息;
netstat -lx,顯示所有處於監聽狀態的unix socket的信息;

[root@localhost ~]# netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 *:ssh                       *:*                         LISTEN      
tcp        0      0 localhost:smtp              *:*                         LISTEN      
tcp        0      0 *:ssh                       *:*                         LISTEN      
tcp        0      0 localhost:smtp              *:*                         LISTEN      
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ACC ]     STREAM     LISTENING     13140  @/var/run/hald/dbus-MnA9Lutd4Z
unix  2      [ ACC ]     STREAM     LISTENING     13803  private/error
unix  2      [ ACC ]     STREAM     LISTENING     13807  private/retry
unix  2      [ ACC ]     STREAM     LISTENING     13811  private/discard
unix  2      [ ACC ]     STREAM     LISTENING     13815  private/local
unix  2      [ ACC ]     STREAM     LISTENING     13819  private/virtual
unix  2      [ ACC ]     STREAM     LISTENING     13823  private/lmtp
unix  2      [ ACC ]     STREAM     LISTENING     9774   @/com/ubuntu/upstart
unix  2      [ ACC ]     STREAM     LISTENING     13133  @/var/run/hald/dbus-U4talIwYx6
unix  2      [ ACC ]     STREAM     LISTENING     13827  private/anvil
unix  2      [ ACC ]     STREAM     LISTENING     13831  private/scache
unix  2      [ ACC ]     STREAM     LISTENING     13748  public/cleanup
unix  2      [ ACC ]     STREAM     LISTENING     13755  private/tlsmgr
unix  2      [ ACC ]     STREAM     LISTENING     13759  private/rewrite
unix  2      [ ACC ]     STREAM     LISTENING     13763  private/bounce
unix  2      [ ACC ]     STREAM     LISTENING     13767  private/defer
unix  2      [ ACC ]     STREAM     LISTENING     13771  private/trace
unix  2      [ ACC ]     STREAM     LISTENING     13775  private/verify
unix  2      [ ACC ]     STREAM     LISTENING     13779  public/flush
unix  2      [ ACC ]     STREAM     LISTENING     13783  private/proxymap
unix  2      [ ACC ]     STREAM     LISTENING     13025  /var/run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     13787  private/proxywrite
unix  2      [ ACC ]     STREAM     LISTENING     13791  private/smtp
unix  2      [ ACC ]     STREAM     LISTENING     13795  private/relay
unix  2      [ ACC ]     STREAM     LISTENING     13799  public/showq

[root@localhost ~]# netstat -lt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 *:ssh                       *:*                         LISTEN      
tcp        0      0 localhost:smtp              *:*                         LISTEN      
tcp        0      0 *:ssh                       *:*                         LISTEN      
tcp        0      0 localhost:smtp              *:*                         LISTEN    

[root@localhost ~]# netstat -lu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State  
[root@localhost ~]#

c.顯示統計信息

netstat -s
[root@localhost ~]# netstat -s
Ip:
    7783 total packets received
    0 forwarded
    0 incoming packets discarded
    7763 incoming packets delivered
    4922 requests sent out
Icmp:
    0 ICMP messages received
    0 input ICMP message failed.
    ICMP input histogram:
    8 ICMP messages sent
    0 ICMP messages failed
    ICMP output histogram:
        destination unreachable: 8
IcmpMsg:
        OutType3: 8
Tcp:
    27 active connections openings
    2 passive connection openings
    0 failed connection attempts
    0 connection resets received
    2 connections established
    7723 segments received
    4862 segments send out
    9 segments retransmited
    0 bad segments received.
    1 resets sent
Udp:
    40 packets received
    0 packets to unknown port received.
    0 packet receive errors
    43 packets sent
UdpLite:
TcpExt:
    23 TCP sockets finished time wait in fast timer
    37 delayed acks sent
    2 packets directly queued to recvmsg prequeue.
    6528 packets header predicted
    277 acknowledgments not containing data received
    931 predicted acknowledgments
    0 TCP data loss events
    2 other TCP timeouts
    1 DSACKs sent for old packets
    1 connections aborted due to timeout
IpExt:
    InBcastPkts: 7
    InOctets: 7727174
    OutOctets: 457355
    InBcastOctets: 1648     

d.顯示所有狀態的信息

netstat -a ,顯示所有協議的所有狀態的信息;
netstat -at ,顯示tcp協議的所有狀態的信息;
netstat -au,顯示udp協議的所有狀態的信息;
netstat -an,顯示所有協議的所有狀態的信息,其中主機名和服務名以ip和端口來表示;
netstat -atn,顯示tcp協議的所有狀態的信息,其中主機名和服務名以ip和端口來表示;
netstat -aun,顯示udp協議的所有狀態的信息,其中主機名和服務名以ip和端口來表示;

[root@localhost ~]# netstat -atn
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      
tcp        0      0 192.168.56.66:22            192.168.56.1:6739           ESTABLISHED 
tcp        0     52 192.168.56.66:22            192.168.56.1:6738           ESTABLISHED 
tcp        0      0 :::22                       :::*                        LISTEN      
tcp        0      0 ::1:25                      :::*                        LISTEN      
[root@localhost ~]# netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 *:ssh                       *:*                         LISTEN      
tcp        0      0 localhost:smtp              *:*                         LISTEN      
tcp        0      0 192.168.56.66:ssh           192.168.56.1:6739           ESTABLISHED 
tcp        0     52 192.168.56.66:ssh           192.168.56.1:6738           ESTABLISHED 
tcp        0      0 *:ssh                       *:*                         LISTEN      
tcp        0      0 localhost:smtp              *:*                         LISTEN    

e.以數字格式顯示tcp和udp協議的所有監聽狀態和所有狀態的信息(要帶上具體程序名)

netstat -nltup,以數字格式顯示tcp和udp協議的所有監聽狀態的信息,並附上程序名;
netstat -natup,以數字格式顯示tcp和udp協議的所有狀態的信息,並附上程序名;

[root@localhost ~]# netstat -nltup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1476/sshd           
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1555/master         
tcp        0      0 :::22                       :::*                        LISTEN      1476/sshd           
tcp        0      0 ::1:25                      :::*                        LISTEN      1555/master       

[root@localhost ~]# netstat -natup
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1476/sshd           
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1555/master         
tcp        0      0 192.168.56.66:22            192.168.56.1:6739           ESTABLISHED 1706/sshd           
tcp        0     52 192.168.56.66:22            192.168.56.1:6738           ESTABLISHED 1688/sshd           
tcp        0      0 :::22                       :::*                        LISTEN      1476/sshd           
tcp        0      0 ::1:25                      :::*                        LISTEN      1555/master  

f.擴展信息的顯示
[root@localhost ~]# netstat -natupe
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       User       Inode      PID/Program name   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      0          13529      1476/sshd           
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      0          13741      1555/master         
tcp        0      0 192.168.56.66:22            192.168.56.1:6739           ESTABLISHED 0          14530      1706/sshd           
tcp        0      0 192.168.56.66:22            192.168.56.1:6738           ESTABLISHED 0          14412      1688/sshd           
tcp        0      0 :::22                       :::*                        LISTEN      0          13532      1476/sshd           
tcp        0      0 ::1:25                      :::*                        LISTEN      0          13742      1555/master         
[root@localhost ~]# netstat -natup
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1476/sshd           
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1555/master         
tcp        0      0 192.168.56.66:22            192.168.56.1:6739           ESTABLISHED 1706/sshd           
tcp        0     52 192.168.56.66:22            192.168.56.1:6738           ESTABLISHED 1688/sshd           
tcp        0      0 :::22                       :::*                        LISTEN      1476/sshd           
tcp        0      0 ::1:25                      :::*                        LISTEN      1555/master   

加上-e的結果中多出了兩列,一列是User,另外一列是Inode。User表示對應狀態的進程的用戶屬組,如果加上-n
會以uid數字格式顯示,如果不加-n,輸出的將會是字符串標識的用戶名。而Inode表示文件inode編號,表示對應
狀態的信息打開的文件的Inode編號;

(3) route工具
參考博文:http://blog.51cto.com/nickfox/2089177

route - show / manipulate the IP routing table
route - IP路由表查看和維護管理

路由條目類型:
1>主機路由
目標地址爲單個ip
2>網絡路由
目標地址爲ip網絡
3>默認路由
目標地址爲任意網絡,0.0.0.0/0.0.0.0

查看路由:
-n:以數字地址格式顯示;
-e:以netstat -r的輸出格式顯示;
route -n
route -ne 
輸出格式說明:
Destination:目標網絡或目標主機,本機數據發往的目的地,子網或者主機。與Genmask一起構成一個網段;
Gateway:網關地址(到達目標主機或網絡的下一跳),*表示沒有設置,如果是默認網關,網關的地址必須和
自己的主機上的其中一塊網卡同一子網;如果顯式在數字格式顯示爲,會把*轉化成0.0.0.0,表示的含義是達到
目標主機或網絡不需要下一跳,就說明目標主機或網絡是本地所在的主機或網絡,無需網關或下一跳;
Genmask:指定與網絡目標地址相關聯的網掩碼(又稱子網掩碼)。子網掩碼對於IP網絡地址可以是一適當的
子網掩碼,對於主機路由是255.255.255.255。對於默認路有個,子網掩碼應該爲0.0.0.0;
Flags:標誌信息,可能標誌如下
1> U (route is up),表示路由啓用狀態,有效的;
2> H (target is a host),表示目標一個主機(主機路由);
3> G (use gateway),需要透過外部的主機 (gateway) 來轉遞封包(該行有gw);
4> R (reinstate route for dynamic routing),使用動態路由時,恢復路由資訊的旗標; 
5> D (dynamically installed by daemon or redirect),已經由服務或轉 port 功能設定爲動態路由
6> M (modified from routing daemon or redirect),路由已經被修改; 
7> A (installed by addrconf)
8> C (cache entry),緩存實體;
9> !  (reject route),這個路由將不會被接受(用來抵擋不安全的網域!)

Metric:距離、跳數。暫無用。與目標的“距離”(通常以跳數計算)。它不被最近的內核使用,但可能需要
路由守護進程;
Ref:不用管,恆爲0, 對這條路由路線的引用次數(Linux內核已不再使用);
Use:該路由被使用的次數,可以粗略估計通向指定網絡地址的網絡流量。 路線查詢次數。根據-F和-C的使用,
這將是路由高速緩存丟失(-F)或命中(-C)。
Iface:Interface to which packets for this route will be sent.
接口,即eth0,eth1等網絡接口名,爲此路由發送數據包的接口。
即爲達到目標主機或網絡,需要經過本地的接口名;

MSS:Default maximum segement size for TCP connections over this route.
TCP報文通過此路由線路時,默認最大允許的段大小;

Window:Default window size for TCP connections over this route.
TCP報文通過此路由線路時候的窗口大小(與緩衝有關的一個東西);

irtt:nitial RTT (Round Trip Time). The kernel uses this to guess about the  best  TCP  protocol  parameters
without waiting on (possibly slow) answers.
wangfan往返時長。內核可以通過該結果來評估最適用於TCP協議的參數設定。

HH (cached only):The  number  of  ARP  entries  and cached routes that refer to the hardware header 
cache for the cached route. This will be -1 if a hardware address is not needed for the interface of the 
cached route(e.g. lo).

Arp (cached only):Whether or not the hardware address for the cached route is up to date.
緩存路由的硬件地址是否是最新的。

添加路由:
route  add  [-net|-host]  target  [netmask  Nm]  [gw GW]  [[dev] If]

刪除路由:
route  del  [-net|-host] target  [gw Gw]  [netmask Nm]  [[dev] If]

a.添加網絡路由

route add -net 10.0.0.0/8 gw 192.168.27.1 dev eth1
達到網絡 10.0.0.0/8 ,下一跳(網關)爲192.168.27.1,經過本地的eth1接口。
特別說明:下一跳或者網關要與指定接口eth1在同一個網段,或者不知名eth1,讓它自動去識別;

[root@localhost ~]# route add -net 10.0.0.0/8 gw 192.168.27.1 dev eth1
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.27.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.56.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
10.0.0.0        192.168.27.1    255.0.0.0       UG    0      0        0 eth1
0.0.0.0         192.168.56.2    0.0.0.0         UG    0      0        0 eth0

b.設定默認路由(默認網關)

route add -net 0.0.0.0/0 gw 192.168.27.1 dev eth1
route add -net 0/0 gw 192.168.27.1 dev eth1
或
route add default gw 192.168.27.1 dev eth1

[root@localhost ~]# route add -net 0.0.0.0/0 gw 192.168.27.1 eth1 
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.27.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.56.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
10.0.0.0        192.168.27.1    255.0.0.0       UG    0      0        0 eth1
0.0.0.0         192.168.27.1    0.0.0.0         UG    0      0        0 eth1
0.0.0.0         192.168.56.2    0.0.0.0         UG    0      0        0 eth0

c.添加主機路由

route add -host 192.168.27.1 gw 192.168.56.2
添加到192.168.27.1這個主機或ip,下一跳(網關)爲192.168.56.2
[root@localhost ~]# route add -host 192.168.27.1 gw 192.168.56.2
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.27.1    192.168.56.2    255.255.255.255 UGH   0      0        0 eth0
192.168.27.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.56.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
10.0.0.0        192.168.27.1    255.0.0.0       UG    0      0        0 eth1
0.0.0.0         192.168.27.1    0.0.0.0         UG    0      0        0 eth1
0.0.0.0         192.168.56.2    0.0.0.0         UG    0      0        0 eth0

d.刪除主機路由

[root@localhost ~]# route del -host 192.168.27.1 gw 192.168.56.2 dev eth0
刪除達通過本地eth0網卡走192.168.56.2這個網關叨叨主機192.168.27.1的這個路由;
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.27.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.56.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
10.0.0.0        192.168.27.1    255.0.0.0       UG    0      0        0 eth1
0.0.0.0         192.168.27.1    0.0.0.0         UG    0      0        0 eth1
0.0.0.0         192.168.56.2    0.0.0.0         UG    0      0        0 eth0

e.刪除默認路由

[root@localhost ~]# route del default dev eth1
刪除eth1網卡的默認路由。(默認路由也是一個網絡路由)
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.27.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.56.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
10.0.0.0        192.168.27.1    255.0.0.0       UG    0      0        0 eth1
0.0.0.0         192.168.56.2    0.0.0.0         UG    0      0        0 eth0

c.刪除網絡路由

[root@localhost ~]# route del -net 10.0.0.0/8 dev eth1
刪除通過eh1接口,到達網絡10.0.0.0/8的路由;這裏因爲只有一條,所以沒有指定下一跳(網關信息);
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.27.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.56.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
0.0.0.0         192.168.56.2    0.0.0.0         UG    0      0        0 eth0

2.3、iproute家族常用工具

iproute來自於iproute軟件包;

[root@localhost ~]# rpm -qa|grep iproute
iproute-3.10.0-21.el7.x86_64
[root@localhost ~]# rpm -qi iproute
Name        : iproute
Version     : 3.10.0
Release     : 21.el7
Architecture: x86_64
Install Date: Tue 30 Oct 2018 05:50:04 AM CST
Group       : Applications/System
Size        : 1229304
License     : GPLv2+ and Public Domain
Signature   : RSA/SHA256, Sat 14 Mar 2015 03:56:08 PM CST, Key ID 24c6a8a7f4a80eb5
Source RPM  : iproute-3.10.0-21.el7.src.rpm
Build Date  : Fri 06 Mar 2015 11:07:32 AM CST
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://kernel.org/pub/linux/utils/net/iproute2/
Summary     : Advanced IP routing and network device configuration tools
Description :
The iproute package contains networking utilities (ip and rtmon, for example)
which are designed to use the advanced networking capabilities of the Linux
2.4.x and 2.6.x kernel.

[root@localhost ~]# rpm -ql iproute
/etc/iproute2
/etc/iproute2/ematch_map
/etc/iproute2/group
/etc/iproute2/rt_dsfield
/etc/iproute2/rt_protos
/etc/iproute2/rt_realms
/etc/iproute2/rt_scopes
/etc/iproute2/rt_tables
/etc/sysconfig/cbq
/etc/sysconfig/cbq/avpkt
/etc/sysconfig/cbq/cbq-0000.example
/usr/lib64/tc
/usr/lib64/tc/experimental.dist
/usr/lib64/tc/m_ipt.so
/usr/lib64/tc/m_xt.so
/usr/lib64/tc/normal.dist
/usr/lib64/tc/pareto.dist
/usr/lib64/tc/paretonormal.dist
/usr/sbin/arpd
/usr/sbin/bridge
/usr/sbin/cbq
/usr/sbin/ctstat
/usr/sbin/genl
/usr/sbin/ifcfg
/usr/sbin/ifstat
/usr/sbin/ip
/usr/sbin/lnstat
/usr/sbin/nstat
/usr/sbin/routef
/usr/sbin/routel
/usr/sbin/rtacct
/usr/sbin/rtmon
/usr/sbin/rtpr
/usr/sbin/rtstat
/usr/sbin/ss
/usr/sbin/tc
......

關於iproute家族和ifcfg家族的對比圖解:
linux網絡概述

(1) ip工具

ip OBJECT 

常用的基礎的OBJECT有:
link,addr(address),route,netns
查看幫助手冊:
CentOS 6.x:
man ip 

CentOS 7.x:
man ip
man ip OBJECT 或 man ip-OBJECT
CentOS 7實現來把各個子功能man手冊分開來管理。可以單獨查看

1> ip link - network device configuration(網絡設備管理)

ip link set - change device attributes(改變設備的屬性)
    dev DEVICE(默認選項):指明要管理的設備,dev關鍵字可省略;
        up and down:設置網卡的狀態,up表示啓用,down表示停用;
        multicast on or multicast off:啓用或關閉設備的多波(組播)特性;
        name NAME:重命名接口
    mtu NUMBER:改變網卡設備的最大傳輸單源大小,默認是1500;
        netns PID:ns爲namespace,用於將接口移動到指定的網絡名稱空間;

ip link show - display device attributes(顯示設備屬性信息)
            dev NAME (default):查看指定網卡;
            up:只查看啓動狀態的網卡;

ip link help - 查看幫助信息

示例:
a.查看網卡設備屬性信息

[root@localhost ~]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff

[root@localhost ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff

[root@localhost ~]# ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip link show up
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff

[root@localhost ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:25:9d:07 brd ff:ff:ff:ff:ff:ff      

b.關閉eth1網卡的組播特性以及修改eth1網卡的最大傳輸單元爲2000

[root@localhost ~]# ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip link show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff

[root@localhost ~]# ip link set dev eth1 multicast off
[root@localhost ~]# ip link show eth1
3: eth1: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip link set dev eth1 mtu 2000
[root@localhost ~]# ip link show eth1
3: eth1: <BROADCAST,UP,LOWER_UP> mtu 2000 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip link set eth1 multicast on ; ip link set eth1 mtu 1500
[root@localhost ~]# ip link show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff

c.設置網卡狀態

[root@localhost ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip link set eth1 down
[root@localhost ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip link show up
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip link set eth1 up

d.重命名接口

[root@localhost ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip link set eth1 name eth1:new
RTNETLINK answers: Device or resource busy  #對網卡重命名,要先把其狀態置爲下線(down)
[root@localhost ~]# ip link set eth1 down
[root@localhost ~]# ip link set eth1 name eth1:new
[root@localhost ~]# ip link show 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
3: eth1:new: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN ioctl(SIOCGIFXQLEN) failed: No such device

    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip link set eth1:new up
[root@localhost ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:DC:BA:F3  
          inet addr:192.168.56.66  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fedc:baf3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:12221 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8599 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:8238085 (7.8 MiB)  TX bytes:1038202 (1013.8 KiB)

eth1: error fetching interface information: Device not found #iproute和ifcfg家族設別方式不一樣,實驗後,記得
把網卡名字還原。

2> ip address - protocol address management(協議地址管理)

ip address add - add new protocol address(添加新的ip地址)
    ip address  IFADDR dev IFACE
            label NAME:爲額外添加的地址指明接口別名;
                broadcast ADDRESS:廣播地址,會根據ip和netmask自動計算得到;
                scope SCOPE_VALUE:
                    global:全局可用;
                        link:接口可用;
                        host:僅本機可用;
                up:只列出啓動的接口;        

ip address delete - delete protocol address(刪除ip地址)
    ip addr  delete  IFADDR  dev  IFACE

ip address show - look at protocol addresses(查看ip地址)
    ip  addr   list  [IFACE]

ip address flush - flush protocol addresses(刷新協議地址)
    ip  addr  flush  dev  IFACE

示例:
a.查看網卡

[root@localhost ~]# ip address 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.66/24 brd 192.168.56.255 scope global eth0
    inet6 fe80::20c:29ff:fedc:baf3/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.66/24 brd 192.168.56.255 scope global eth0
    inet6 fe80::20c:29ff:fedc:baf3/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip address list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.66/24 brd 192.168.56.255 scope global eth0
    inet6 fe80::20c:29ff:fedc:baf3/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff

[root@localhost ~]# ip link set eth1 down
[root@localhost ~]# ip addr show up #大部分時候,address可以縮寫爲addr或者其他不能被誤解的
字符串(ad,a有些場景都行)
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.66/24 brd 192.168.56.255 scope global eth0
    inet6 fe80::20c:29ff:fedc:baf3/64 scope link 
       valid_lft forever preferred_lft forever      

b.設置ip地址和設置別名接口ip地址

[root@localhost ~]# ip addr add 172.16.0.12/24 dev eth1
[root@localhost ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.66/24 brd 192.168.56.255 scope global eth0
    inet6 fe80::20c:29ff:fedc:baf3/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.12/24 scope global eth1
    inet6 fe80::20c:29ff:fedc:bafd/64 scope link 
       valid_lft forever preferred_lft forever

[root@localhost ~]# ip addr add 172.16.0.10/24 label eth1:1 dev eth1
#設置的別名接口地址名字要DEVICE_NAME:number
[root@localhost ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.66/24 brd 192.168.56.255 scope global eth0
    inet6 fe80::20c:29ff:fedc:baf3/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.12/24 scope global eth1
    inet 172.16.0.10/24 scope global secondary eth1:1
    inet6 fe80::20c:29ff:fedc:bafd/64 scope link 
       valid_lft forever preferred_lft forever
[root@localhost ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:DC:BA:F3  
          inet addr:192.168.56.66  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fedc:baf3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:13830 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9946 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:8390319 (8.0 MiB)  TX bytes:1222480 (1.1 MiB)

eth1      Link encap:Ethernet  HWaddr 00:0C:29:DC:BA:FD  
          inet addr:172.16.0.12  Bcast:0.0.0.0  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fedc:bafd/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:78 errors:0 dropped:0 overruns:0 frame:0
          TX packets:36 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:10455 (10.2 KiB)  TX bytes:2808 (2.7 KiB)

eth1:1    Link encap:Ethernet  HWaddr 00:0C:29:DC:BA:FD  
          inet addr:172.16.0.10  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

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:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)             

c.刪除ip地址

[root@localhost ~]# ip address delete 172.16.0.10 dev eth1:1
Warning: Executing wildcard deletion to stay compatible with old scripts.
         Explicitly specify the prefix length (172.16.0.10/32) to avoid this warning.
         This special behaviour is likely to disappear in further releases,
         fix your scripts!
#這裏的警告的意思是,我刪除地址的時候,沒有給定子網掩碼,可能會導致整個網絡被刪除,
172.16.0.10可以代表多個子網。(不過這裏不影響,我們就這一個別名的地址)

[root@localhost ~]# ip address delete 172.16.0.12/24 dev eth1
[root@localhost ~]# ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.66/24 brd 192.168.56.255 scope global eth0
    inet6 fe80::20c:29ff:fedc:baf3/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ff
    inet6 fe80::20c:29ff:fedc:bafd/64 scope link 
       valid_lft forever preferred_lft forever

3> ip route - routing table management(路由表管理)

ip route add - add new route(添加新的路由)
ip route change - change route(修改路由)
ip route replace - change or add new one(修改或新增)
ip route delete - delete route(刪除路由)
ip route show -  list routes(查看路由)
ip route flush - flush routing tables(刷新路由表)
ip route get - get a single route(獲取一個單獨的路由)

ip  route  add  TYPE PREFIX  via GW  [dev  IFACE]  [src SOURCE_IP]
ip  route  del  TYPE PRIFIX
ip  route  get  TYPE PRIFIX

示例:
a.查看路由

[root@localhost ~]# ip addr add 172.16.0.10/24 dev eth1
[root@localhost ~]# ip route show
172.16.0.0/24 dev eth1  proto kernel  scope link  src 172.16.0.10 
192.168.56.0/24 dev eth0  proto kernel  scope link  src 192.168.56.66 
169.254.0.0/16 dev eth0  scope link  metric 1002 
default via 192.168.56.2 dev eth0 

b.添加網絡路由

設定通過eth1網卡通過下一跳(網關)爲172.16.0.1到達網絡10.0.0.0/8
[root@localhost ~]# ip addr add 172.16.0.10/24 dev eth1
[root@localhost ~]# ip route show
172.16.0.0/24 dev eth1  proto kernel  scope link  src 172.16.0.10 
192.168.56.0/24 dev eth0  proto kernel  scope link  src 192.168.56.66 
169.254.0.0/16 dev eth0  scope link  metric 1002 
default via 192.168.56.2 dev eth0 
[root@localhost ~]# ip route add 10.0.0.0/8 via 172.16.0.1 dev eth1
[root@localhost ~]# ip route show
172.16.0.0/24 dev eth1  proto kernel  scope link  src 172.16.0.10 
192.168.56.0/24 dev eth0  proto kernel  scope link  src 192.168.56.66 
169.254.0.0/16 dev eth0  scope link  metric 1002 
10.0.0.0/8 via 172.16.0.1 dev eth1 
default via 192.168.56.2 dev eth0 

c.添加主機路由

添加到主機172.16.0.1的路由,通過192.168.56.2網關,走本地eth0接口
[root@localhost ~]# ip route add 172.16.0.1 via 192.168.56.2 dev eth0
[root@localhost ~]# ip route show
172.16.0.1 via 192.168.56.2 dev eth0 
172.16.0.0/24 dev eth1  proto kernel  scope link  src 172.16.0.10 
192.168.56.0/24 dev eth0  proto kernel  scope link  src 192.168.56.66 
169.254.0.0/16 dev eth0  scope link  metric 1002 
10.0.0.0/8 via 172.16.0.1 dev eth1 
default via 192.168.56.2 dev eth0 

d.添加默認路由

[root@localhost ~]# ip route delete default via 192.168.56.2
[root@localhost ~]# ip route show
192.168.56.0/24 dev eth0  proto kernel  scope link  src 192.168.56.66 
169.254.0.0/16 dev eth0  scope link  metric 1002 
[root@localhost ~]# ip route add default via 192.168.56.2 dev eth0
[root@localhost ~]# ip route show
192.168.56.0/24 dev eth0  proto kernel  scope link  src 192.168.56.66 
169.254.0.0/16 dev eth0  scope link  metric 1002 
default via 192.168.56.2 dev eth0 

e.刪除網絡路由

[root@localhost ~]# ip route delete 10.0.0.0/8 dev eth1
[root@localhost ~]# ip route show
172.16.0.0/24 dev eth1  proto kernel  scope link  src 172.16.0.10 
192.168.56.0/24 dev eth0  proto kernel  scope link  src 192.168.56.66 
169.254.0.0/16 dev eth0  scope link  metric 1002 
default via 192.168.56.2 dev eth0 

f.刪除主機路由

[root@localhost ~]# ip route add 172.16.0.1 via 192.168.56.2 dev eth0
[root@localhost ~]# ip route show
172.16.0.1 via 192.168.56.2 dev eth0 
172.16.0.0/24 dev eth1  proto kernel  scope link  src 172.16.0.10 
192.168.56.0/24 dev eth0  proto kernel  scope link  src 192.168.56.66 
169.254.0.0/16 dev eth0  scope link  metric 1002 
default via 192.168.56.2 dev eth0 
[root@localhost ~]# ip route delete 172.16.0.1 via 192.168.56.2 dev eth0
[root@localhost ~]# ip route show
172.16.0.0/24 dev eth1  proto kernel  scope link  src 172.16.0.10 
192.168.56.0/24 dev eth0  proto kernel  scope link  src 192.168.56.66 
169.254.0.0/16 dev eth0  scope link  metric 1002 
default via 192.168.56.2 dev eth0 

g.刪除默認路由

[root@localhost ~]# ip route show
172.16.0.0/24 dev eth1  proto kernel  scope link  src 172.16.0.10 
192.168.56.0/24 dev eth0  proto kernel  scope link  src 192.168.56.66 
169.254.0.0/16 dev eth0  scope link  metric 1002 
default via 192.168.56.2 dev eth0 

[root@localhost ~]# ip route delete default dev eth0
[root@localhost ~]# ip route show
172.16.0.0/24 dev eth1  proto kernel  scope link  src 172.16.0.10 
192.168.56.0/24 dev eth0  proto kernel  scope link  src 192.168.56.66 
169.254.0.0/16 dev eth0  scope link  metric 1002 

4> ip netns - process network namespace management(進程網絡命名空間管理)

ip  netns  list:列出所有的netns
ip  netns  add  NAME:創建指定的netns
ip  netns  del  NAME:刪除指定的netns
ip  netns   exec  NAME  COMMAND:在指定的netns中運行命令

示例:(CentOS 7.x上操作)
a.新增一個網絡命名空間,名字叫mynetns

[root@localhost ~]# ip netns help
Usage: ip netns list
       ip netns add NAME
       ip netns delete NAME
       ip netns identify PID
       ip netns pids NAME
       ip netns exec NAME cmd ...
       ip netns monitor
[root@localhost ~]# ip netns add mynetns
[root@localhost ~]# ip netns list
mynetns

b.把網絡接口eno33554984添加到netns命名空間中,並驗證

[root@localhost ~]# ip link set netns mynetns dev eno33554984
[root@localhost ~]# ip netns exec mynetns ip link show
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
3: eno33554984: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
    link/ether 00:0c:29:25:9d:11 brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:25:9d:07 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.77/24 brd 192.168.56.255 scope global eno16777736
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe25:9d07/64 scope link 
       valid_lft forever preferred_lft forever

c.刪除網絡命名空間,並還回網絡接口

[root@localhost ~]# ip netns delete mynetns
[root@localhost ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:25:9d:07 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.77/24 brd 192.168.56.255 scope global eno16777736
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe25:9d07/64 scope link 
       valid_lft forever preferred_lft forever
3: eno33554984: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:25:9d:11 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::20c:29ff:fe25:9d11/64 scope link 
       valid_lft forever preferred_lft forever

(2) ss工具

ss  [options]  [ FILTER ]
    選項:
    -t, --tcp:TCP協議的相關連接
    -u, --udp:UDP相關的連接
    -w, --raw:raw socket相關的連接
    -l, --listening:監聽狀態的連接
    -a, --all:所有狀態的連接
    -n, --numeric:數字格式
    -p, --processes:相關的程序及其PID
    -e, --extended:擴展格式信息
  -m, --memory:內存用量
    -o, --options:計時器信息

    FILTER := [ state TCP-STATE ]  [ EXPRESSION ]

        TCP的常見狀態:
            TCP FSM:
                LISTEN:監聽
                ESTABLISEHD:建立的連接
                FIN_WAIT_1:
                FIN_WAIT_2:
                SYN_SENT:
                SYN_RECV:
                CLOSED:

        EXPRESSION:
            dport = 
            sport = 
                示例:'( dport = :22 or sport = :22)'
                    ~]# ss   -tan    '(  dport = :22 or sport = :22  )'
                    ~]# ss  -tan  state  ESTABLISHED

ss和netstat很多選項都兼容,這裏基礎選項不舉例了。
示例:
a.基於端口和狀態直接過濾(不藉助於grep工具)

[root@localhost ~]# ss -tan '( dport = :22 or sport = :22 )'
State      Recv-Q Send-Q                                 Local Address:Port                                   Peer Address:Port 
LISTEN     0      128                                                *:22                                                *:*     
ESTAB      0      0                                      192.168.56.77:22                                     192.168.56.1:10108 
ESTAB      0      0                                      192.168.56.77:22                                     192.168.56.1:5201  
ESTAB      0      0                                      192.168.56.77:22                                     192.168.56.1:10109 
LISTEN     0      128                                               :::22                                               :::*     

[root@localhost ~]# ss -tan state ESTABLISHED
Recv-Q Send-Q                                      Local Address:Port                                        Peer Address:Port 
0      52                                          192.168.56.77:22                                          192.168.56.1:10108 
0      0                                           192.168.56.77:22                                          192.168.56.1:5201  
0      0                                           192.168.56.77:22                                          192.168.56.1:10109 

2.4、其他常用網絡工具

(1) hostname
hostname命令:
查看:hostname
配置:hostname HOSTNAME
當前系統有效,重啓後無效;

(2) hostnamectl
hostnamectl命令(CentOS 7):
hostnamectl status:顯示當前主機名信息;
hostnamectl set-hostname:設定主機名,永久有效;

2.5、linux網絡管理

(1) CentOS 6.x 和CentOS7.x 配置網絡地址

  • 配置文件:
    IP/NETMASK/GW/DNS等屬性的配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE
    IFACE:接口名稱;

  • 配置文件修改說明:
    配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE通過大量參數來定義接口的屬性;其可通過vim等文本編輯器直接修改,也可以使用專用的命令的進行修改(CentOS 6:system-config-network (setup),CentOS 7: nmtui)

  • 配置文件常用參數說明
    ifcfg-IFACE配置文件參數:
    DEVICE:此配置文件對應的設備的名稱;
    ONBOOT:在系統引導過程中,是否激活此接口;
    UUID:此設備的惟一標識;
    IPV6INIT:是否初始化IPv6;
    BOOTPROTO:激活此接口時使用什麼協議來配置接口屬性,常用的有dhcp、bootp、static、none;
    TYPE:接口類型,常見的有Ethernet, Bridge;
    DNS1:第一DNS服務器指向;
    DNS2:備用DNS服務器指向;
    DOMAIN:DNS搜索域;
    IPADDR: IP地址;
    NETMASK:子網掩碼;CentOS 7支持使用PREFIX以長度方式指明子網掩碼;
    GATEWAY:默認網關;
    USERCTL:是否允許普通用戶控制此設備;
    PEERDNS:如果BOOTPROTO的值爲“dhcp”,是否允許dhcp server分配的dns服務器指向覆蓋本地手動指定的DNS服務器指向;默認爲允許;
    HWADDR:設備的MAC地址;
    NM_CONTROLLED:是否使用NetworkManager服務來控制接口;

  • CentOS 6.x示例配置
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cat ifcfg-eth0 
DEVICE=eth0
HWADDR=00:0C:29:DC:BA:F3
TYPE=Ethernet
UUID=d670657b-13ee-4680-929f-d587db3d1871
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=192.168.56.66
PREFIX=24
GATEWAY=192.168.56.2
DNS1=114.114.114.114
DNS2=8.8.8.8
  • CentOS 7.x示例配置

    [root@localhost ~]# cd /etc/sysconfig/network-scripts/
    [root@localhost network-scripts]# cat ifcfg-eno16777736 
    TYPE=Ethernet
    BOOTPROTO=none
    DEFROUTE=yes
    PEERDNS=yes
    PEERROUTES=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_PEERDNS=yes
    IPV6_PEERROUTES=yes
    IPV6_FAILURE_FATAL=no
    NAME=eno16777736
    UUID=ad6d3532-c6f5-4471-a6af-248badd28051
    DEVICE=eno16777736
    ONBOOT=yes
    IPADDR=192.168.56.77
    PREFIX=24
    GATEWAY=192.168.56.2
    DNS1=8.8.8.8
    DNS2=114.114.114.114
  • 網絡服務有兩個
network
NetworkManager
#建議禁用NetworkManager網絡
  • 管理網絡服務
CentOS 6:  service  SERVICE  {start|stop|restart|status}
CentOS 7:systemctl  {start|stop|restart|status}  SERVICE[.service]
重啓:
CentOS 6:# service  network  restart
CentOS 7:# systemctl  restart  network.service

禁用(開機不啓用):
CentOS 6:chkconfig SERVICE off
CentOS 7:systemctl disable SERVICE[.service]

(2) CentOS 6.x 和 CentOS 7.x 配置路由
路由的相關配置文件:/etc/sysconfig/networkj-scripts/route-IFACE
支持兩種配置方式,但不可混用
1> 每行一個路由條目:
TARGET via GW

2> 每三行一個路由條目:
ADDRESS#=TARGET
NETMASK#=MASK
GATEWAY#=NEXTHOP

(3) CentOS 6.x 和 CentOS 7.x 配置主機名和DNS

CentOS 6修改主機名的配置文件:/etc/sysconfig/network
CentOS 7修改主機名的配置文件:/etc/hostname

不重啓修改理解生效主機名:
方法1:先修改主機名配置文件,然後利用hostname命令修改;
方法2:CentOS 7.x纔有的工具(立即生效,配置文件也修改來),CentOS 6.x沒有。
[root@localhost ~]# hostnamectl set-hostname myserver.com
[root@localhost ~]# hostname
myserver.com
[root@localhost ~]# cat /etc/hostname 
myserver.com

DNS配置文件(CentOS 6.x和CentOS7.x一樣):/etc/resolv.conf 
書寫格式:
nameserver DNS-SERVER1
nameserver DNS-SERVER2
nameserver DNS-SERVER3
一般只會設置2個,一主一備

2.6、vmstat和htop工具

vmstat最小化安裝有,htop最小化安裝沒有。
安裝htop要保證epel源可用;
CentOS 6.x安裝EPEL源:
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

CentOS 7.x安裝EPEL源:
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

安裝htop工具:
yum -y install htop

vmstat工具:
參考:
https://www.cnblogs.com/feng0815/p/8613547.html
https://blog.csdn.net/ty_hf/article/details/63394960
https://www.cnblogs.com/xqzt/p/5448983.html
https://www.cnblogs.com/kerrycode/p/6208257.html

[root@myserver ~]# which vmstat
/usr/bin/vmstat
[root@myserver ~]# rpm -qf /usr/bin/vmstat 
procps-ng-3.3.10-3.el7.x86_64
vmstat是由procps-ng軟件包提供;

vmstat - Report virtual memory statistics
vmstat - 虛擬內存統計
vmstat [options] [delay [count]]
vmstat功能遠不止統計內存,它的大概功能如下:
vmstat reports information about processes, memory, paging, block IO, traps, disks and cpu activity.
可對操作系統的虛擬內存、進程、IO讀寫、磁盤、CPU活動等進行監視。

選項:
delay  The delay between updates in seconds.  If no delay is specified, only one report is printed with 
the average values since boot.
刷新時間間隔。如果不指定,只顯示一條結果。

count  Number of updates.  In absence of count, when delay is defined, default is infinite.
刷新次數。如果不指定刷新次數,但指定了刷新時間間隔,這時刷新次數爲無窮(會一直刷)。

-f: 顯示此係統啓動以來的forks的總數,包括fork、vfork和clone system calls;
-m, --slabs: 顯示slabinfo信息;
-n, --one-header: 只顯示頭信息,不週期性顯示.也就是說開啓這個參數,只顯示頭部信息一次;
-s, --stats: 顯示各種事件計數器表和內存統計信息,這顯示不重複。
-d, --disk: 顯示磁盤統計數據(內核要求2.5.70 或以上版本)
-D, --disk-sum: Report some summary statistics about disk activity.報告磁盤一些活動的統計數據;
-t, --timestamp: 給顯示的結果每行追加一個時間戳信息;
-p, --partition <dev>: 顯示關於分區的統計信息(內核要求2.5.70或以上版本)
-w, --wide: 可以擴大字段長度,當內存較大時,默認長度不夠完全展示內存。
-S, --unit character: 參數S控制輸出性能指標的單位,k(1000) K(1024) 或 M(1048576) 默認單位爲K(1024 bytes)

輸出字段含義:

FIELD DESCRIPTION FOR VM MODE
   Procs
       r: The number of runnable processes (running or waiting for run time).
          等待運行的進程數。如果等待運行的進程數越多,意味着CPU非常繁忙(CPU上等待運行的任務的隊列長度)。
          如果該參數長期大於和等於邏輯cpu個數,則CPU資源可能存在較大的瓶頸。
       b: The number of processes in uninterruptible sleep.
          處於不可中斷睡眠態的進程個數,進程被阻塞的。主要是指被資源阻塞的進程隊列數(比如IO資源、頁面調度等),
          當這個值較大時,需要根據應用程序來進行分析,比如數據庫產品,中間件應用等。

   Memory
       swpd: the amount of virtual memory used.
             已使用的虛擬內存大小。如果虛擬內存使用較多,可能系統的物理內存比較吃緊,
             需要採取合適的方式來減少物理內存的使用。swapd不爲0,並不意味物理內存吃緊,
             如果swapd沒變化,si、so的值長期爲0,這也是沒有問題的

       free: the amount of idle memory.
             空閒的物理內存的大小.

       buff: the amount of memory used as buffers.
             用來做buffer(緩存,主要用於塊設備緩存)的內存數,單位:KB

       cache: the amount of memory used as cache.
             用來做cache(緩存,主要用於緩存文件)的內存,單位:KB

       inact: the amount of inactive memory.  (-a option)
             不活躍的內存的總量;(-a選項給出纔有該列值;)

       active: the amount of active memory.  (-a option)
             活躍內存的總量。(-a選項給出纔有該列值;)
   Swap
       si: Amount of memory swapped in from disk (/s).
           從磁盤交換到內存的交換頁數量,單位:KB/秒。

       so: Amount of memory swapped to disk (/s).
           從內存交換到磁盤的交換頁數量,單位:KB/秒

   內存夠用的時候,這2個值都是0,如果這2個值長期大於0時,系統性能會受到影響,磁盤IO和CPU資源都會被消耗。
   當看到空閒內存(free)很少的或接近於0時,就認爲內存不夠用了,這個是不正確的。不能光看這一點,還要結合si和so,
   如果free很少,但是si和so也很少(大多時候是0),那麼不用擔心,系統性能這時不會受到影響的。           

   當內存的需求大於RAM的數量,服務器啓動了虛擬內存機制,通過虛擬內存,可以將RAM段移到SWAP DISK的特殊磁盤段上,
   這樣會 出現虛擬內存的頁導出和頁導入現象,頁導出並不能說明RAM瓶頸,虛擬內存系統經常會對內存段進行頁導出,
   但頁導入操作就表明了服務器需要更多的內存了, 頁導入需要從SWAP DISK上將內存段複製回RAM,導致服務器速度變慢。        

   IO
       bi: Blocks received from a block device (blocks/s).
           每秒從塊設備接收到的塊數,單位:塊/秒 也就是讀塊設備。

       bo: Blocks sent to a block device (blocks/s).
           每秒發送到塊設備的塊數,單位:塊/秒  也就是寫塊設備。

   System
       in: The number of interrupts per second, including the clock.
           每秒的中斷數,包括時鐘中斷

       cs: The number of context switches per second.
           每秒的環境(上下文)切換次數。比如我們調用系統函數,就要進行上下文切換,
           而過多的上下文切換會浪費較多的cpu資源,這個數值應該越小越好。
   CPU
       These are percentages of total CPU time.
       us: Time spent running non-kernel code.  (user time, including nice time
           用戶CPU時間(非內核進程佔用時間)(單位爲百分比)。 us的值比較高時,說明用戶進程消耗的CPU時間多

       sy: Time spent running kernel code.  (system time)
           系統使用的CPU時間(單位爲百分比)。sy的值高時,說明系統內核消耗的CPU資源多,這並不是良性表現,
           我們應該檢查原因。 

       id: Time spent idle.  Prior to Linux 2.5.41, this includes IO-wait time.
           空閒的CPU的時間(百分比),在Linux 2.5.41之前,這部分包含IO等待時間。

       wa: Time spent waiting for IO.  Prior to Linux 2.5.41, included in idle.
           等待IO的CPU時間,在Linux 2.5.41之前,這個值爲0 .這個指標意味着CPU在等待硬盤讀寫操作的時間,用百分比表示。
           wait越大則機器io性能就越差。說明IO等待比較嚴重,這可能由於磁盤大量作隨機訪問造成,也有可能磁盤出現瓶頸(塊操作)。

       st: Time stolen from a virtual machine.  Prior to Linux 2.6.11, unknown.
           因爲虛擬技術被偷走的時間;

FIELD DESCRIPTION FOR DISK MODE
   Reads
       total: Total reads completed successfully
              成功完成讀總數;
       merged: grouped reads (resulting in one I/O)
               分區讀;
       sectors: Sectors read successfully
               扇區讀成功;
       ms: milliseconds spent reading
            讀使用的時間,單位毫秒;

   Writes
       total: Total writes completed successfully
              總寫成功的數量;

       merged: grouped writes (resulting in one I/O)
              分組寫;

       sectors: Sectors written successfully
                寫扇區成功;

       ms: milliseconds spent writing
           寫使用的時間,單位毫秒;

   IO
       cur: I/O in progress
       s: seconds spent for I/O

FIELD DESCRIPTION FOR DISK PARTITION MODE
       reads: Total number of reads issued to this partition
              向指定分區發起的總讀取數;

       read sectors: Total read sectors for partition
                     分區讀取扇區的總數;

       writes : Total number of writes issued to this partition
                向指定分區發起的寫入的總數;

       requested writes: Total number of write requests made for partition
                         用於分區的寫入請求總數

FIELD DESCRIPTION FOR SLAB MODE
       cache: Cache name,緩存的名字;
       num: Number of currently active objects,當前活躍的對象數量;
       total: Total number of available objects,可用的對象的總數;
       size: Size of each object,每個對象使用的大小;
       pages: Number of pages with at least one active object,具有至少一個活動對象的頁面數;

htop工具:
選項:
-d #:指定延遲時間間隔;
-u UserName:僅顯示指定用戶的進程;
-s COLUME:以指定字段進行排序;
子命令:
l:顯示選定的進程打開的文件列表;
s:跟蹤選定的進程的系統調用;
t:以層級關係顯示各進程狀態;
a:將選定的進程綁定至某指定的CPU核心;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章