iproute2 ss - 排除绑定到环回地址的套接字

iproute2 ss - 排除绑定到环回地址的套接字

我经常使用 来查看侦听套接字ss -nlptu,此列表通常包括绑定在 ipv4 或 ipv6 环回地址上的几个/十几个套接字。我们知道有一些有效的 ipv4 环回地址可以绑定,所以如果可以避免的话,我宁愿不使用 grep 之类的东西来排除最常见的地址。

有没有办法ss从其列表中排除本地/环回侦听端口?

答案1

ss有一个内置的过滤器语言,可惜它在手册页中几乎没有记录。本文档的最后剩余部分位于ip路由2版本 v4.13.0 并通过此提交删除:

doc:删除过时的 ss 文档
当前版本在手册页上有详细记录。 Latex 文档非常旧并且从未更新过。

ss.sgml编译/分发后,该文件可能会以其他格式出现。

这是一个例子:

<item>A. Address/port match, where address is checked against mask
      and port is either wildcard or exact. It is one of:
 
<tscreen><verb>
        dst prefix:port
        src prefix:port
        src unix:STRING
        src link:protocol:ifindex
        src nl:channel:pid
</verb></tscreen>

      Both prefix and port may be absent or replaced with <tt/*/,
      which means wildcard. UNIX socket use more powerful scheme
      matching to socket names by shell wildcards. Also, prefixes
      unix: and link: may be omitted, if address family is evident
      from context (with option <tt/-x/ or with <tt/-f unix/
      or with <tt/unix/ keyword) 

<p>

因此,如果您想排除任何环回地址,您可以执行以下操作:

ss -nlptu '! src 127.0.0.0/8 and ! src [::1]'

实际上需要引号只是因为 IPv6 地址格式,但一旦使用引号,最好将所有内容都加上引号。

相关内容