如何使用 ss 在 Linux 上监控网络连接

当涉及到故障排除和修复网络问题时,Linux 实用程序是服务器管理员的救命稻草。 以前,管理员在 Linux 上使用 netstat 命令查看网络统计信息和其他与套接字相关的信息。 但是这个命令现在已经被弃用了一个更好的工具。

ss 命令取代了 netstat,因为它提供了比其前身更详细的信息。 本文将演示如何使用 ss 从系统中提取与套接字相关的信息。

什么是 ss 命令?

ss 命令是套接字统计信息的缩写,它是一个 Linux 实用程序,它以详细且易于阅读的格式显示与网络连接相关的信息。 您可以使用 ss 进行故障排除和查找网络问题,因为它提供了有关连接的完整详细信息。

如前所述,ss 取代了 netstat,后者是 Linux 上用于列出套接字统计信息的原始实用程序。 ss 命令易于使用,提供更多信息,并提供快速准确的结果。

如何在 Linux 上使用 ss

使用 ss,您可以列出系统上的所有套接字连接。 此外,还可以根据类型、目标地址和端口号过滤连接。

基本语法

ss 命令的基本语法是:

ss options

…在哪里 选项 是可用于调用命令功能的标志。

最简单的 ss 命令显示所有已建立连接的列表,无论连接类型如何。

ss

输出:

注意上图中, 状态 列仅包含一个值,即 ESTAB,它表示已建立的连接。

您将在输出中找到以下列标题:

  • 网名:这表示用于连接的套接字类型。 可能的值为 TCP、UDP、u_seq(Unix 序列)和 u_str(Unix 字符串)。
  • 状态:状态栏显示连接的状态。 您会找到诸如 ESTAB、UNCONN 和 LISTEN 之类的值,它们分别代表已建立、未连接和正在侦听。
  • 接收-Q:队列中存在的已接收数据包数。
  • 发送-Q:队列中发送的数据包数。
  • 本地地址和端口:用户机器的本地地址和端口号。
  • 对等地址和端口:目标机器的地址和端口号。

获取所有套接字的列表

使用 -一种 标志显示网络中存在的所有套接字,侦听或非侦听。

ss -a

输出:

列出所有当前的监听套接字

要仅检索与当前正在侦听的套接字相关的信息,请使用 -l 用命令标记。 这 -l 代表 聆听.

ss -l

Ss 将显示您的设备或网络上所有活动的侦听套接字。 请注意,几乎输出中的每个套接字都处于未连接状态。

一旦侦听套接字获得传入连接,它就会创建一个子套接字并使用它来建立连接。 然后,您可以使用 Linux tcpdump 实用程序来监视和过滤网络上的数据包。

显示 TCP、UDP 和 Unix 连接

在 Linux 上,有多种类型的套接字,包括 TCP、UDP 和 Unix 套接字。 您可以使用 ss 列出属于特定套接字类型的所有连接。

列出计算机上的每个 TCP 套接字:

ss -t

输出:

-u flag 将显示所有 UDP 套接字的列表:

ss -u

输出:

要使用 ss 检索 Unix 套接字列表,请使用 -X 旗帜:

ss -x

输出:

默认情况下,ss 只显示已连接的套接字。 要获取所有套接字的列表,无论连接状态如何,请使用 -一种 使用以下命令标记:

ss -ta
ss -ua
ss -xa

使用状态过滤 TCP 连接

TCP 套接字有多种状态,您可以使用它们来过滤结果。 您可以使用以下套接字状态来过滤与 ss 的连接:已建立、已关闭、正在侦听、正在关闭、全部、已连接、已同步、存储桶、大、时间等待等。

使用连接状态过滤 TCP 连接的基本格式是:

ss -t state filter

…在哪里 筛选 是连接的状态,对于 example, 已确立的。

列出 IPv4 和 IPv6 连接

您可以使用 -4-6 获取设备上 IPv4 和 IPv6 套接字列表的标志:

ss -4
ss -6

输出:

您还可以使用 state 方法过滤 IPv4 和 IPv6 套接字。

ss -4 state established
ss -6 state established

使用端口号过滤连接

您可以指定 端口运动 ss 命令中的值以使用端口号和协议过滤连接。 这 端口运动 选项代表 目的端口源端口 分别。

获取与具有源端口 39700 或目标端口的连接相关的信息 https

ss -ta '( dport = :https or sport = :39700)'

输出:

您还可以将 state 方法与端口过滤器结合使用以获得精确的结果:

ss -ta state established ‘( dport = :https or sport = :https )’

使用 ss 列出原始套接字

您可以使用 -w 或者 – 生的 标志以在您的设备上显示原始套接字:

ss -w
ss --raw

输出:

显示与特定设备的连接

使用 ss,您还可以显示具有特定目标地址的连接列表。

ss dst ipaddress

…在哪里 IP地址 是目标设备的地址。

为了 example:

显示连接的进程 ID

在对网络进行故障排除时,了解有问题的连接的进程 ID 会很有帮助。

要显示与 TCP 连接关联的 PID:

ss -t -p

Ss 还显示建立连接的应用程序的名称。

此外,您可以使用 ps 命令获得有关该进程的更多详细信息。

获取网络统计信息摘要

-s 标志允许用户查看其网络或设备的总体摘要。 汇总包括总连接数、套接字的数量和类型等。

ss -s

输出:

将输出发送到文件

您还可以使用 > 输出运算符。

ss > output.txt

输出:

用 grep 实现 ss

如果您想过滤 ss 提供的数据但似乎无法回忆命令的格式,您可以使用 ss 管道 grep 以获得所需的结果。

为了 example使用 ss 和 grep 获取所有已建立的 TCP 连接的列表:

ss -t | grep ESTAB

输出:

在 Linux 上监控网络连接

在 Linux 上,一切都有一个命令。 从创建文件到监控网络,你可以命名它。 但是随着大量实用程序的出现,问题是哪个是最好的。

除了计算机的软件方面,用户还应该清楚地了解他们系统的硬件规格。 有几个可用的命令允许用户轻松提取与其系统和硬件相关的信息。