一: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," ",state[key]}'
-
netstat -n | awk '/^tcp/ {++arr[$NF]};END {for(k in arr) print k," ",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
-