简介
Netstat
可用于列出系统上 所有的网络套接字连接情况,包括tcp
, udp
以及 unix
套接字
还能列出处于 监听状态(即等待接入请求)的套接字。
具体功能分类如下:
打印网络连接
打印路由表
接口状态 (Interface Statistics
),接口数据统计
伪装 masquerade
连接
广播成员 (Multicast Memberships
) 等等
使用
常见参数
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
提示:LISTEN和LISTENING的状态只有用-a
或者-l
才能看到
常用命令:
命令 | 作用 |
---|---|
netstat -a | 可结合 more 部分输出 |
netstat -at | 列出所有 tcp 端口 |
netstat -au | 列出所有 udp 端口 |
netstat -l | 列出所有处于监听状态的 Sockets 和端口 |
netstat -lt | 只列出所有监听 tcp 端口 |
netstat -lu | 只列出所有监听udp 端口 |
netstat -lx | 只列出所有监听 UNIX 端口 |
netstat -s | 显示所有端口的统计信息,包括某个协议下的收发包数量 |
netstat -st 或 -su | 显示 TCP 或 UDP 端口的统计信息 |
查看端口和连接的信息时,能查看到它们对应的进程名和进程号对系统管理员来说是非常有帮助的。举个栗子,Apache
的 httpd
服务开启80端口,如果你要查看 http
服务是否已经启动,或者 http 服务是由 apache
还是 nginx
启动的,这时候你可以看看进程名。
命令 | 作用 |
---|---|
netstat -p | 输出中显示 PID 和 进程名称 |
netstat -p | 可以与其它开关一起使用,就可以添加 PID/进程名称 到 netstat 输出中这样 debugging 的时候可以很方便的发现特定端口运行的程序。 如:netstat -pt |
`netstat -ap | grep ssh` |
默认情况下 netstat
会通过反向域名解析技术查找每个 IP 地址对应的主机名。
这会降低查找速度。如果你觉得 IP 地址已经足够,而没有必要知道主机名,就使用 -n
选项禁用域名解析功能。
命令 | 作用 |
---|---|
netstat -n | 在 netstat 输出中不显示主机,端口和用户名 (host, port or user )将会使用数字代替那些名称。 |
netstat -an 结合 grep ':80' | 找出运行在指定端口的进程 |
命令 | 作用 |
---|---|
netstat -c | 将每隔一秒输出网络信息。 |
netstat --verbose | 显示系统不支持的地址族 (Address Families) |
命令 | 作用 |
---|---|
netstat -r | 显示核心路由信息 注意: 使用 netstat -rn 显示数字格式,不查询主机名称。 |
命令 | 作用 |
---|---|
netstat -i | 显示网络接口列表 |
netstat -ie | 显示详细信息,类似于 ifconfig |
命令 | 作用 |
---|---|
netstat -g | 会输出 IPv4 和 IPv6 的多播组信息。 |
复杂结合使用
IP和TCP分析
查看连接某服务端口最多的的IP
地址
netstat -nat | grep "192.168.1.15:22" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20
TCP各种状态列表
netstat -nat |awk '{print $6}'
分析access.log获得访问前10位的ip地址
awk '{print $1}' access.log |sort|uniq -c|sort -nr|head -10