CentOS 7 ss命令代替 netstat

ss是Socket Statistics的缩写。

ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。

netstat命令是net-tools工具集中的一员,而ss命令是iproute工具集中的一员。

如果你无法使用ss命令,那么可能是缺少了iproute,需要安装一下:

yum install iproute iproute-doc

net-tools是一套标准的Unix网络工具,用于配置网络接口、设置路由表信息、管理ARP表、显示和统计各类网络信息等等,但是遗憾的是,这个工具自2001年起便不再更新和维护了。

iproute是一套可以支持IPv4/IPv6网络的用于管理TCP/UDP/IP网络的工具集。

iproute工具集几乎可以替代掉net-tools工具集,替代方案如下:

用途 net-tool (被淘汰) iproute2
地址和链路配置 ifconfig ip addr, ip link
路由表 route ip route
邻居 arp ip neigh
VLAN vconfig ip link
隧道 iptunnel ip tunnel
组播 ipmaddr ip maddr
统计 netstat ss

netstat参数和使用

常用参数-anplt

-a 显示所有活动的连接以及本机侦听的TCP、UDP端口

-l 显示监听的server port

-n 直接使用IP地址,不通过域名服务器

-p 正在使用Socket的程序PID和程序名称

-r 显示路由表

-t 显示TCP传输协议的连线状况

-u 显示UDP传输协议的连线状况

-w 显示RAW传输协议的连线状

ss(socket statistics)参数和使用

常用参数和netstat类似,如-anp

-a显示所有的sockets

-l显示正在监听的

-n显示数字IP和端口,不通过域名服务器

-p显示使用socket的对应的程序

-t只显示TCP sockets

-u只显示UDP sockets

-4 -6 只显示v4或v6V版本的sockets

-s打印出统计信息。这个选项不解析从各种源获得的socket。对于解析/proc/net/top大量的sockets计数时很有效

-0 显示PACKET sockets

-w 只显示RAW sockets

-x只显示UNIX域sockets

-r尝试进行域名解析,地址/端口

样例

1
2
3
4
5
6
7
8
#打印统计信息
ss -s
#本地打开的端口:
ss -l
ss -ln
ss -lp
#想看当前机器的80端口被谁占用了
ss -lp src :80

ss [ OPTIONS ] [ STATE-FILTER ] [ ADDRESS-FILTER ]

我们可以根据socket的状态STATE-FILTER来进行过滤,也可通过端口与ip地址ADDRESS-FILTER进行过滤。

  • STATE-FILTER可用的过滤条件有:

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接收到连接中断请求的确认

CLOSED:没有任何连接状态

  • ADDRESS-FILTER用于过滤端口与地址。而且可以进行表达式组合。可用的子表达式有:

dst ADDRESS_PATTERN

src ADDRESS_PATTERN

dport RELOP PORT

sport RELOP PORT

autobound

其中ADDRESS_PATTERN为ip地址与端口匹配,ip:port,可以用*代替。RELOP为<= >=或==