如何使用 ss 监控 Linux 上的网络连接如何使用 ss 监控 Linux 上的网络连接如何使用 ss 监控 Linux 上的网络连接如何使用 ss 监控 Linux 上的网络连接
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

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

如果您怀疑 Linux 系统上存在网络问题,请参阅以下如何使用 ss 命令进行跟踪和故障排除。

在排除故障和修复网络问题时,Linux 实用程序是服务器管理员的救星。以前,管理员在 Linux 上使用 netstat 命令来查看网络统计信息和其他与套接字相关的信息。但该命令现已被弃用,以提供更好的工具。

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

ss 命令是什么?

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

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

如何在 Linux 上使用 ss

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

基本语法

ss 命令的基本语法是:

ss options

...其中 options 是可用于调用命令功能的标志。

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

ss

输出 :

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

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

  • Netid:这表示用于连接的套接字类型。可能的值为 TCP、UDP、u_seq(Unix 序列)和 u_str(Unix 字符串)。

  • 状态:“状态”列显示连接的状态。您会发现 ESTAB、UNCONN 和 LISTEN 等值,它们分别代表已建立、未连接和正在侦听。

  • Recv-Q:队列中已接收数据包的数量。

  • Send-Q:队列中已发送数据包的数量。

  • 本地地址和端口:用户机器的本地地址和端口号。

  • 对端地址和端口:目标机器的地址和端口号。

获取所有套接字的列表

使用 -a 标志显示网络中存在的所有套接字(侦听或非侦听)。

ss -a

输出 :

列出当前所有监听套接字

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

ss -l

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

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

显示 TCP、UDP 和 Unix 连接

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

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

ss -t

输出 :

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

ss -u

输出 :

要使用 ss 检索 Unix 套接字列表,请使用 -x 标志:

ss -x

输出 :

默认情况下,ss 仅显示已连接的套接字。要获取所有套接字的列表,无论连接状态如何,请在命令中使用 -a 标志:

ss -ta
ss -ua
ss -xa

使用状态过滤 TCP 连接

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

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

ss -t state filter

...其中 filter 是连接的状态,例如已建立的连接。

列出 IPv4 和 IPv6 连接

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

ss -4
ss -6

输出 :

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

ss -4 state established
ss -6 state established

使用端口号过滤连接

您可以在 ss 命令中指定 dport 和 sport 值,以使用端口号和协议过滤连接。 dport和sport选项分别代表目标端口和源端口。

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

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

输出 :

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

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

使用 ss 列出原始套接字

您可以使用 -w 或 --raw 标志来显示设备上的原始套接字:

ss -w
ss --raw

输出 :

显示与特定设备的连接

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

ss dst ipaddress

...其中 ipaddress 是目标设备的地址。

例如:

显示连接的进程 ID

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

显示与 TCP 连接关联的 PID:

ss -t -p

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

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

获取网络统计信息摘要

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

ss -s

输出 :

将输出发送到文件

您还可以使用 > 输出运算符将 ss 命令的输出保存到文件中以供以后参考。

ss > output.txt

输出 :

使用 grep 实现 ss

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

例如,要使用 ss 和 grep 获取所有已建立的 TCP 连接的列表:

ss -t | grep ESTAB

输出 :

监控 Linux 上的网络连接

在 Linux 上,一切都有一个命令。从创建文件到监控网络,一切由您决定。但面对如此庞大的实用程序集合,随之而来的问题是哪一个最好。

除了计算机的软件方面之外,用户还应该充分了解其系统的硬件规格。有多个命令可供用户轻松提取与其系统和硬件相关的信息。

©2015-2025 艾丽卡 support@alaica.com