linux网络概述
一、TCP/IP協議棧和OSI協議棧
摘抄和參考博文地址:
參考博文地址1
參考博文地址2
參考博文地址3
參考博文地址4
1.1、OSI協議棧
??OSI是Open System Interconnection的縮寫,意為開放式系統互聯。國際標準化組織(ISO)制定了OSI模型,該模型定義了不同計算機互聯的標準,是設計和描述計算機網絡通信的基本框架。OSI模型把網絡通信的工作分為7層,分別是物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。
請看下面幾幅圖:
-
物理層(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協議分層接口就不太規范,是比較實用的一種規范。請看對應圖解:
具體對應層的實現功能可以參照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 ] doif ping -b -c 2 ${string}.${i} &>/dev/null;thenecho "[${string}.${i}]: success!"elseecho "[${string}.${i}]: fail!"filet i++ done [root@localhost ~]# cat until.sh #! /bin/bash string=192.168.56 i=1 until [ $i -gt 255 ] doif ping -b -c 2 ${string}.${i} &>/dev/null;thenecho "[${string}.${i}]: success!"elseecho "[${string}.${i}]: fail!"filet 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工具
為了演示效果,我以CentOS 6.x為例,安裝了雙網卡:
a. 查看所有接口信息
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.0inet6 addr: fe80::20c:29ff:fedc:baf3/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:6335 errors:0 dropped:0 overruns:0 frame:0TX packets:3663 errors:0 dropped:0 overruns:0 carrier:0collisions: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:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions: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.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:65536 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions: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.0inet6 addr: fe80::20c:29ff:fedc:baf3/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:6433 errors:0 dropped:0 overruns:0 frame:0TX packets:3742 errors:0 dropped:0 overruns:0 carrier:0collisions: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.0inet6 addr: fe80::20c:29ff:fedc:bafd/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:3 errors:0 dropped:0 overruns:0 carrier:0collisions: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.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:65536 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions: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 eth0b.
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 received0 forwarded0 incoming packets discarded7763 incoming packets delivered4922 requests sent out Icmp:0 ICMP messages received0 input ICMP message failed.ICMP input histogram:8 ICMP messages sent0 ICMP messages failedICMP output histogram:destination unreachable: 8 IcmpMsg:OutType3: 8 Tcp:27 active connections openings2 passive connection openings0 failed connection attempts0 connection resets received2 connections established7723 segments received4862 segments send out9 segments retransmited0 bad segments received.1 resets sent Udp:40 packets received0 packets to unknown port received.0 packet receive errors43 packets sent UdpLite: TcpExt:23 TCP sockets finished time wait in fast timer37 delayed acks sent2 packets directly queued to recvmsg prequeue.6528 packets header predicted277 acknowledgments not containing data received931 predicted acknowledgments0 TCP data loss events2 other TCP timeouts1 DSACKs sent for old packets1 connections aborted due to timeout IpExt:InBcastPkts: 7InOctets: 7727174OutOctets: 457355InBcastOctets: 1648d.顯示所有狀態的信息
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 *:* LISTENe.以數字格式顯示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工具
參考博文:https://blog.51cto.com/nickfox/2089177
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 eth0b.設定默認路由(默認網關)
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 eth0c.添加主機路由
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 eth0d.刪除主機路由
[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 eth0e.刪除默認路由
[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 eth0c.刪除網絡路由
[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 eth02.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家族的對比圖解:
(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.查看網卡設備屬性信息
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 1000link/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 1000link/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 1000link/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 1000link/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 1000link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ffc.設置網卡狀態
[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 1000link/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 1000link/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 1000link/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 1000link/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 1000link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ff [root@localhost ~]# ip link set eth1 upd.重命名接口
[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 1000link/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 1000link/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 1000link/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 devicelink/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.0inet6 addr: fe80::20c:29ff:fedc:baf3/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:12221 errors:0 dropped:0 overruns:0 frame:0TX packets:8599 errors:0 dropped:0 overruns:0 carrier:0collisions: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 IFACElabel NAME:為額外添加的地址指明接口別名;broadcast ADDRESS:廣播地址,會根據ip和netmask自動計算得到;scope SCOPE_VALUE:global:全局可用;link:接口可用;host:僅本機可用;up:只列出啟動的接口; ip address delete - delete protocol address(刪除ip地址)ip addr delete IFADDR dev IFACEip address show - look at protocol addresses(查看ip地址)ip addr list [IFACE]ip address flush - flush protocol addresses(刷新協議地址)ip addr flush dev IFACE示例:
a.查看網卡
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:00inet 127.0.0.1/8 scope host loinet6 ::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 1000link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ffinet 192.168.56.66/24 brd 192.168.56.255 scope global eth0inet6 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 1000link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ffinet 172.16.0.12/24 scope global eth1inet6 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:00inet 127.0.0.1/8 scope host loinet6 ::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 1000link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ffinet 192.168.56.66/24 brd 192.168.56.255 scope global eth0inet6 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 1000link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ffinet 172.16.0.12/24 scope global eth1inet 172.16.0.10/24 scope global secondary eth1:1inet6 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.0inet6 addr: fe80::20c:29ff:fedc:baf3/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:13830 errors:0 dropped:0 overruns:0 frame:0TX packets:9946 errors:0 dropped:0 overruns:0 carrier:0collisions: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.0inet6 addr: fe80::20c:29ff:fedc:bafd/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:78 errors:0 dropped:0 overruns:0 frame:0TX packets:36 errors:0 dropped:0 overruns:0 carrier:0collisions: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.0UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:65536 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions: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:00inet 127.0.0.1/8 scope host loinet6 ::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 1000link/ether 00:0c:29:dc:ba:f3 brd ff:ff:ff:ff:ff:ffinet 192.168.56.66/24 brd 192.168.56.255 scope global eth0inet6 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 1000link/ether 00:0c:29:dc:ba:fd brd ff:ff:ff:ff:ff:ffinet6 fe80::20c:29ff:fedc:bafd/64 scope link valid_lft forever preferred_lft forever3> 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.查看路由
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 eth0c.添加主機路由
添加到主機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 eth0d.添加默認路由
[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 eth0e.刪除網絡路由
[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 eth0f.刪除主機路由
[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 eth0g.刪除默認路由
[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 10024> 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
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 1000link/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:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::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 1000link/ether 00:0c:29:25:9d:07 brd ff:ff:ff:ff:ff:ffinet 192.168.56.77/24 brd 192.168.56.255 scope global eno16777736valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe25:9d07/64 scope link valid_lft forever preferred_lft foreverc.刪除網絡命名空間,并還回網絡接口
[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:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::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 1000link/ether 00:0c:29:25:9d:07 brd ff:ff:ff:ff:ff:ffinet 192.168.56.77/24 brd 192.168.56.255 scope global eno16777736valid_lft forever preferred_lft foreverinet6 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 1000link/ether 00:0c:29:25:9d:11 brd ff:ff:ff:ff:ff:ffinet6 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 ESTABLISHEDss和netstat很多選項都兼容,這里基礎選項不舉例了。
示例:
a.基于端口和狀態直接過濾(不借助于grep工具)
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示例配置
-
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 - 網絡服務有兩個
- 管理網絡服務
(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.comDNS配置文件(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.rpmCentOS 7.x安裝EPEL源: yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm安裝htop工具: yum -y install htopvmstat工具:
參考:
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
htop工具:
選項:
-d #:指定延遲時間間隔;
-u UserName:僅顯示指定用戶的進程;
-s COLUME:以指定字段進行排序;
子命令:
l:顯示選定的進程打開的文件列表;
s:跟蹤選定的進程的系統調用;
t:以層級關系顯示各進程狀態;
a:將選定的進程綁定至某指定的CPU核心;
轉載于:https://blog.51cto.com/9657273/2315603
總結
- 上一篇: SpringBoot无法书写主启动类的情
- 下一篇: linux乱码问题