Linux 网络工具 netstat


netstat

1. netstat 命令

netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。

语法

netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]

参数

-a或--all 显示所有连线中的Socket。
-A<网络类型>或--<网络类型> 列出该网络类型连线中的相关地址。
-c或--continuous 持续列出网络状态。
-C或--cache 显示路由器配置的快取信息。
-e或--extend 显示网络其他相关信息。
-F或--fib 显示路由缓存。
-g或--groups 显示多重广播功能群组组员名单。
-h或--help 在线帮助。
-i或--interfaces 显示网络界面信息表单。
-l或--listening 显示监控中的服务器的Socket。
-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"参数相同。

实例

1. 显示网络状态

netstat -a

结果:

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 192.168.122.1:domain    0.0.0.0:*               LISTEN
tcp        0      0 localhost:ipp           0.0.0.0:*               LISTEN
tcp        0      0 localhost:35600         0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.54:domain       0.0.0.0:*               LISTEN
tcp        0      0 localhost:31080         0.0.0.0:*               LISTEN
tcp        0      0 localhost:31055         0.0.0.0:*               LISTEN
tcp        0      0 hellotalk:domain        0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.53:domain       0.0.0.0:*               LISTEN
tcp        0      0 172.16.0.112:50006      113.240.72.111:https    TIME_WAIT
tcp        0      0 10.100.100.164:56010    10.40.2.11:27017        ESTABLISHED
tcp        0      0 10.100.100.164:43846    10.40.2.5:27017         ESTABLISHED

字段说明:

1.Proto:传输层协议 TCP 或 UDP

2.Recv-Q:接收队列

3.Send-Q:发送队列

4.Local Address:本地地址

5.Foreign Address:远程地址

6.State:状态 LISTEN:侦听,ESTABLISHED:已建立,TIME_WAIT:关闭

2. 显示当前户籍 UDP 连接状况

netstat -nu

结果:

激活Internet连接 (w/o 服务器)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
udp        0      0 127.0.0.1:56871         127.0.1.1:53            ESTABLISHED
udp        0      0 172.16.0.112:42799      106.38.222.156:443      ESTABLISHED
udp        0      0 172.16.0.112:68         172.16.0.1:67           ESTABLISHED

3. 显示当前户籍 TCP 连接状况

netstat -nt

结果:

激活Internet连接 (w/o 服务器)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 10.100.100.164:56010    10.40.2.11:27017        ESTABLISHED
tcp        0      0 10.100.100.164:43846    10.40.2.5:27017         ESTABLISHED
tcp        0      0 172.16.0.112:60087      43.159.193.150:8002     TIME_WAIT
tcp        0      0 172.16.0.112:57712      113.240.72.99:443       TIME_WAIT
tcp        0      0 10.100.100.164:55986    10.40.2.11:27017        ESTABLISHED
tcp        0      0 10.100.100.164:43722    10.40.2.5:27017         ESTABLISHED

4. 显示当前系统中所有正在监听的 TCP 端口、相关的进程以及其状态

netstat -ntlp

结果:

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:80              0.0.0.0:*               LISTEN      1234/nginx
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      2345/mysqld
tcp6       0      0 :::22                   :::*                    LISTEN      3456/sshd

字段解析:

  1. Proto:协议

    • tcp:表示 TCP 协议。
    • tcp6:表示 IPv6 的 TCP 协议。
  2. Recv-Q 和 Send-Q:

    • Recv-Q:表示接收队列
    • Send-Q:表示发送队列
  3. Local Address:本地地址

    • 0.0.0.0:80:本地地址和端口号,0.0.0.0 表示监听所有接口的 IP 地址,80 是端口号。
    • 127.0.0.1:3306:本地环回地址(localhost)上的端口 3306。
    • :::22:IPv6 地址的端口 22。
  4. Foreign Address:远程地址

    • 0.0.0.0:* 和 :::*:表示监听所有外部地址。
  5. State:状态

    • LISTEN:表示服务器正在监听 TCP 连接请求。
    • ESTABLISHED:表示连接已经建立。
    • TIME_WAIT:表示主动关闭连接的一方在关闭连接后,等待 2MSL 后依然没有收到对方的 FIN 报文,处于等待关闭状态。
    • CLOSE_WAIT:表示被动关闭连接的一方在收到对方的 FIN 报文后,等待应用进程关闭连接。
    • LAST_ACK:表示被动关闭连接的一方在发送完 FIN 报文后,等待对方的 ACK 报文,如果收到 ACK 报文,则处于 CLOSED 状态,否则处于 TIME_WAIT 状态。
    • CLOSED:表示连接已经关闭。
    • SYN_RECV:表示正在等待处理的请求数目。
    • SYN_SENT:表示正在等待远程连接请求。
    • CLOSING:表示正在等待远程连接关闭请求。
    • UNKNOWN:表示未知状态。
    • LISTENING:表示正在等待远程连接请求。
    • IDLE:表示连接处于空闲状态。
    • BOUND:表示正在等待远程连接请求。
    • FIN_WAIT1: 套接字已经发出了一个 FIN 请求,表示它已经完成了发送数据,正在等待对方的 ACK 响应。
    • FIN_WAIT2: 套接字收到了对 FIN 请求的 ACK 响应,正在等待对方发出 FIN 请求。
  6. PID/Program name:进程 ID 和进程名称

    • 1234/nginx:进程 ID 为 1234 的 nginx 进程正在监听 80 端口。
    • 2345/mysqld:进程 ID 为 2345 的 mysqld 进程正在监听 3306 端口。
    • 3456/sshd:进程 ID 为 3456 的 sshd 进程正在监听 22 端口。

5. 显示网卡列表

 netstat -i

结果:

Iface             MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
br-717e070443f8  1500        0      0      0 0             0      0      0      0 BMU
br-7f56e5476213  1500        0      0      0 0             0      0      0      0 BMU
docker0          1500        0      0      0 0             0      0      0      0 BMU
eno1             1500  3838424      0      0 0       3615697      0      0      0 BMRU
lo              65536  1115368      0      0 0       1115368      0      0      0 LRU
utun             1400  2667684      0      0 0       2598307      0      0      0 MOPRU
virbr0           1500        0      0      0 0             0      0      0      0 BMU

字段解析:

  1. Iface:网卡名称
  2. MTU:最大传输单元
  3. RX-OK:接收数据包总数
  4. RX-ERR:接收数据包错误总数
  5. RX-DRP:接收数据包丢弃总数
  6. RX-OVR:接收数据包溢出总数
  7. TX-OK:发送数据包总数
  8. TX-ERR:发送数据包错误总数
  9. TX-DRP:发送数据包丢弃总数
  10. TX-OVR:发送数据包溢出总数
  11. Flg:标志
  • BMU:广播地址
  • BMRU:广播地址和多播地址
  • MOPRU:多播地址
  • LRU:本地地址
  • MPRU:多播地址和本地地址
  • OPRU:多播地址和本地地址和广播地址
  • ALL:所有地址

#### 6. 显示组播组的关系

netstat -g

结果:

IPv6/IPv4 Group Memberships
Interface       RefCnt Group
--------------- ------ ---------------------
lo              1      mdns.mcast.net
lo              1      all-systems.mcast.net

字段解析:

  1. Interface:网卡名称
  2. RefCnt:引用计数
  3. Group:组播组

#### 7. 显示网络统计信息

netstat -s

结果:

Ip:
    Forwarding: 1
    7269919 total packets received
    0 forwarded
    0 incoming packets discarded
    7265662 incoming packets delivered
    7078118 requests sent out
    28 outgoing packets dropped
    7895 dropped because of missing route
    8416 reassemblies required
    4208 packets reassembled ok
    6 outgoing packets failed fragmentation
    OutTransmits: 7078115
Icmp:
    2022 ICMP messages received
    6 input ICMP message failed
    ICMP接收历史
        destination unreachable: 2020
        echo requests: 2
    2176 ICMP messages sent
    0 ICMP messages failed
    OutRateLimitHost: 253
    ICMP发出历史
        destination unreachable: 2174
        echo replies: 2
IcmpMsg:
        InType3: 2020
        InType8: 2
        OutType0: 2
        OutType3: 2174
Tcp:
    202192 active connection openings
    10375 passive connection openings
    120686 failed connection attempts
    3047 connection resets received
    77 connections established
    6857878 segments received
    7083293 segments sent out
    16799 segments retransmitted
    1119 bad segments received
    131681 resets sent
Udp:
    1456958 packets received
    2421 packets to unknown port received
    32 packet receive errors
    556388 packets sent
    0 receive buffer errors
    8 send buffer errors
    InCsumErrors: 32
    IgnoredMulti: 12191
UdpLite:
TcpExt:
    3 ICMP packets dropped because they were out-of-window
    30122 TCP sockets finished time wait in fast timer
    1 packets rejected in established connections because of timestamp
    119999 delayed acks sent
    39 delayed acks further delayed because of locked socket
    Quick ack mode was activated 34511 times
    1065795 packet headers predicted
    687289 acknowledgments not containing data payload received
    1455607 predicted acknowledgments
    TCPSackRecovery: 327
    Detected reordering 676 times using SACK
    TCPDSACKUndo: 97
    87 congestion windows recovered without slow start after partial ack
    TCPLostRetransmit: 8875
    TCPSackFailures: 8
    3 timeouts in loss state
    466 fast retransmits
    133 retransmits in slow start
    TCPTimeouts: 11823
    TCPLossProbes: 5420
    TCPLossProbeRecovery: 82
    TCPSackRecoveryFail: 10
    TCPBacklogCoalesce: 2369
    TCPDSACKOldSent: 34608
    TCPDSACKOfoSent: 51
    TCPDSACKRecv: 1827
    TCPDSACKOfoRecv: 16
    1537 connections reset due to unexpected data
    2171 connections reset due to early user close
    484 connections aborted due to timeout
    10 times unable to send RST due to no memory
    TCPSACKDiscard: 2
    TCPDSACKIgnoredOld: 7
    TCPDSACKIgnoredNoUndo: 815
    TCPSackShifted: 26
    TCPSackMerged: 342
    TCPSackShiftFallback: 1984
    IPReversePathFilter: 22
    TCPRcvCoalesce: 203651
    TCPOFOQueue: 50737
    TCPOFOMerge: 54
    TCPChallengeACK: 879
    TCPSYNChallenge: 1140
    TCPSpuriousRtxHostQueues: 18
    TCPAutoCorking: 458417
    TCPFromZeroWindowAdv: 35
    TCPToZeroWindowAdv: 35
    TCPWantZeroWindowAdv: 167
    TCPSynRetrans: 7312
    TCPOrigDataSent: 3398432
    TCPHystartTrainDetect: 22
    TCPHystartTrainCwnd: 1073
    TCPHystartDelayDetect: 42
    TCPHystartDelayCwnd: 1831
    TCPACKSkippedSeq: 286
    TCPACKSkippedChallenge: 265
    TCPKeepAlive: 97079
    TCPDelivered: 3475194
    TCPAckCompressed: 14499
    TcpTimeoutRehash: 11471
    TCPDSACKRecvSegs: 1841
    TCPDSACKIgnoredDubious: 2
IpExt:
    InNoRoutes: 17
    InMcastPkts: 118643
    OutMcastPkts: 8410
    InBcastPkts: 17704
    OutBcastPkts: 1960
    InOctets: 3807905209
    OutOctets: 1523626052
    InMcastOctets: 53391437
    OutMcastOctets: 1586713
    InBcastOctets: 9013152
    OutBcastOctets: 152880
    InNoECTPkts: 7512863
    InECT0Pkts: 18
MPTcpExt:

显示监听的套接口

netstat -l
激活Internet连接 (仅服务器)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 hellotalk:domain        0.0.0.0:*               LISTEN     
tcp6       0      0 [::]:3100               [::]:*                  LISTEN     
udp        0      0 0.0.0.0:45010           0.0.0.0:*                                            
udp        0      0 0.0.0.0:mdns            0.0.0.0:*                          
udp6       0      0 [::]:49287              [::]:*                             
              7          
活跃的UNIX域套接字 (仅服务器)
Proto RefCnt Flags       Type       State         I-Node   路径
unix  2      [ ACC ]     流        LISTENING     1010159  /tmp/.java_pid169241.tmp

字段解析:

  • Proto:协议名,如tcp、udp、unix等
  • Recv-Q:接收队列,即收到的但未处理的数据包数
  • Send-Q:发送队列,即发送但未确认的数据包数
  • Local Address:本地地址
  • Foreign Address:远程地址
  • State:套接字状态,如LISTEN、ESTABLISHED等
  • I-Node:套接字inode号
  • 路径:unix域套接字路径
  • RefCnt:引用计数
  • Flags:套接字标志,如S表示套接字是被动打开的,即服务器端,而A表示套接字是主动打开的,即客户端
  • Type:套接字类型,如流套接字、数据报套接字等
  • 路径:unix域套接字路径

查看路由表

netstat -r
内核 IP 路由表
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         172.16.0.1      0.0.0.0         UG        0 0          0 eno1
one.one.one.one 0.0.0.0         255.255.255.255 UH        0 0          0 utun
10.10.0.0       0.0.0.0         255.255.0.0     U         0 0          0 utun
10.40.0.0       0.0.0.0         255.255.0.0     U         0 0          0 utun
10.100.100.0    0.0.0.0         255.255.255.0   U         0 0          0 utun
30.100.0.0      0.0.0.0         255.252.0.0     U         0 0          0 utun
feilian.hellota 172.16.0.1      255.255.255.255 UGH       0 0          0 eno1
link-local      0.0.0.0         255.255.0.0     U         0 0          0 utun
172.16.0.0      0.0.0.0         255.255.254.0   U         0 0          0 eno1
172.16.6.20     172.16.0.1      255.255.255.255 UGH       0 0          0 eno1
172.17.0.0      0.0.0.0         255.255.0.0     U         0 0          0 docker0
192.168.49.0    0.0.0.0         255.255.255.0   U         0 0          0 br-717e070443f8
192.168.58.0    0.0.0.0         255.255.255.0   U         0 0          0 br-7f56e5476213
192.168.122.0   0.0.0.0         255.255.255.0   U         0 0          0 virbr0

字段解析:

  • Destination:目的网络或目的主机
  • Gateway:指定用于转发包的网关。
  • Genmask:子网掩码
  • Flags:路由标志,如U表示路由是活动的,H表示目的地址是一个主机,G表示使用网关
  • MSS:最大分段大小
  • Window:TCP窗口大小
  • irtt:初始RTT
  • Iface:路由接口

只列出监听中的连接

netstat -tnl
激活Internet连接 (仅服务器)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:35600         0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.54:53           0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:31080         0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:31055         0.0.0.0:*               LISTEN     
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN     
tcp6       0      0 :::41499                :::*                    LISTEN     
tcp6       0      0 127.0.0.1:52829         :::*                    LISTEN     
tcp6       0      0 127.0.0.1:35955         :::*                    LISTEN     
tcp6       0      0 127.0.0.1:63343         :::*                    LISTEN     
tcp6       0      0 127.0.0.1:63342         :::*                    LISTEN     

获取进程名、进程号以及用户 ID

netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      1144/dnsmasq    
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      661/cupsd       
tcp6       0      0 ::1:631                 :::*                    LISTEN      661/cupsd

查看进程的拥有者会更有用。使用 -ep 选项可以同时查看进程名和用户名

netstat -tunlep
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name    
tcp        0      0 192.168.122.1:domain    0.0.0.0:*               LISTEN      root       14887      1567/dnsmasq        
tcp        0      0 localhost:ipp           0.0.0.0:*               LISTEN      root       1946474    310640/cupsd     

参考:
https://docs.oracle.com/cd/E26926_01/html/E25874/ipconfig-142.html


文章作者: costalong
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 costalong !
评论
  目录
国庆
快乐