匹配远程地址和端口号
$ ss dst 192.168.1.5 $ ss dst 192.168.119.113:http $ ss dst 192.168.119.113:443
匹配本地地址和端口号
$ ss src 192.168.119.103 $ ss src 192.168.119.103:http $ ss src 192.168.119.103:80
将本地或者远程端口和一个数比较
可以使用下面的语法做端口号的过滤:
$ ss dport OP PORT $ ss sport OP PORT
OP 可以代表以下任意一个:
| <= | le | 小于或等于某个端口号 |
| >= | ge | 大于或等于某个端口号 |
| == | eq | 等于某个端口号 |
| != | ne | 不等于某个端口号 |
| > | gt | 大于某个端口号 |
| < | lt | 小于某个端口号 |
下面是一个简单的 demo(注意,需要对尖括号使用转义符):
$ ss -tunl sport lt 50 $ ss -tunl sport < 50

通过 TCP 的状态进行过滤
ss 命令还可以通过 TCP 连接的状态进程过滤,支持的 TCP 协议中的状态有:
established
syn-sent
syn-recv
fin-wait-1
fin-wait-2
time-wait
closed
close-wait
last-ack
listening
closing
除了上面的 TCP 状态,还可以使用下面这些状态:
| all | 列出所有的 TCP 状态。 |
| connected | 列出除了 listening 和 closing 之外的所有 TCP 状态。 |
| synchronized | 列出除了 syn-sent 之外的所有 TCP 状态。 |
| bucket | 列出 maintained 的状态,如:time-wait 和 syn-recv。 |
| big | 列出和 bucket 相反的状态。 |
使用 ipv4 时的过滤语法如下:
$ ss -4 state filter
使用 ipv6 时的过滤语法如下:
$ ss -6 state filter
下面是一个简单的例子:
$ ss -4 state listening

同时过滤 TCP 的状态和端口号
(注意下面命令中的转义符和空格,都是必须的。如果不用转义符,可以使用单引号)
下面的命令显示所有状态为 established 的 ssh 连接:
$ ss -4n state listening








