目录
一、简介
netstat命令用于显示IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口网络连接情况。netstat是在内核中访问网络及相关信息的程序,他能提供TCP连接,TCP和UDP监听,进程管理的相关报告。
二、主要参数
-a 显示所有连接和监听端口
-t 显示tcp链接
-u 显示udp链接
-p 显示程序名字
-n 拒绝显示别名,能显示数字的全部转换位数字
-l 仅列出有在Listen(监听)的服务状态
-r 显示路由信息,路由表
-e 显示扩展信息,如Inode等
-s 按各个协议统计
-c 每隔一个固定时间,执行netstat命令
-i 显示网卡接口。即显示所有网络接口的信息。
提示LISTEN和ESTABLISHED的状态只有用-a或者-l才能看到
三、输出信息描述
[root@sy-suz-srv51 ~]# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 k8sdev.sui:sun-sr-https k8sdev.suiyi.com.:34880 SYN_RECV
tcp 0 0 k8sdev.suiyi.com.c:2379 10.1.62.21:47910 ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 3 [ ] DGRAM 18442 /run/systemd/notify
unix 2 [ ] DGRAM 14151 /var/run/nscd/socket
unix 2 [ ] DGRAM 584 /run/systemd/shutdownd
unix 3 [ ] STREAM CONNECTED 124439388 /run/dbus/system_bus_socket
unix 3 [ ] STREAM CONNECTED 42312 /run/systemd/journal/stdout
netstat的输出结果可以分为两个部分
1、Active Internet connections 有源TCP连接,其中"Recv-Q"和"Send-Q"指接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。
2、Active UNIX domain sockets 有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。
列名解释:
Proto:显示连接使用的协议。
RefCnt:表示连接到本套接口上的进程号。
Types:显示套接口的类型。
State:显示套接口当前的状态。
LISTEN :在监听状态中。
ESTABLISHED:已建立联机的联机情况。
TIME_WAIT:该联机在目前已经是等待的状态。
Path:表示连接到套接口的其它进程使用的路径名。
四、使用实例
统计机器中网络连接各个状态个数。
netstat -a | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
把状态全都取出来后使用 uniq -c 统计后再进行排序。
netstat -nat |awk '{print $6}'|sort|uniq -c
查看连接某服务端口最多的的IP地址。
netstat -nat | grep "192.168.120.20:16067" |awk '{print $5}'|awk -F: '{print $4}'|sort|uniq -c|sort -nr|head -20
找出 ssh 程序运行的端口。
netstat -ap | grep ssh
在 netstat 输出中显示 PID 和进程名称。
netstat -pt
找出运行在指定端口的进程。然后再通过 ps 命令就可以找到具体的应用程序了。
netstat -anpt | grep ':16064'
显示路由信息
[root@boke ~]# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default gateway 0.0.0.0 UG 0 0 0 eth0
link-local 0.0.0.0 255.255.0.0 U 0 0 0 eth0
172.17.96.0 0.0.0.0 255.255.240.0 U 0 0 0 eth0