ss命令常用用法

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命令详解