常用的 Linux netstat 命令

Jan 27, 2019 00:00 · 2073 words · 5 minute read Linux Network

netstat (network statistics) 是用于监控出入的网络连接,还有路由表和网卡统计数据的工具,也是最基础的网络调试工具。

1. 列出所有 TCP 和 UDP 连接

$ netstat -a | more
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:sunrpc          0.0.0.0:*               LISTEN
tcp        0      0 perf:domain             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
tcp        0      0 localhost:ipp           0.0.0.0:*               LISTEN
tcp        0      0 perf.shared:ssh         10.211.55.2:63952       ESTABLISHED
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN
tcp6       0      0 [::]:sunrpc             [::]:*                  LISTEN
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
tcp6       0      0 localhost:ipp           [::]:*                  LISTEN
udp        0      0 0.0.0.0:mdns            0.0.0.0:*
udp        0      0 0.0.0.0:34343           0.0.0.0:*
udp        0      0 perf:domain             0.0.0.0:*
udp        0      0 perf:domain             0.0.0.0:*
udp        0      0 0.0.0.0:bootps          0.0.0.0:*
udp        0      0 0.0.0.0:bootps          0.0.0.0:*
udp        0      0 0.0.0.0:bootpc          0.0.0.0:*
udp        0      0 0.0.0.0:sunrpc          0.0.0.0:*
udp6       0      0 [::]:sunrpc             [::]:*
raw6       0      0 [::]:ipv6-icmp          [::]:*                  7
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     15872    /var/run/avahi-daemon/socket
unix  2      [ ACC ]     STREAM     LISTENING     15876    /var/run/libvirt/virtlockd-sock
unix  2      [ ACC ]     STREAM     LISTENING     15880    /var/run/cups/cups.sock
unix  2      [ ACC ]     STREAM     LISTENING     25429    @/tmp/.ICE-unix/1799
unix  2      [ ACC ]     STREAM     LISTENING     15884    /var/run/libvirt/virtlogd-sock
unix  2      [ ACC ]     STREAM     LISTENING     15886    /run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     87830    /var/run/libvirt/libvirt-sock
unix  2      [ ACC ]     STREAM     LISTENING     92183    /var/run/abrt/abrt.socket
unix  2      [ ACC ]     STREAM     LISTENING     87832    /var/run/libvirt/libvirt-sock-ro
unix  2      [ ACC ]     STREAM     LISTENING     87834    /var/run/libvirt/libvirt-admin-sock
unix  2      [ ACC ]     STREAM     LISTENING     62499    /var/lib/gssproxy/default.sock
unix  2      [ ACC ]     STREAM     LISTENING     54076    private/tlsmgr
unix  2      [ ACC ]     STREAM     LISTENING     54079    private/rewrite
unix  2      [ ACC ]     STREAM     LISTENING     54082    private/bounce
unix  2      [ ACC ]     STREAM     LISTENING     25780    @/tmp/.X11-unix/X0
unix  3      [ ]         DGRAM                    8482     /run/systemd/notify
unix  2      [ ACC ]     STREAM     LISTENING     54085    private/defer
unix  2      [ ACC ]     STREAM     LISTENING     62500    /run/gssproxy.sock
unix  2      [ ]         DGRAM                    8484     /run/systemd/cgroups-agent
unix  2      [ ACC ]     STREAM     LISTENING     54088    private/trace
unix  2      [ ACC ]     STREAM     LISTENING     54091    private/verify
unix  2      [ ACC ]     STREAM     LISTENING     54097    private/proxymap
unix  2      [ ACC ]     STREAM     LISTENING     25781    /tmp/.X11-unix/X0

2. 列出所有 TCP 连接

$ netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:sunrpc          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:http            0.0.0.0:*               LISTEN
tcp        0      0 perf:domain             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
tcp        0      0 localhost:ipp           0.0.0.0:*               LISTEN
tcp        0      0 perf.shared:ssh         10.211.55.2:63952       ESTABLISHED
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN
tcp6       0      0 [::]:sunrpc             [::]:*                  LISTEN
tcp6       0      0 [::]:http               [::]:*                  LISTEN
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
tcp6       0      0 localhost:ipp           [::]:*                  LISTEN

3. 列出所有 UDP 连接

$ netstat -au
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
udp        0      0 0.0.0.0:mdns            0.0.0.0:*
udp        0      0 0.0.0.0:34343           0.0.0.0:*
udp        0      0 perf:domain             0.0.0.0:*
udp        0      0 perf:domain             0.0.0.0:*
udp        0      0 0.0.0.0:bootps          0.0.0.0:*
udp        0      0 0.0.0.0:bootps          0.0.0.0:*
udp        0      0 0.0.0.0:bootpc          0.0.0.0:*
udp        0      0 0.0.0.0:sunrpc          0.0.0.0:*
udp6       0      0 [::]:sunrpc             [::]:*

4. 列出所有监听中的 TCP 和 UDP 连接(还未建立连接)

-a 包含了正在监听中和已建立两种状态。

$ netstat -l | more
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:sunrpc          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:http            0.0.0.0:*               LISTEN
tcp        0      0 perf:domain             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
tcp        0      0 localhost:ipp           0.0.0.0:*               LISTEN
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN
tcp6       0      0 [::]:sunrpc             [::]:*                  LISTEN
tcp6       0      0 [::]:http               [::]:*                  LISTEN
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
tcp6       0      0 localhost:ipp           [::]:*                  LISTEN
udp        0      0 0.0.0.0:mdns            0.0.0.0:*
udp        0      0 0.0.0.0:34343           0.0.0.0:*
udp        0      0 perf:domain             0.0.0.0:*
udp        0      0 perf:domain             0.0.0.0:*
udp        0      0 0.0.0.0:bootps          0.0.0.0:*
udp        0      0 0.0.0.0:bootps          0.0.0.0:*
udp        0      0 0.0.0.0:bootpc          0.0.0.0:*
udp        0      0 0.0.0.0:sunrpc          0.0.0.0:*
udp6       0      0 [::]:sunrpc             [::]:*
raw6       0      0 [::]:ipv6-icmp          [::]:*                  7
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     15872    /var/run/avahi-daemon/socket
unix  2      [ ACC ]     STREAM     LISTENING     15876    /var/run/libvirt/virtlockd-sock
unix  2      [ ACC ]     STREAM     LISTENING     15880    /var/run/cups/cups.sock
unix  2      [ ACC ]     STREAM     LISTENING     25429    @/tmp/.ICE-unix/1799
unix  2      [ ACC ]     STREAM     LISTENING     15884    /var/run/libvirt/virtlogd-sock
unix  2      [ ACC ]     STREAM     LISTENING     15886    /run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     87830    /var/run/libvirt/libvirt-sock
unix  2      [ ACC ]     STREAM     LISTENING     92183    /var/run/abrt/abrt.socket
unix  2      [ ACC ]     STREAM     LISTENING     87832    /var/run/libvirt/libvirt-sock-ro
unix  2      [ ACC ]     STREAM     LISTENING     87834    /var/run/libvirt/libvirt-admin-sock
unix  2      [ ACC ]     STREAM     LISTENING     62499    /var/lib/gssproxy/default.sock
unix  2      [ ACC ]     STREAM     LISTENING     54076    private/tlsmgr
unix  2      [ ACC ]     STREAM     LISTENING     54079    private/rewrite
unix  2      [ ACC ]     STREAM     LISTENING     54082    private/bounce
unix  2      [ ACC ]     STREAM     LISTENING     25780    @/tmp/.X11-unix/X0
unix  2      [ ACC ]     STREAM     LISTENING     54085    private/defer
unix  2      [ ACC ]     STREAM     LISTENING     62500    /run/gssproxy.sock
unix  2      [ ACC ]     STREAM     LISTENING     54088    private/trace
unix  2      [ ACC ]     STREAM     LISTENING     54091    private/verify
unix  2      [ ACC ]     STREAM     LISTENING     54097    private/proxymap
unix  2      [ ACC ]     STREAM     LISTENING     25781    /tmp/.X11-unix/X0
unix  2      [ ACC ]     STREAM     LISTENING     54100    private/proxywrite

5. 列出所有监听中的 TCP 连接(还未建立连接)

$ netstat -lt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:sunrpc          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:http            0.0.0.0:*               LISTEN
tcp        0      0 perf:domain             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
tcp        0      0 localhost:ipp           0.0.0.0:*               LISTEN
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN
tcp6       0      0 [::]:sunrpc             [::]:*                  LISTEN
tcp6       0      0 [::]:http               [::]:*                  LISTEN
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
tcp6       0      0 localhost:ipp           [::]:*                  LISTEN

6. 列出所有监听中的 UDP 连接(还未建立连接)

$ netstat -lu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
udp        0      0 0.0.0.0:mdns            0.0.0.0:*
udp        0      0 0.0.0.0:34343           0.0.0.0:*
udp        0      0 perf:domain             0.0.0.0:*
udp        0      0 perf:domain             0.0.0.0:*
udp        0      0 0.0.0.0:bootps          0.0.0.0:*
udp        0      0 0.0.0.0:bootps          0.0.0.0:*
udp        0      0 0.0.0.0:bootpc          0.0.0.0:*
udp        0      0 0.0.0.0:sunrpc          0.0.0.0:*
udp6       0      0 [::]:sunrpc             [::]:*

7. 列出所有 UNIX 系统监听中的连接

$ netstat -lx
Active UNIX domain sockets (only servers)

8. 各种协议的数据统计(默认 TCP、UDP、ICMP 和 IP 协议)

$ netstat -s
Ip:
    792239 total packets received
    0 forwarded
    0 incoming packets discarded
    792053 incoming packets delivered
    306454 requests sent out
Icmp:
    21 ICMP messages received
    0 input ICMP message failed.
    ICMP input histogram:
        destination unreachable: 21
    24 ICMP messages sent
    0 ICMP messages failed
    ICMP output histogram:
        destination unreachable: 24
IcmpMsg:
        InType3: 21
        OutType3: 24
Tcp:
    105 active connections openings
    1 passive connection openings
    0 failed connection attempts
    0 connection resets received
    1 connections established
    791751 segments received
    306688 segments send out
    8 segments retransmited
    0 bad segments received.
    0 resets sent
Udp:
    257 packets received
    24 packets to unknown port received.
    0 packet receive errors
    324 packets sent
    0 receive buffer errors
    0 send buffer errors
UdpLite:
TcpExt:
    101 TCP sockets finished time wait in fast timer
    54 delayed acks sent
    763003 packet headers predicted
    8086 acknowledgments not containing data payload received
    9067 predicted acknowledgments
    1 other TCP timeouts
    1 connections aborted due to timeout
    TCPRcvCoalesce: 597022
    TCPOrigDataSent: 17596
IpExt:
    InNoRoutes: 1
    InMcastPkts: 54
    OutMcastPkts: 40
    InBcastPkts: 122
    InOctets: 1098121224
    OutOctets: 19421397
    InMcastOctets: 9676
    OutMcastOctets: 5550
    InBcastOctets: 23316
    InNoECTPkts: 791596
    InECT0Pkts: 643

9. TCP 协议的数据统计

$ netstat -st
IcmpMsg:
    InType3: 21
    OutType3: 24
Tcp:
    105 active connections openings
    1 passive connection openings
    0 failed connection attempts
    0 connection resets received
    1 connections established
    791759 segments received
    306694 segments send out
    8 segments retransmited
    0 bad segments received.
    0 resets sent

10. UDP 协议的数据统计

$ netstat -su
IcmpMsg:
    InType3: 21
    OutType3: 24
Udp:
    257 packets received
    24 packets to unknown port received.
    0 packet receive errors
    324 packets sent
    0 receive buffer errors
    0 send buffer errors

11. 查看已有连接建立的 PID

$ netstat -tp
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 perf.shared:ssh         10.211.55.2:63952       ESTABLISHED 2398/sshd: root@pts

12. 持续监控连接状态

默认每秒刷新一次。

$ netstat -ac 5 | grep tcp
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:sunrpc          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:http            0.0.0.0:*               LISTEN
tcp        0      0 perf:domain             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
tcp        0      0 localhost:ipp           0.0.0.0:*               LISTEN
tcp        0      0 perf.shared:ssh         10.211.55.2:63952       ESTABLISHED
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN
tcp6       0      0 [::]:sunrpc             [::]:*                  LISTEN
tcp6       0      0 [::]:http               [::]:*                  LISTEN
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
tcp6       0      0 localhost:ipp           [::]:*                  LISTEN
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:sunrpc          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:http            0.0.0.0:*               LISTEN
tcp        0      0 perf:domain             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
tcp        0      0 localhost:ipp           0.0.0.0:*               LISTEN
tcp        0      0 perf.shared:ssh         10.211.55.2:63952       ESTABLISHED
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN
tcp6       0      0 [::]:sunrpc             [::]:*                  LISTEN
tcp6       0      0 [::]:http               [::]:*                  LISTEN
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
tcp6       0      0 localhost:ipp           [::]:*                  LISTEN

13. 查看内核路由表

$ netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         prl-local-ns-se 0.0.0.0         UG        0 0          0 eth0
10.211.55.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.122.0   0.0.0.0         255.255.255.0   U         0 0          0 virbr0

14. 统计网卡流量

$ netstat -i
Kernel Interface table
Iface             MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0             1500   792442      0      0 0        306559      0      0      0 BMRU
lo              65536       84      0      0 0            84      0      0      0 LRU
virbr0           1500        0      0      0 0             0      0      0      0 BMU

15. 查看内核网卡表

和 ifconfig 命令有点像。

$ netstat -ie
Kernel Interface table
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.211.55.52  netmask 255.255.255.0  broadcast 10.211.55.255
        inet6 fe80::d41a:a6de:73c6:70fd  prefixlen 64  scopeid 0x20<link>
        ether 00:1c:42:fd:02:ad  txqueuelen 1000  (Ethernet)
        RX packets 792455  bytes 1109232863 (1.0 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 306565  bytes 23769137 (22.6 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 84  bytes 9492 (9.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 84  bytes 9492 (9.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:b9:2f:bb  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

16. 查看多重广播功能群组组员名单(IPv4/IPv6)

$ netstat -g
IPv6/IPv4 Group Memberships
Interface       RefCnt Group
--------------- ------ ---------------------
lo              1      all-systems.mcast.net
eth0            1      224.0.0.251
eth0            1      all-systems.mcast.net
virbr0          1      224.0.0.251
virbr0          1      all-systems.mcast.net
lo              1      ff02::1
lo              1      ff01::1
eth0            1      ff02::1:ffc6:70fd
eth0            1      ff02::1
eth0            1      ff01::1
virbr0          1      ff02::1
virbr0          1      ff01::1
virbr0-nic      1      ff02::1
virbr0-nic      1      ff01::1

17. 查找正在监听的程序

$ netstat -ap | grep http
tcp        0      0 0.0.0.0:http            0.0.0.0:*               LISTEN      3056/nginx: master
tcp6       0      0 [::]:http               [::]:*                  LISTEN      3056/nginx: master