在Ubuntu系統中,我們經常需要查看網絡連接狀態、排查網絡問題或瞭解系統當前的網絡活動情況。這時候,netstat命令就派上用場了。它是一個強大的網絡工具,能夠顯示系統中所有的網絡連接、路由表、接口統計信息以及監聽端口等關鍵網絡數據。
一、安裝netstat(如果需要)¶
Ubuntu默認可能未安裝netstat命令,這是因爲它屬於net-tools工具包。如果執行netstat時提示“command not found”,請先安裝:
sudo apt update && sudo apt install net-tools
二、netstat的基本語法¶
netstat的基本語法格式爲:
netstat [選項] [協議/參數]
常用選項(參數)及作用如下,每個選項配合簡單示例說明:
三、常用參數及示例¶
1. 顯示所有連接(-a)¶
- 作用:顯示系統中所有的網絡連接(包括TCP、UDP,已建立的、監聽的、關閉的等)。
- 命令:
netstat -a - 說明:輸出內容較多,包含本地地址、外部地址、連接狀態等。例如:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 52 192.168.1.100:22 192.168.1.101:54321 ESTABLISHED
2. 只顯示TCP協議連接(-t)¶
- 作用:過濾出所有TCP協議的連接(忽略UDP等其他協議)。
- 命令:
netstat -t - 說明:如果需要查看監聽狀態的TCP連接,可結合
-l(監聽)參數:netstat -tl
3. 只顯示UDP協議連接(-u)¶
- 作用:僅顯示UDP協議的連接(常用於排查DNS、NTP等UDP服務)。
- 命令:
netstat -u
4. 以數字格式顯示端口和IP(-n)¶
- 作用:不將IP地址解析爲主機名,端口號解析爲服務名(避免DNS查詢延遲,輸出更簡潔)。
- 命令:
netstat -tn(TCP)或netstat -un(UDP) - 說明:例如,端口80會顯示爲“80”而非“http”,IP地址顯示爲數字格式(如192.168.1.100)。
5. 顯示進程ID和程序名(-p)¶
- 作用:查看哪個進程佔用了特定端口或連接(需
root權限)。 - 命令:
sudo netstat -tunp - 說明:普通用戶執行時可能無法顯示進程信息,需加
sudo。例如:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1234/mysqld
這裏1234/mysqld表示MySQL進程(PID 1234)佔用了3306端口。
6. 顯示路由表(-r)¶
- 作用:查看系統的路由規則(決定數據包如何轉發到其他網絡)。
- 命令:
netstat -r - 說明:常用於排查網絡不通或路由配置問題。
四、實際應用場景¶
1. 快速查看所有監聽端口¶
想知道系統哪些端口在監聽連接(如Web服務的80端口、SSH的22端口):
sudo netstat -tuln
-t:TCP監聽端口-u:UDP監聽端口-l:監聽狀態-n:數字格式- 輸出示例:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
udp 0 0 127.0.0.1:53 0.0.0.0:*
2. 排查特定端口是否被佔用¶
例如,想確認80端口是否被Web服務器(如Apache)佔用:
sudo netstat -tulnp | grep 80
- 說明:若輸出包含
LISTEN狀態,則說明80端口正被某個服務監聽。
3. 查看已建立的TCP連接¶
想了解當前系統與外部設備的已建立連接(如遠程服務器的SSH連接):
netstat -tan | grep ESTABLISHED
-a:所有連接-n:數字格式grep ESTABLISHED:只顯示已建立連接狀態
五、總結¶
netstat是Ubuntu網絡管理的基礎工具,掌握以下核心用法即可應對大部分場景:
- 查看監聽端口:sudo netstat -tuln
- 查看端口占用進程:sudo netstat -tunp
- 查看TCP連接:netstat -tan(或結合grep過濾狀態)
- 查看路由表:netstat -r
如果需要更詳細的網絡分析,還可以結合grep、awk等工具進一步篩選數據。記住,使用-p參數時需加sudo獲取進程信息,這是排查端口占用問題的關鍵步驟。