良许 | 网络检测神器 ss 命令,你可能根本就不会用!

今天咱们来介绍一下 Linux ss 命令。安全

ss 是 Socket Statistics 的缩写,用来统计 socket 链接的相关信息,它跟 netstat 差很少,但有着比 netstat 更强大的统计功能,可以显示更多更详细的链接信息。网络

刚开始接触 ss 命令可能会比较困难,咱们可经过 ss -h 或者 ss -help 来详细学习 ss 的选项功能。固然,最好的办法是直接尝试一些经常使用的命令来学习 ss 。dom

下面咱们来了解一下 ss 的一些实用用法。ssh

复制代码

$ ss -sTotal: 524TCP: 8 (estab 1, closed 0, orphaned 0, timewait 0)socket

Transport Total IP IPv6RAW 2 1 1UDP 7 5 2TCP 8 6 2INET 17 12 5FRAG 0 0 0tcp

- **RAW** Socket 原始套接字。容许直接发送和接收 IP 数据包,无需知足特定的传输协议,用于 namp 等安全应用。
- **TCP** 传输控制协议。是咱们网络链接当中的主要链接协议。
- **UDP** 用户数据报协议。相似于 TCP 但没有错误检查。 
- **INET** 包含上述项。( INET4 和 INET6 能够经过一些 ss 命令单独查看)。
- **FRAG** 能够理解为碎片的意思。

显然,上面的输出结果并无直接显示详细的 socket 链接状况,咱们能够看到最上面的 ```Total``` 行显示的 socket 总数是很是多的,不过,这种分类统计的方式在某些状况下颇有用。

若是想要查看具体的 socket 活动信息,咱们可使用 ```ss -a``` 命令,可是咱们要作好心理准备查看一大堆的信息,咱们能够先用 ```wc -l``` 来统计一下行数试探一波:复制代码

$ ss -a | wc -l555学习

有木有被吓到?555 行数据!

不过没必要惊慌,咱们能够查看指定类别的 socket 活动。
- ```ss -ta``` 转储全部 TCP socket
- ```ss -ua``` 转储全部 UDP socket
- ```ss -wa``` 转储全部 RAW socket
- ```ss -xa``` 转储全部 UNIX socket
- ```ss -4a``` 转储全部 IPV4 socket
- ```ss -6a``` 转储全部 IPV6 socket

不带参数的 ss 命令会显示全部已经创建的 socket 链接。为了方便阅读,这里只显示一页的信息,省略其余大部分信息:复制代码

$ ss | moreNetid State Recv-Q Send-Q Local Address:Port Peer Address:Portu_str ESTAB 0 0 * 20863 * 20864u_str ESTAB 0 0 * 32232 * 33018u_str ESTAB 0 0 * 33147 * 3257544ddddyu_str ESTAB 0 0 /run/user/121/bus 32796 * 32795u_str ESTAB 0 0 /run/user/121/bus 32574 * 32573u_str ESTAB 0 0 * 32782 * 32783u_str ESTAB 0 0 /run/systemd/journal/stdout 19091 * 18113u_str ESTAB 0 0 * 769568 * 768429u_str ESTAB 0 0 * 32560 * 32561u_str ESTAB 0 0 @/tmp/dbus-8xbBdjNe 33155 * 33154u_str ESTAB 0 0 /run/systemd/journal/stdout 32783 * 32782…tcp ESTAB 0 64 192.168.0.16:ssh 192.168.0.6:25944tcp ESTAB 0 0 192.168.0.16:ssh 192.168.0.6:5385spa

要查看刚创建的 TCP 链接,使用 ```ss -t``` :复制代码

$ ss -tState Recv-Q Send-Q Local Address:Port Peer Address:PortESTAB 0 64 192.168.0.16:ssh 192.168.0.6:25944ESTAB 0 0 192.168.0.16:ssh 192.168.0.9:5385code

要仅显示监听 socket ,尝试 ```ss -lt``` :复制代码

$ ss -ltState Recv-Q Send-Q Local Address:Port Peer Address:PortLISTEN 0 10 127.0.0.1:submission 0.0.0.0:*LISTEN 0 128 127.0.0.53%lo:domain 0.0.0.0:*LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*LISTEN 0 5 127.0.0.1:ipp 0.0.0.0:*LISTEN 0 10 127.0.0.1:smtp 0.0.0.0:*LISTEN 0 128 [::]:ssh [::]:*LISTEN 0 5 [::1]:ipp [::]:*cdn

若你想要显示端口号而不是服务名,则 ```ss -ltn``` :复制代码

$ ss -ltnState Recv-Q Send-Q Local Address:Port Peer Address:PortLISTEN 0 10 127.0.0.1:587 0.0.0.0:*LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:*LISTEN 0 128 0.0.0.0:22 0.0.0.0:*LISTEN 0 5 127.0.0.1:631 0.0.0.0:*LISTEN 0 10 127.0.0.1:25 0.0.0.0:*LISTEN 0 128 [::]:22 [::]:*LISTEN 0 5 [::1]:631 [::]:*

这里就先介绍这么多,其余的详细内容请参考帮助手册( ```ss -h```)。

另外,这里提供一些小技巧,你能够将那些最有用的选项转换为别名,能让你更容易使用。例如:复制代码

$ alias listen="ss -lt"$ alias socksum="ss -s"`

-----------------

我是良许,世界500强外企 Linux 开发工程师,专业生产 Linux 干货。欢迎关注个人公众号「良许Linux」,回复「1024」获取最新最全的技术资料,回复「入群」进入高手如云技术交流群。

img

相关文章
相关标签/搜索