netstat命令用於顯示與IP、TCP、UDP和ICMP協議相關的統計數據,一般用於檢驗本機各端口的網絡連接情況。netstat是在內核中訪問網絡及相關信息的程序,它能提供TCP連接,TCP和UDP監聽,進程內存管理的相關報告。
netstat常用命令參數
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
usage:
netstat
[-veenNcCF] [<Af>] -r
netstat
{-V|--version|-h|--help}
netstat
[-vnNcaeol] [<Socket> ...]
netstat
{ [-veenNac] -I[<Iface>] | [-veenNac] -i | [-cnNe] -M | -s } [delay]
-r, --route display routing table
-I, --interfaces=<Iface> display interface table
for
<Iface>
-i, --interfaces display interface table
-g, --
groups
display multicast group memberships
-s, --statistics display networking statistics (like SNMP)
-M, --masquerade display masqueraded connections
-
v
, --verbose be verbose
-n, --numeric don't resolve names
--numeric-hosts don't resolve host names
--numeric-ports don't resolve port names
--numeric-
users
don't resolve user names
-N, --symbolic resolve hardware names
-e, --extend display other
/more
information
-p, --programs display PID
/Program
name
for
sockets
-c, --continuous continuous listing
-l, --listening display listening server sockets
-a, --all, --listening display all sockets (default: connected)
-o, --timers display timers
-F, --fib display Forwarding Information Base (default)
-C, --cache display routing cache instead of FIB
-T, --notrim stop trimming long addresses
-Z, --context display SELinux security context
for
sockets
|
1
2
3
4
5
|
<Iface>: Name of interface to monitor
/list
.
<Socket>={-t|--tcp} {-u|--udp} {-S|--sctp} {-w|--raw} {-x|--unix} --ax25 --ipx --netrom
<AF>=Use
'-A <af>'
or
'--<af>'
; default: inet
List of possible address families (
which
support routing):
inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25)
|
netstat輸出結果分析
說明:
從整體上看,netstat的輸出結果可以分為兩個部分:
一個是Active Internet connections,稱為有源TCP連接,其中"Recv-Q"和"Send-Q"指的是接收隊列和發送隊列。這些數字一般都應該是0。如果不是則表示軟件包正在隊列中堆積。這種情況只能在非常少的情況見到。
另一個是Active UNIX domain sockets,稱為有源Unix域套接口(和網絡套接字一樣,但是只能用於本機通信,性能可以提高一倍)。
Proto顯示連接使用的協議,RefCnt表示連接到本套接口上的進程號,Types顯示套接口的類型,State顯示套接口當前的狀態,Path表示連接到套接口的其它進程使用的路徑名。
套接口類型:
-t :TCP
-u :UDP
-raw :RAW類型
--unix :UNIX域類型
--ax25 :AX25類型
--ipx :ipx類型
--netrom :netrom類型
狀態說明:
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:沒有任何連接狀態
常用的命令展示
顯示網卡列表
1
|
netstat
–i
|
顯示組播組的關系
1
|
netstat
–g
|
顯示網絡統計
1
|
netstat
-s
|
常用組合:
1
2
|
netstat
-lntup
說明: l:listening n:num t:tcp u:udp p:process
|
顯示關於以太網的統計數據
1
2
3
4
|
netstat
–e
說明:
用於顯示關於以太網的統計數據。它列出的項目包括傳送的數據報的總字節數、錯誤數、刪除數、數據報的數量和廣播的數量。這些統計數據既有發送的數據報數量,也有接收的數據報數量。這個選項可以用來統計一些基本的網絡流量)
|
顯示路由信息
1
|
netstat
–r
|
1
|
route –n 【也可以顯示路由信息】
|
統計機器中網絡連接各個狀態個數
1
|
netstat
-an |
awk
'/^tcp/ {++S[$NF]} END {for (a in S) print a,S[a]} '
|
把狀態全都取出來后使用uniq -c統計后再進行排序
1
|
netstat
-ant|
awk
'{print $6}'
|
sort
|
uniq
–c
|
查看連接某服務端口最多的的IP地址
1
|
netstat
-ant|
grep
"192.168.25.*"
|
awk
'{print $5}'
|
awk
-F:
'{print $1}'
|
sort
-nr|
uniq
–c
|
找出程序運行的端口
1
|
netstat
-ap |
grep
ssh
|
在 netstat 輸出中顯示 TCP連接信息
netstat -pt
說明:netstat -p 可以與其它開關一起使用,就可以添加 “PID/進程名稱”
找出運行在指定端口的進程
其他注意事項:
小技巧: netstat -lnt | grep ssh | wc -l -->只要大於2個,ssh服務就是好的