Linux netstat命令詳解
來源:ggjucheng
鏈接:http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316661.html
簡介
Netstat 命令用於顯示各種網路相關信息,如網路連接,路由表,介面狀態 (Interface Statistics),masquerade 連接,多播成員 (Multicast Memberships) 等等。
輸出信息含義
執行netstat後,其輸出結果為
Active Internet connections(w/oservers)
ProtoRecv-QSend-QLocal Address Foreign Address State
tcp2210.34.6.89:telnet210.34.6.96:2873ESTABLISHED
tcp296210.34.6.89:1165210.34.6.84:netbios-ssn ESTABLISHED
tcplocalhost.localdom:9001localhost.localdom:1162ESTABLISHED
tcplocalhost.localdom:1162localhost.localdom:9001ESTABLISHED
tcp80210.34.6.89:1161210.34.6.10:netbios-ssn CLOSE
Active UNIX domain sockets(w/oservers)
Proto RefCnt FlagsTypeStateI-Node Path
unix1[]STREAMCONNECTED16178@000000dd
unix1[]STREAMCONNECTED16176@000000dc
unix9[]DGRAM5292/dev/log
unix1[]STREAMCONNECTED16182@000000df
從整體上看,netstat的輸出結果可以分為兩個部分:
一個是Active Internet connections,稱為有源TCP連接,其中」Recv-Q」和」Send-Q」指%0A的是接收隊列和發送隊列。這些數字一般都應該是0。如果不是則表示軟體包正在隊列中堆積。這種情況只能在非常少的情況見到。
另一個是Active UNIX domain sockets,稱為有源Unix域套介面(和網路套接字一樣,但是只能用於本機通信,性能可以提高一倍)。
Proto顯示連接使用的協議,RefCnt表示連接到本套介面上的進程號,Types顯示套介面的類型,State顯示套介面當前的狀態,Path表示連接到套介面的其它進程使用的路徑名。
常見參數
-a (all)顯示所有選項,默認不顯示LISTEN相關
-t (tcp)僅顯示tcp相關選項
-u (udp)僅顯示udp相關選項
-n 拒絕顯示別名,能顯示數字的全部轉化成數字。
-l 僅列出有在 Listen (監聽) 的服務狀態
-p 顯示建立相關鏈接的程序名
-r 顯示路由信息,路由表
-e 顯示擴展信息,例如uid等
-s 按各個協議進行統計
-c 每隔一個固定時間,執行該netstat命令。
提示:LISTEN和LISTENING的狀態只有用-a或者-l才能看到
實用命令實例
1. 列出所有埠 (包括監聽和未監聽的)
列出所有埠 netstat -a
# netstat -a | more
Active Internet connections(serversandestablished)
ProtoRecv-QSend-QLocal Address Foreign Address State
tcplocalhost:30037*:*LISTEN
udp*:bootpc*:*
Active UNIX domain sockets(serversandestablished)
Proto RefCnt FlagsTypeStateI-Node Path
unix2[ACC]STREAMLISTENING6135/tmp/.X11-unix/X0
unix2[ACC]STREAMLISTENING5140/var/run/acpid.socket
列出所有 tcp 埠 netstat -at
# netstat -at
Active Internet connections(serversandestablished)
ProtoRecv-QSend-QLocal Address Foreign Address State
tcplocalhost:30037*:*LISTEN
tcplocalhost:ipp*:*LISTEN
tcp*:smtp*:*LISTEN
tcp6localhost:ipp[::]:*LISTEN
列出所有 udp 埠 netstat -au
# netstat -au
Active Internet connections(serversandestablished)
ProtoRecv-QSend-QLocal Address Foreign Address State
udp*:bootpc*:*
udp*:49119*:*
udp*:mdns*:*
2. 列出所有處於監聽狀態的 Sockets
只顯示監聽埠 netstat -l
# netstat -l
Active Internet connections(onlyservers)
ProtoRecv-QSend-QLocal Address Foreign Address State
tcplocalhost:ipp*:*LISTEN
tcp6localhost:ipp[::]:*LISTEN
udp*:49119*:*
只列出所有監聽 tcp 埠 netstat -lt
# netstat -lt
Active Internet connections(onlyservers)
ProtoRecv-QSend-QLocal Address Foreign Address State
tcplocalhost:30037*:*LISTEN
tcp*:smtp*:*LISTEN
tcp6localhost:ipp[::]:*LISTEN
只列出所有監聽 udp 埠 netstat -lu
# netstat -lu
Active Internet connections(onlyservers)
ProtoRecv-QSend-QLocal Address Foreign Address State
udp*:49119*:*
udp*:mdns*:*
只列出所有監聽 UNIX 埠 netstat -lx
# netstat -lx
Active UNIX domain sockets(onlyservers)
Proto RefCnt FlagsTypeStateI-Node Path
unix2[ACC]STREAMLISTENING6294private/maildrop
unix2[ACC]STREAMLISTENING6203public/cleanup
unix2[ACC]STREAMLISTENING6302private/ifmail
unix2[ACC]STREAMLISTENING6306private/bsmtp
3. 顯示每個協議的統計信息
顯示所有埠的統計信息 netstat -s
# netstat -s
Ip:
11150total packetsreceived
1with invalidaddresses
forwarded
incoming packetsdiscarded
11149incoming packetsdelivered
11635requests sent out
Icmp:
ICMP messagesreceived
input ICMP messagefailed.
Tcp:
582active connectionsopenings
2failed connectionattempts
25connection resets received
Udp:
1183packetsreceived
4packetstounknown portreceived.
.....
顯示 TCP 或 UDP 埠的統計信息 netstat -st 或 -su
# netstat -st
# netstat -su
4. 在 netstat 輸出中顯示 PID 和進程名稱 netstat -p
netstat -p 可以與其它開關一起使用,就可以添加 「PID/進程名稱」 到 netstat 輸出中,這樣 debugging 的時候可以很方便的發現特定埠運行的程序。
# netstat -pt
Active Internet connections(w/oservers)
ProtoRecv-QSend-QLocal Address Foreign Address StatePID/Program name
tcpramesh-laptop.loc:52750lax:wwwESTABLISHED2109/firefox
5. 在 netstat 輸出中不顯示主機,埠和用戶名 (host, port or user)
當你不想讓主機,埠和用戶名顯示,使用 netstat -n。將會使用數字代替那些名稱。
同樣可以加速輸出,因為不用進行比對查詢。
# netstat -an
如果只是不想讓這三個名稱中的一個被顯示,使用以下命令
# netsat -a --numeric-ports
# netsat -a --numeric-hosts
# netsat -a --numeric-users
6. 持續輸出 netstat 信息
netstat 將每隔一秒輸出網路信息。
# netstat -c
Active Internet connections(w/oservers)
ProtoRecv-QSend-QLocal Address Foreign Address State
tcpramesh-laptop.loc:43758server-101-101-43-2:www ESTABLISHED
^C
7. 顯示系統不支持的地址族 (Address Families)
netstat--verbose
在輸出的末尾,會有如下的信息
netstat:no supportfor`AFIPX onthissystem.
netstat:no supportfor`AFAX25 onthissystem.
netstat:no supportfor`AFX25 onthissystem.
netstat:no supportfor`AFNETROM onthissystem.
8. 顯示核心路由信息 netstat -r
# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irttIface
192.168.1.0*255.255.255.0Ueth2
link-local*255.255.0.0Ueth2
default192.168.1.10.0.0.0UGeth2
注意: 使用 netstat -rn 顯示數字格式,不查詢主機名稱。
9. 找出程序運行的埠
並不是所有的進程都能找到,沒有許可權的會不顯示,使用 root 許可權查看所有的信息。
# netstat -ap | grep ssh
tcp1dev-db:ssh101.174.100.22:39213CLOSE_WAIT-
tcp1dev-db:ssh101.174.100.22:57643CLOSE_WAIT-
找出運行在指定埠的進程
# netstat -an | grep :80
10. 顯示網路介面列表
# netstat -i
KernelInterfacetable
Iface MTU MetRX-OKRX-ERRRX-DRPRX-OVRTX-OKTX-ERRTX-DRPTX-OVR Flg
eth01500BMU
lo1643644LRU
顯示詳細信息,像是 ifconfig 使用 netstat -ie:
# netstat -ie
KernelInterfacetable
eth0Linkencap:EthernetHWaddr00:10:40:11:11:11
UP BROADCAST MULTICASTMTU:1500Metric:1
RXpackets:errors:dropped:overruns:frame:
TXpackets:errors:dropped:overruns:carrier:
collisions:txqueuelen:1000
RXbytes:(0.0B)TXbytes:(0.0B)
Memory:f6ae0000-f6b00000
11. IP和TCP分析
查看連接某服務埠最多的的IP地址
wss8848@ubuntu:~$netstat-nat|grep"192.168.1.15:22"|awk |awk-F: |sort|uniq-c|sort-nr|head-20
18221.136.168.36
3154.74.45.242
278.173.31.236
262.183.207.98
2192.168.1.14
2182.48.111.215
2124.193.219.34
2119.145.41.2
2114.255.41.30
175.102.11.99
TCP各種狀態列表
wss8848@ubuntu:~$netstat-nat|awk
established)
Foreign
LISTEN
TIME_WAIT
ESTABLISHED
TIME_WAIT
SYN_SENT
先把狀態全都取出來,然後使用uniq -c統計,之後再進行排序。
wss8848@ubuntu:~$netstat-nat|awk |sort|uniq-c
143ESTABLISHED
1FIN_WAIT1
1Foreign
1LAST_ACK
36LISTEN
6SYN_SENT
113TIME_WAIT
1established)
最後的命令如下
netstat-nat|awk |sort|uniq-c|sort-rn
分析access.log獲得訪問前10位的ip地址
awk access.log|sort|uniq-c|sort-nr|head-10
參考資料:http://blog.maxiang.net/10-netstat-command-examples/139/
http://www.ipcpu.com/2011/07/netstat-linux/
※如何獲得一份滿意的 offer?
※讓web app更快的HTML5最佳實踐
※Spring AOP 的實現原理
※Ubuntu LAMP WEB開發環境搭建
※創業做一個app究竟要花多少錢?
TAG:程序源 |
※乾貨詳解 Linux phantomJs install course
※Linux中的top命令詳解
※Python super 詳解
※《快學BigData》-Linux grep 命令詳解
※詳解Pony最新妝容-Flower that booms at night
※Linux wget 命令用法詳解
※詳解Elasticsearch的基友Logstash
※Spring Security 5.0 的 DelegatingPasswordEncoder 詳解
※WebExtension安全漏洞詳解 Part 1
※MyBatis 配置 typeHandlers 詳解
※詳解 RestTemplate 操作
※Tensorboard 詳解
※基於Python Selenium Unittest PO設計模式詳解
※Symantec NetBackup 部署需要調整Linux內核詳解
※eBay運營之best match規則詳解
※聚合查詢慢——詳解Global Ordinals與High Cardinality
※Linux的chown和chmod授權詳解
※詳解react、redux、react-redux之間的關係
※Python Excel處理庫openpyxl詳解
※pentestdb 架構詳解