运行环境:Ubuntu 16.04.6 LTS
一、netstat 语法
1.1、基本语法
bingsanlang@ubuntu:~$ netstat -h
usage: netstat [-vWeenNcCF] [<Af>] -r netstat {-V|--version|-h|--help}
netstat [-vWnNcaeol] [<Socket> ...]
netstat { [-vWeenNac] -i | [-cWnNe] -M | -s }
-r, --route display routing table //显示Routing Table。
-i, --interfaces display interface table //显示网络接口表单信息。
-g, --groups display multicast group memberships//显示多重广播功能群组组员名单。
-s, --statistics display networking statistics (like SNMP)//显示网络工作信息统计表。
-M, --masquerade display masqueraded connections//显示伪装的网络连线。
-v, --verbose be verbose //显示指令执行过程。
-W, --wide don't truncate IP addresses
-n, --numeric don't resolve names //直接使用IP地址,而不通过域名服务器。
--numeric-hosts don't resolve host names//无需解析主机名称
--numeric-ports don't resolve port names//无需解析端口名称
--numeric-users don't resolve user names//无需解析用户名称
-N, --symbolic resolve hardware names//显示网络硬件外围设备的符号连接名称。
-e, --extend display other/more information//显示网络其他相关信息。
-p, --programs display PID/Program name for sockets//显示正在使用Socket的程序识别码和程序名称。
-c, --continuous continuous listing //持续列出网络状态。
-l, --listening display listening server sockets//仅列出有在 Listen (监听) 的服務状态
-a, --all, --listening display all sockets (default: connected) //显示所有连线中的Socket。
-o, --timers display timers//显示计时器.
-F, --fib display Forwarding Information Base (default)//显示FIB.
-C, --cache display routing cache instead of FIB//显示路由器配置的快取信息。
<Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --netrom
<AF>=Use '-6|-4' or '-A <af>' or '--<af>'; default: inet
List of possible address families (which support routing):
inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25)
netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP)
x25 (CCITT X.25)
1.2、排查命令常用组合
- netstat -i // 显示网卡列表
- netstat -g // 显示组播组的关系
- netstat -s | more 10 //显示网络统计
- netstat -lntup | grep port // l:listening n:num t:tcp u:udp p:process
- netstat –e //用于显示关于以太网的统计数据。它列出的项目包括传送的数据报的总字节数、错误数、删除数、数据报的数量和广播的数量。这些统计数据既有发送的数据报数量,也有接收的数据报数量。这个选项可以用来统计一些基本的网络流量.
- netstat –r// 显示路由信息
- netstat -an | awk '/^tcp/ {++S[$NF]} END {for (a in S) print a,S[a]} ’ //统计机器中网络连接各个状态个数
- netstat -ant|awk ‘{print $6}’|sort|uniq –c//状态全都取出来后使用uniq -c统计后再进行排序.
- netstat -ant|grep “192.168.25.*”|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort -nr|uniq –c//查看连接某服务端口最多的的IP地址
- netstat -ap | grep ssh //找出程序运行的端口.
- netstat -pt//在 netstat 输出中显示 TCP连接信息
- netstat -p | grep port//找出运行在指定端口的进程
二、命令结果说明
bingsanlang@ubuntu:~$ netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 ubuntu:57824 server-54-192-151:https ESTABLISHED
.....省略很多
Active Internet connections:有源TCP连接,从当前的输出有6列,分别是:
列 | Proto | Recv-Q | Send-Q | Local Address | Foreign Address | State |
---|---|---|---|---|---|---|
列名称 | 连接协议 | 接收队列 | 发送队列 | 本地地址:端口 | 外部地址:端口 | 连接状态 |
连接状态有:
- LISTEN:侦听来自远方的TCP端口的连接请求
- SYN-SENT:再发送连接请求后等待匹配的连接请求(如果有大量这样的状态包,检查是否中招了)
- SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认(如有大量此状态,估计被flood攻击了)
- ESTABLISHED:代表一个打开的连接
- FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
- FIN-WAIT-2:从远程TCP等待连接中断请求
- CLOSE-WAIT:等待从本地用户发来的连接中断请求
- CLOSING:等待远程TCP对连接中断的确认
- LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认(不是什么好东西,此项出现,检查是否被攻击)
- TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
- C