<span>netstat</span>
一:netstat
netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。
netstat 查看端口占用语法格式:
netstat -tunlp | grep 端口号
- -t (tcp) 仅显示tcp相关选项
- -u (udp)仅显示udp相关选项
- -n 拒绝显示别名,能显示数字的全部转化为数字
- -l 仅列出在Listen(监听)的服务状态
- -p 显示建立相关链接的程序名
- -a (all)显示所有选项,默认不显示LISTEN相关
- r 显示路由信息,路由表
- e 显示扩展信息,例如uid等
- s 按各个协议进行统计
- c 每隔一个固定时间,执行该netstat命令
提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到
二:列出所有端口 (包括监听和未监听的)
1:列出所有端口 netstat -a
- # netstat -a | more
- Active Internet connections (servers and established)
- Proto Recv-Q Send-Q Local Address Foreign Address State
- tcp 0 0 localhost:30037 *:* LISTEN
- udp 0 0 *:bootpc *:*
-
- Active UNIX domain sockets (servers and established)
- Proto RefCnt Flags Type State I-Node Path
- unix 2 [ ACC ] STREAM LISTENING 6135 /tmp/.X11-unix/X0
- unix 2 [ ACC ] STREAM LISTENING 5140 /var/run/acpid.socket
2:列出所有 tcp 端口 netstat -at
- # netstat -at
- Active Internet connections (servers and established)
- Proto Recv-Q Send-Q Local Address Foreign Address State
- tcp 0 0 localhost:30037 *:* LISTEN
- tcp 0 0 localhost:ipp *:* LISTEN
- tcp 0 0 *:smtp *:* LISTEN
- tcp6 0 0 localhost:ipp
3: 列出所有 udp 端口 netstat -au
- # netstat -au
- Active Internet connections (servers and established)
- Proto Recv-Q Send-Q Local Address Foreign Address State
- udp 0 0 *:bootpc *:*
- udp 0 0 *:49119 *:*
- udp 0 0 *:mdns *:*
三:列出所有处于监听状态的 Sockets
1:只显示监听端口 netstat -l
- # netstat -l
- Active Internet connections (only servers)
- Proto Recv-Q Send-Q Local Address Foreign Address State
- tcp 0 0 localhost:ipp *:* LISTEN
- tcp6 0 0 localhost:ipp [::]:* LISTEN
- udp 0 0 *:49119 *:*
2:只列出所有监听 tcp 端口 netstat -lt
- # netstat -lt
- Active Internet connections (only servers)
- Proto Recv-Q Send-Q Local Address Foreign Address State
- tcp 0 0 localhost:30037 *:* LISTEN
- tcp 0 0 *:smtp *:* LISTEN
- tcp6 0 0 localhost:ipp
3:只列出所有监听 udp 端口 netstat -lu
- # netstat -lu
- Active Internet connections (only servers)
- Proto Recv-Q Send-Q Local Address Foreign Address State
- udp 0 0 *:49119 *:*
- udp 0 0 *:mdns *:*
4:只列出所有监听 UNIX 端口 netstat -lx
- # netstat -lx
- Active UNIX domain sockets (only servers)
- Proto RefCnt Flags Type State I-Node Path
- unix 2 [ ACC ] STREAM LISTENING 6294 private/maildrop
- unix 2 [ ACC ] STREAM LISTENING 6203 public/cleanup
- unix 2 [ ACC ] STREAM LISTENING 6302 private/ifmail
- unix 2 [ ACC ] STREAM LISTENING 6306 private/bsmtp
5:在 netstat 输出中显示 PID 和进程名称 netstat -p
netstat -p 可以与其它开关一起使用,就可以添加 “PID/进程名称” 到 netstat 输出中,这样 debugging 的时候可以很方便的发现特定端口运行的程序。
- # netstat -pt
- Active Internet connections (w/o servers)
- Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
- tcp 1 0 ramesh-laptop.loc:47212 192.168.185.75:www CLOSE_WAIT 2109/firefox
- tcp 0 0 ramesh-laptop.loc:52750 lax:www ESTABLISHED 2109/firefox
6:在 netstat 输出中不显示主机,端口和用户名 (host, port or user)
当你不想让主机,端口和用户名显示,使用 netstat -n。将会使用数字代替那些名称。
同样可以加速输出,因为不用进行比对查询。
# netstat -an
7:持续输出 netstat 信息
netstat 将每隔一秒输出网络信息。
- # netstat -c
- Active Internet connections (w/o servers)
- Proto Recv-Q Send-Q Local Address Foreign Address State
- tcp 0 0 ramesh-laptop.loc:36130 101-101-181-225.ama:www ESTABLISHED
- tcp 1 1 ramesh-laptop.loc:52564 101.11.169.230:www CLOSING
- tcp 0 0 ramesh-laptop.loc:43758 server-101-101-43-2:www ESTABLISHED
- tcp 1 1 ramesh-laptop.loc:42367 101.101.34.101:www CLOSING
- ^C
8:显示系统不支持的地址族 (Address Families)
- netstat --verbose
-
- netstat: no support for `AF IPX' on this system.
- netstat: no support for `AF AX25' on this system.
- netstat: no support for `AF X25' on this system.
- netstat: no support for `AF NETROM' on this system.
9:显示核心路由信息 netstat -r
- # netstat -r
- Kernel IP routing table
- Destination Gateway Genmask Flags MSS Window irtt Iface
- 192.168.1.0 * 255.255.255.0 U 0 0 0 eth2
- link-local * 255.255.0.0 U 0 0 0 eth2
- default 192.168.1.1 0.0.0.0 UG 0 0 0 eth2
注意: 使用 netstat -rn 显示数字格式,不查询主机名称。
10:找出程序运行的端口
并不是所有的进程都能找到,没有权限的会不显示,使用 root 权限查看所有的信息。
- # netstat -ap | grep ssh
- tcp 1 0 dev-db:ssh 101.174.100.22:39213 CLOSE_WAIT -
- tcp 1 0 dev-db:ssh 101.174.100.22:57643 CLOSE_WAIT -
11:显示网络接口列表
- # netstat -i
- Kernel Interface table
- Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
- eth0 1500 0 0 0 0 0 0 0 0 0 BMU
- eth2 1500 0 26196 0 0 0 26883 6 0 0 BMRU
- lo 16436 0 4 0 0 0 4 0 0 0 LRU
显示详细信息,像是 ifconfig 使用 netstat -ie:
- # netstat -ie
- Kernel Interface table
- eth0 Link encap:Ethernet HWaddr 00:10:40:11:11:11
- UP BROADCAST MULTICAST MTU:1500 Metric:1
- RX packets:0 errors:0 dropped:0 overruns:0 frame:0
- TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
- collisions:0 txqueuelen:1000
- RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
- Memory:f6ae0000-f6b00000
四:IP和TCP实际应用案例分析
第一、查看连接某服务最多的的IP地址
- [ root@izwz99z5o9dc90keftqhlrz ~]# netstat -nat |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20
-
- 11 120.227.29.121
- 7
- 4 0.0.0.0
- 2 47.106.203.79
- 1 and
- 1 Address
- 1 163.177.83.164
- 1 100.100.30.25
第二、查看连接指定服务器端口6379最多的的IP地址
- [root@izwz99z5o9dc90keftqhlrz ~]# netstat -nat | grep "47.106.203.79:6379" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20
-
- 1 47.106.203.79
第三、查看80端口的连接数
- [root@izwz99z5o9dc90keftqhlrz ~] # netstat -nat|grep -i "80"|wc -l
- 7
第四、连接的IP数量进行排序
- [ root@izwz99z5o9dc90keftqhlrz ~]# netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
-
- 1 100.100.30.25
- 1 120.227.29.121
- 1 163.177.83.164
- 1 Address
- 1 servers)
- 2 120.41.45.100
- 2 47.106.203.79
第五、TCP连接状况
- netstat -nat |awk '{ print $6}'|sort|uniq -c|sort -rn
- netstat -n | awk '/^tcp/ {++ S[$NF]};END {for(a in S) print a, S[a]}'
- netstat -n | awk '/^tcp/ {++state[$ NF]}; END {for(key in state) print key,"\t",state[key]}'
- netstat -n | awk '/^tcp/ {++arr[$ NF]};END {for(k in arr) print k,"\t",arr[k]}'
- netstat -n |awk '/^tcp/ { print $NF}'|sort|uniq -c|sort -rn
- netstat -ant | awk '{ print $NF}' | grep -v '[a-z]' | sort | uniq -c
-
- 如:
- [root@izwz99z5o9dc90keftqhlrz ~]# netstat -nat |awk '{ print $6}'|sort|uniq -c|sort -rn
- 11 LISTEN
- 4 ESTABLISHED
- 1 TIME_WAIT
- 1 Foreign
- 1 established)
- 1 CLOSE_WAIT
第六、占用80端口最多的20个IP
- [ root@izwz99z5o9dc90keftqhlrz ~]# netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20
- 3 120.41.45.100
- 3
- 1 163.177.83.164
- 1 100.100.30.25
- 1 0.0.0.0
第七、查看time_wait较多的连接
- [ root@izwz99z5o9dc90keftqhlrz ~]# netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20
- 1 120.41.45.100:80
第八、查看SYN连接数
- [root@izwz99z5o9dc90keftqhlrz ~]# netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more
-