运维人员不仅要熟悉操作系统、服务器、网络等只是,甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作,持续给大家更新运维工作所需要接触到的知识点,希望大家喜欢。
今天我们要讲的是 Netstat。
一、简介
netstat命令的功能是显示网络连接、路由表和网络接口信息,可以让用户得知有哪些网络连接正在运作。使用时如果不带参数,netstat显示活动的 TCP 连接。
netstat基本语法:
netstat [-a] [-b] [-e] [-n] [-o] [-p <Protocol>] [-r] [-s] [<interval>]
二、基本用法
2.1. 查看监听
参数 | 说明 |
netstat -ltunp | 所有监听端口 |
netstat -ltn | 监听 TCP 端口 |
netstat -lun | 监听 UDP 端口 |
netstat -lx | 监听 Unix 端口 |
netstat -lt | 仅列出侦听 TCP 端口 |
netstat -lu | 仅列出侦听 UDP 端口 |
netstat -l | 列出所有监听条件 |
2.2. 查看网络
参数 | 说明 |
netstat -i | 显示网络接口 |
netstat -ie | 显示网络接口扩展信息 |
netstat -n | 仅显示 IP 地址 |
netstat -F | 尽可能显示 IP 地址的域名 |
2.3. 查看统计数据
参数 | 说明 |
netstat -s | 显示统计信息 |
netstat -st | 显示 TCP 统计信息 |
netstat -su | 显示 UDP 统计信息 |
netstat -ltpe | 使用进程信息和扩展信息显示 TCP 的侦听连接 |
netstat -tp | 显示带有 PID 编号的服务名称 |
sudo netstat -nlpt | 列出进程名称/PID 和用户 ID |
netstat -nlptue | 所有带有 PID 和扩展信息的侦听端口 |
netstat -M | 显示伪装的连接 |
2.4. 查看路由
参数 | 说明 |
netstat -r | 显示路由表 |
netstat -rn | 显示路由表,不解析主机 |
2.5. 查看连接
参数 | 说明 |
netstat -a | 所有连接 |
netstat -at | 所有 TCP 连接 |
netstat -au | 所有 UDP 连接 |
netstat -ant | 显示没有反向 DNS 查找的 IP 地址 |
netstat | 活动连接 |
netstat -a | 所有连接 |
netstat -at | 所有 TCP 连接 |
netstat -au | 所有 UDP 连接 |
netstat -ant | 显示没有反向 DNS 查找的 IP 地址 |
netstat -tnl | 监听 TCP 端口 |
netstat -unl | 监听 UDP 端口 |
netstat -atnp | grep ESTA | 显示活动/已建立的连接 |
netstat -anp | grep":8080" | 显示到特定端口的所有打开连接 |
netstat --tcp --numeric | 显示没有域名的 TCP 连接 |
watch -d -n0 "netstat -atnp | grep ESTA" | 获取活动连接的连续列表 |
netstat -aple | grep http | 检查服务是否正在运行 |
三、进阶命令
3.1. 显示具有大量连接的 IP
$ netstat -tn 2>/dev/null | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head
3.2. 显示连接到端口 80 的 IP 地址
$ netstat -tn 2>/dev/null | grep ':80 ' | awk '{print $5}' |sed -e 's/::ffff://' | cut -f1 -d: | sort | uniq -c | sort -rn | head
3.3. 显示端口 80 上的活动连接数
$ netstat -an |grep :80 |wc -l
3.4. 查看每个远程 IP 的连接数
$ netstat -antu | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -n
$ netstat -antu | awk '$5 ~ /[0-9]:/{split($5, a, ":"); ips[a[1]]++} END {for (ip in ips) print ips[ip], ip | "sort -k1 -nr"}'
3.5. 显示活动 SYNC_REC
以下命令将输出服务器上正在发生和正在发生的活动 SYNC_REC 数量。数量应该很低(小于 5)。如果该数字为两位数,则您可能正在遭受 DoS 攻击或被邮件轰炸。
$ netstat -n -p|grep SYN_REC | wc -l
列出发送 SYN_REC 连接的唯一 IP 地址,该命令也列出了发送 SYN_REC 连接状态的节点的所有唯一 IP 地址:
$ netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'
总结:netstat命令是我们定位网络相关问题的利器,大家可以在自己的环境里面多多尝试看看效果,实践出真知。