netstat命令用于顯示與IP、TCP、UDP和ICMP協議相關的統計數據,一般用于檢驗本機各端口的網絡連接情況。netstat是在內核中訪問網絡及相關信息的程序,它能提供TCP連接,TCP和UDP監聽,進程內存管理的相關報告。
語法?
netstat [-acCeFghilMnNoprstuvVwx][-A<網絡類型>][--ip]-a或--all 顯示所有連線中的Socket。默認不顯示LISTEN相關的連接。-A<網絡類型>或--<網絡類型> 列出該網絡類型連線中的相關地址。-c或--continuous 持續列出網絡狀態。-C或--cache 顯示路由器配置的快取信息。-e或--extend 顯示網絡其他相關信息。-F或--fib 顯示路由緩存。-g或--groups 顯示多重廣播功能群組組員名單。-h或--help 在線幫助。-i或--interfaces 顯示網絡界面信息表單。-l或--listening 顯示監控中的服務器的Socket。提示:LISTEN和LISTENING的狀態只有用-a或者-l才能看到。-M或--masquerade 顯示偽裝的網絡連線。-n或--numeric 直接使用IP地址,而不通過域名服務器。-N或--netlink或--symbolic 顯示網絡硬件外圍設備的符號連接名稱。-o或--timers 顯示計時器。-p或--programs 顯示正在使用Socket的程序識別碼和程序名稱。-r或--route 顯示Routing Table。-s或--statistics 顯示網絡工作信息統計表。-t或--tcp 顯示TCP傳輸協議的連線狀況。-u或--udp 顯示UDP傳輸協議的連線狀況。-v或--verbose 顯示指令執行過程。-V或--version 顯示版本信息。-w或--raw 顯示RAW傳輸協議的連線狀況。-x或--unix 此參數的效果和指定"-A unix"參數相同。--ip或--inet 此參數的效果和指定"-A inet"參數相同。
示例
[fenglepeng@centos]# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 VM-0-17-centos:mysql 120.245.:isoipsigport-2 ESTABLISHED
tcp 0 0 VM-0-17-centos:mysql 120.245.:qt-serveradmin ESTABLISHED
tcp 0 0 VM-0-17-centos:mysql 120.245.11.:swldy-sias ESTABLISHED
......
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 3 [ ] DGRAM 7444 /run/systemd/notify
unix 2 [ ] DGRAM 7446 /run/systemd/cgroups-agent
unix 5 [ ] DGRAM 7466 /run/systemd/journal/socket
......
從整體上看,netstat的輸出結果可以分為兩個部分:
- 一個是Active Internet connections,稱為有源TCP連接,其中"Recv-Q"和"Send-Q"指的是接收隊列和發送隊列。這些數字一般都應該是0。如果不是則表示軟件包正在隊列中堆積。這種情況只能在非常少的情況見到。
- 另一個是Active UNIX domain sockets,稱為有源Unix域套接口(和網絡套接字一樣,但是只能用于本機通信,性能可以提高一倍)。
- Proto顯示連接使用的協議,
- RefCnt表示連接到本套接口上的進程號,
- Types顯示套接口的類型,
- State顯示套接口當前的狀態,
- Path表示連接到套接口的其它進程使用的路徑名。
狀態說明:
- LISTEN:偵聽來自遠方的TCP端口的連接請求
- SYN-SENT:再發送連接請求后等待匹配的連接請求(如果有大量這樣的狀態包,檢查是否中招了)
- SYN-RECEIVED:再收到和發送一個連接請求后等待對方對連接請求的確認(如有大量此狀態,估計被flood攻擊了)
- ESTABLISHED:代表一個打開的連接
- FIN-WAIT-1:等待遠程TCP連接中斷請求,或先前的連接中斷請求的確認
- FIN-WAIT-2:從遠程TCP等待連接中斷請求
- CLOSE-WAIT:等待從本地用戶發來的連接中斷請求
- CLOSING:等待遠程TCP對連接中斷的確認
- LAST-ACK:等待原來的發向遠程TCP的連接中斷請求的確認(不是什么好東西,此項出現,檢查是否被攻擊)
- TIME-WAIT:等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認
- CLOSED:沒有任何連接狀態
查看系統都開啟了哪些端口
[fenglepeng@centos]# netstat -lnp
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 1035/sshd
tcp 0 0 :::22 :::* LISTEN 1035/sshd
udp 0 0 0.0.0.0:68 0.0.0.0:* 931/dhclient
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node PID/Program name Path
unix 2 [ ACC ] STREAM LISTENING 6825 1/init @/com/ubuntu/upstart
unix 2 [ ACC ] STREAM LISTENING 8429 1003/dbus-daemon /var/run/dbus/system_bus_socket