什麼是netstat 在Linux系統中輸入 man netstat ,顯示的結果如下所示: 從上面可以看出netstat命令的主要功能為: 顯示網路連接信息 顯示路由表信息 顯示網卡統計信息 顯示無效的連接信息 顯示組播成員信息 ...
什麼是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,或掃描下麵的二維碼添加關註: