「 netstat 」是Linux查看網路連線、路由表、連接埠狀態及相關統計資訊的工具,常常被用來檢測網路環境是否正常,對於網管或相關領域的人員來說是一定要會的指令,在本文中,同樣整理一些我自己常會用到或者覺得不錯的指令參數供大家參考,並透過實際的範例說明,讓有興趣的人可以快速上手這個指令。
Linux、Windows都有netstat這個指令,但用法會有點不一樣,此處是以Linux為主
本文示範OS:Ubuntu 18.04 Server 英文版
參數說明
Parameter | 說明 |
---|---|
-a | display all sockets (default: connected),顯示所有監聽、非監聽的Socket連線,包含連接埠,因為資訊量多,所以常和別的參數或grep搭配使用 |
-n | –numeric, show numerical addresses instead of trying to determine symbolic host, port or user names. 直接以數字形式顯示位址或協定,而不去解析主機、連接埠或使用者名稱。亦可以各別設定,指定不要解析的項目,參數如下: –numeric-hosts –numeric-ports –numeric-users |
-s | –statistics, display summary statistics for each protocol. 顯示每種協定的統計摘要資訊 |
-r | –route, display the kernel routing tables. 顯示核心的路由表 |
-i | –interfaces, display a table of all network interfaces. 顯示所有的網路卡資訊 |
-l | –listening, show only listening sockets. 只顯示狀態是Listening的Socket |
-t | tcp. 只顯示TCP的連線資訊 |
-u | udp. 只顯示UDP的連線資訊 |
-p | –programs, display PID/Program name for sockets. 顯示Socket是被哪個PID/程式所使用 |
-e | –extend, display other/more information. 顯示額外的資訊 |
-c | –continuous, this will cause netstat to print the selected information every second continuously. 連續輸出連線資訊,一秒一次 |
常用範例
這邊列出幾個我自己比較常用的例子供大家參考
範例1:查詢TCP或UDP的連線資訊
netstat -at 或 netstat -au
範例2:使用數字呈現主機、連接埠等資訊
即不解析主機、連接埠或使用者名稱,而用數字的方式來呈現,有時候用這種方式可以增加閱讀性,例如下圖中沒有加此參數時,資訊是呈現
netstat -atn (以數字的方式呈現TCP連線資訊)
可以單獨指定哪個項目不要解析,例如以下是不解析Port的範例
netstat -at --numeric-ports
範例3:查詢路由表資訊
在此例中,利用
netstat -rn (以數字的方式呈現路由表資訊)
範例4:查詢網路卡資訊
透過
netstat -i
可以再搭配
netstat -ie
範例5:呈現監聽狀態的資訊連線
如果只想要列出「LISTEN」監聽狀態下的資訊,則可以用
netstat -tnl (或比較常用的 netstat -tulpn)
範例6:查看連線的統計資訊
netstat -su
範例7:查詢使用服務或Port的程式名
例如,想要查SSH服務是來自哪個程式 (範例是用字串ssh來過濾,所以不加參數n)
netstat -atp | grep ssh
想查「22」Port是哪個程式在使用,一樣也可以
註:grep後面的
netstat -antp | grep -w 22
範例8:連續輸出連線資訊
上面參數介紹中有提過,要連續輸出連線資訊的話,只要加入
netstat -atc
延伸閱讀:
.[Linux] Tcpdump 擷取封包指令範例教學
.[Linux] vnStat 網路流量監控工具使用教學
.[Linux] Ubuntu 如何利用 Netplan 設定 固定IP