1 命令介绍
netstat 命令用于显示网络相关信息,包括 tcp, udp 以及 unix 套接字,也可以列出处于监听状态(即等待接入请求)的套接字,可以显示对应进程的端口号,
1.1 选项和参数
- -a (all)显示所有选项,默认不显示LISTEN相关
- -t (tcp)仅显示tcp相关选项
- -u (udp)仅显示udp相关选项
- -n 拒绝显示别名,能显示数字的全部转化成数字。
- -l 仅列出有在 Listen (监听) 的服务状态
- -p 显示建立相关链接的程序名
- -r 显示路由信息,路由表
- -e 显示扩展信息,例如uid等
- -s 按各个协议进行统计
- -c 每隔一个固定时间,执行该netstat命令。
1.2 输出结果
netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 host-10-239-166-72:ssh 10.118.9.136:56448 ESTABLISHED
tcp 0 2 210.34.6.89:telnet 210.34.6.96:2873 ESTABLISHED
tcp 296 0 210.34.6.89:1165 210.34.6.84:netbios-ssn ESTABLISHED
tcp 0 0 localhost.localdom:9001 localhost.localdom:1162 ESTABLISHED
tcp 0 0 localhost.localdom:1162 localhost.localdom:9001 ESTABLISHED
tcp 0 80 210.34.6.89:1161 210.34.6.10:netbios-ssn CLOSE
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 3 [ ] DGRAM 22536 /run/systemd/notify
unix 2 [ ] DGRAM 22538 /run/systemd/cgroups-agent
unix 2 [ ] DGRAM 435162379 /var/run/chrony/chronyd.sock
从整体上看,netstat的输出结果可以分为两个部分:
1. Active Internet connections,显示网络相关连接
- Proto:网络封包协议,氛围TCP和UDP
- Recv-Q和Send-Q:指%0A的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。
- Local Addr:本地端的IP: port
- Foreign Addr:远程端的IP: port
- State:连接状态,主要是建立ESTABLISED和监听LISTEN
2. Active UNIX domain sockets,显示用于本机通信的连接,性能可以提高一倍
- Proto:一般是unix
- RefCnt:表示连接到本套接口上的进程数量
- Types:显示套接口的类型,确认连接STREAM,不需确认DGRAM
- State:显示套接口当前的状态,CONNECTED表示多个进程已建立连接
- Path:表示连接到套接口的其它进程使用的路径名。
netstat -nlptu
找出系统上已在监听的网络和进程PID
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 选项可以同时查看进程名和用户名。
$ sudo netstat -ltpe
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 enlightened:domain *:* LISTEN root 11090 1144/dnsmasq
tcp 0 0 localhost:ipp *:* LISTEN root 9755 661/cupsd
tcp6 0 0 ip6-localhost:ipp [::]:* LISTEN root 9754 661/cupsd
netstat -s
打印出网络统计数据,包括某个协议下的收发包数量
netstat -rn
显示内核路由信息