什麼是netstat
在Linux系統中輸入 man netstat,顯示的結果如下所示:
netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
從上面可以看出netstat命令的主要功能為:
- 顯示網路連線資訊
- 顯示路由表資訊
- 顯示網路卡統計資訊
- 顯示無效的連線資訊
- 顯示組播成員資訊
當我們看完介紹往下的時候,會看到如下的提示資訊:
This program is obsolete. Replacement for netstat is ss. Replacement for netstat -r is ip route. Replacement for netstat -i is ip -s link.
Replacement for netstat -g is ip maddr.
從上面這段話可以看到netstat已經不再維護被ss和ip命令所代替了。詳細代替命令如下所示:
ss命令
ss是Socket Statistics的縮寫,是用於統計socket資訊。幾乎所有的Linux系統都會預設包含netstat命令,但並非所有的系統都會預設包含ss命令。netstat是net-tool的成員,而ss是iproute2的成員,如果出現無法使用ss命令時,可以使用
yum -y install iproute iproute-doc
進行安裝。iproute2是一套可以支援IPv4/IPv6網路且用於管理TCP/UDP/IP網路的軟體包,因此iproute2幾乎可以代替net-tool的軟體包。以下是對比結果:
用途 | net-tool | iproute2 |
---|---|---|
地址和鏈路配置 | ifconfig | ip addr ,ip link |
路由表 | route | ip route |
arp表 | arp | ip neigh |
VLAN | vconfig | ip link |
隧道 | iptunnel | ip tunnel |
組播 | ipmaddr | ip maddr |
統計 | netstat | ss |
基本語法
ss [選項] [引數]
常用選項引數如下所示:
選項 | 說明 |
---|---|
-h,–help | 顯示幫助資訊 |
-V,–version | 顯示版本資訊 |
-n,–numeric | 以數字形式顯示,不解析服務名稱 |
-r,–resolve | 解析主機名稱和埠 |
-a,–all | 顯示所有資訊,包含監聽和非監聽的資訊 |
-l,–listening | 僅顯示監聽資訊 |
-o,–options | 顯示計時器資訊 |
-e,–extended | 顯示詳細的Socket資訊 |
-m,–memore | 顯示Socket的記憶體使用資訊 |
-p,–processes | 顯示使用Socket的程式資訊 |
-i,–info | 顯示TCP內部資訊 |
-s,–summary | 顯示Socket的使用概況 |
-4,–ipv4 | 僅顯示ipv4的Socket資訊 |
-6,–ipv4 | 僅顯示ipv6的Socket資訊 |
-t,–tcp | 僅顯示TCP的Socket資訊 |
-u,–udp | 僅顯示UDP的Socket資訊 |
-d,–dccp | 僅顯示DCCP的Socket資訊 |
-w,–raw | 僅顯示RAW的Socket資訊 |
-s,–sctp | 僅顯示SCTP的Socket資訊 |
-K,–kill | 嘗試強制關閉Socket |
示例
1.檢視當前伺服器的網路連線資訊
當伺服器有大量的Socket連線時,可以用來做巨集觀統計
2.檢視所有開啟的網路埠
ip命令
ip命令用來顯示或配置Linux主機的路由、網路裝置、策略路由和隧道。
基本語法
ip [選項] 物件 {命令 | 幫助}
常用選項引數如下所示:
選項 | 說明 |
---|---|
-V,–Version | 顯示版本資訊 |
-h,–human | 以易於讀取的方式輸出資訊 |
-s,–statistics | 顯示詳細的統計資訊 |
-f,–family | 指定使用的協議型別,協議型別主要有:inet,inet6,bridge,ipx, dnet,mpls,link ,如果未指定協議型別,則系統根據後面的引數自行決定所採用的協議型別 |
-4 | –family inet的簡寫 |
-6 | –family inet6的簡寫 |
-B | –family bridge的簡寫 |
-0 | –family link的簡寫 |
-o,–oneline | 每條記錄單獨一行輸出 |
-r,–resolve | 查詢DNS解析系統,使用主機名代替主機IP地址 |
-c,–color | 對顯示的資訊進行顏色標識 |
-t,–timestamp | 增加時間戳 |
-ts,–tshort | 與-t引數類似,以短時間形式顯示 |
-iec | 以易於讀取的形式顯示速率資訊,如1Ki=1024 |
物件是要管理或獲取資訊的物件,常用的物件如下所示:
物件 | 說明 |
---|---|
address | 裝置上的協議(IPv4/IPv6)地址 |
l2tp | IP上面的隧道(L2TPv3) |
link | 網路裝置 |
maddress | 多播地址 |
mroute | 多播路由緩衝條目 |
route | 路由表條目 |
rule | 路由規則 |
tcp_metrics/tcpmetrics | tcp轉發優先順序 |
tunnel | IP上的隧道 |
命令是用於指定物件上的操作行為,常見的命令如下所示:
命令 | 說明 |
---|---|
add | 增加操作 |
del | 刪除操作 |
show/list | 顯示操作 |
如果命令使用者沒有指定,則系統會自動指定操作行為,如show或list
示例
1.新增IP地址:
ip addr add 192.168.8.8/24 dev ens0
2.顯示IP地址
ip addr show
或
ip addr list
或
ip addr
3.刪除IP地址
ip addr del 192.168.8.8/24 dev ens0
4.啟用/禁用網路卡
啟用網路卡
ip link set ens0 up
禁用網路卡
ip link set ens0 down
5.顯示路由資訊
ip route show
6.增加路由資訊
ip route add 192.168.8.8/24 via 192.168.8.1
via 192.168.8.1 後面是閘道器
7.設定網路卡僅轉發
ip route add 192.168.8.8 dev ens0
8.刪除路由
ip route del 192.168.8.8/24 via 192.168.8.1
ip route del 192.168.8.8 dev ens0
9.指定預設閘道器
ip route add default via 192.168.8.1
預設閘道器作用很簡單明確,當一臺主機找不到匹配的轉發規則,則把資料轉發給預設閘道器,由該閘道器進行處理。
10.刪除預設閘道器
ip route del default
11.為不同的源IP指定路由選擇
當一個主機有多個網路卡且配置了多個IP的時候,對於不同網路卡產生的網路資料包,則需要根據其源IP地址選擇不同的路由資訊,如下所示:
ip route add 192.168.8.0/0 via 192.168.8.1 src 192.168.8.8
上面這個命令的意思就是發到192.168.8.0/0網段的所有網路包,下一跳的路由器IP是192.168.8.1,包的源IP地址為:192.168.8.8
本文同步在微信訂閱號上釋出,如各位小夥伴們喜歡我的文章,也可以關注我的微信訂閱號:woaitest,或掃描下面的二維碼新增關注: