ss命令比netstat更好用,在一些Linux发行版中已经取代了netstat
常用选项
代码语言:javascript
复制
-h, --help 帮助
-V, --version 显示版本号
-t, --tcp 显示 TCP 协议的 sockets
-u, --udp 显示 UDP 协议的 sockets
-x, --unix 显示 unix domain sockets,与 -f 选项相同
-n, --numeric 不解析服务的名称,如 "22" 端口不会显示成 "ssh"
-l, --listening 只显示处于监听状态的端口
-p, --processes 显示监听端口的进程(Ubuntu 上需要 sudo)
-a, --all 对 TCP 协议来说,既包含监听的端口,也包含建立的连接
-r, --resolve 把 IP 解释为域名,把端口号解释为协议名称
常用场景
- 默认 如果不添加选项 ss 命令默认输出所有建立的连接(不包含监听的端口),包括 tcp, udp, and unix socket 三种类型的连接:
代码语言:javascript
复制
$ sudo ss
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
u_str ESTAB 0 0 /run/systemd/journal/stdout 15889 * 15888
u_str ESTAB 0 0 * 15515 * 15516
u_str ESTAB 0 0 * 19657 * 19658
u_str ESTAB 0 0 /run/systemd/journal/stdout 15161 * 15756
tcp ESTAB 0 64 172.17.0.17:ssh 113.225.172.204:53724
- 查看当前监听的端口列表
代码语言:javascript
复制
$ sudo ss -tln
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:ssh *:*
- 查看指定端口是否被占用,如果被占用,则定位对应的进程
代码语言:javascript
复制
$ sudo ss -p src :22
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp ESTAB 0 64 172.17.0.17:ssh 113.225.172.204:53724 users:(("sshd",pid=18546,fd=3)) 113.225.172.204:53724
高级过滤
-
dst/src dport/sport
语法
可以通过 dst/src/dport/sprot 语法来过滤连接的来源和目标,来源端口和目标端口。
代码语言:javascript
复制
$ sudo ss -p sport = 22
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp ESTAB 0 64 172.17.0.17:ssh 113.225.172.204:53724 users:(("sshd",pid=18546,fd=3))
- 根据tcp状态过滤
代码语言:javascript
复制
# 使用 ipv4 时的过滤语法如下:
$ ss -4 state filter
# 使用 ipv6 时的过滤语法如下:
$ ss -6 state filter
参考
- ss命令详解