如何统计Linux上打开的网络连接数如何统计Linux上打开的网络连接数如何统计Linux上打开的网络连接数如何统计Linux上打开的网络连接数
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

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

如何统计Linux上打开的网络连接数

作为系统管理员需要密切监控的系统资源之一是网络连接。为了在服务器上保持足够的网络性能,您需要留意网络连接中的任何异常行为(例如,异常大量的连接请求),并对其采取措施(例如,过滤 DDoS 或端口扫描攻击)。

在本教程中,我将描述如何监控活动网络连接,以及如何计算 Linux 上打开的网络连接数量。

当涉及到监控网络连接时,conntrack-tools 非常有用。 conntrack-tools 是一套用户空间实用程序,允许您查看和管理 Linux 内核跟踪的网络连接状态。要使用conntrack-tools,需要Linux内核2.6.18或更高版本。

加载必要的内核模块

要使用 conntrack-tools 监控打开的 IPv4 网络连接,首先请确保系统上加载了名为 nf_conntrack_ipv4 的内核模块。


$ sudo modprobe nf_conntrack_ipv4

如果你想监控IPv6连接,你也可以加载nf_conntrack_ipv6模块。


$ sudo modprobe nf_conntrack_ipv6

根据您使用的发行版,这些模块可能已经预加载。

在 Linux 上安装 conntrack-tools

验证 nf_conntrack_ipv4 模块已加载后,继续安装 conntrack-tools 以及所有必备软件包,如下所示。

对于 Ubuntu、Debian 或 Linux Mint:


$ sudo apt-get install conntrack conntrackd libnetfilter-conntrack3 

CentOS、Fedora 或 RHEL:


$ sudo yum install conntrack-tools libnetfilter_conntrack

使用 conntrack 实用程序监视开放网络连接

conntrack-tools 软件包附带了一个名为 conntrack 的命令行工具。 conntrack 实用程序允许您从命令行搜索、列出、检查网络连接状态。

要打印使用 conntrack 跟踪的所有网络连接,请运行以下命令。


$ sudo conntrack -L

输出将显示不同类型的基于 IPv4 的连接,包括 TCP、UDP 和 ICMP 流量。对于基于 TCP 的网络连接,输出不仅包括当前活动的连接(处于 ESTABLISHED 状态),还包括正在打开的连接(处于 SYN_SENT 或 SYN_RECV 状态)或即将关闭的连接(处于 TIME_WAIT、CLOSE_WAIT 或 FIN_WAIT 状态)。

要计算当前网络连接的总数,只需运行:


$ sudo conntrack -C

51

如果您想将新创建的网络连接作为实时事件进行监控,请使用以下命令。


$ sudo conntrack -E -e NEW

此命令将仅打印状态为 NEW 的连接。因此,每次建立新的网络连接时,该事件都会实时显示在屏幕上。

您可以在 conntrack 工具的输出中应用各种过滤。

例如,要仅显示打开的 TCP 连接,请运行以下命令。


$ sudo conntrack -L -p tcp --state ESTABLISHED

显示目标端口 500 的 UDP 网络连接:


$ sudo conntrack -L -p udp --dport 500

如果您想实时监控新的 SSH 连接,请运行以下命令。


$ sudo conntrack -E -e NEW -p tcp --dport 22

使用 conntrackd 守护进程监控开放网络连接

另一个用于网络连接监控的工具是conntrackd,它是用于连接跟踪系统的用户空间守护进程。虽然 conntrackd 最初设计用于在高可用性部署中同步多个(例如,活动/备用)防火墙实例之间的内核连接跟踪状态,但它可用于收集和查看网络连接事件(例如,NEW、UPDATE、DESTROY)的统计信息以用于监控目的。

在使用 conntrackd 之前,请确保 /etc/conntrackd/conntrackd.conf 中的 conntrackd 配置在网络接口和 IPv4 地址(如果已指定)方面正确,如下所示。


$ sudo vi /etc/conntrackd/conntrackd.conf

Sync
    Multicast {
        . . . . .
        IPv4_interface 192.168.1.253
        Interface eth0
        . . . . .
    }

如果没有指定,则使用默认配置即可,无需任何修改。

要将 conntrackd 作为守护进程运行:


$ sudo conntrackd -d

一旦conntrackd守护进程在后台运行,您可以转储该守护进程收集的统计信息,如下所示。


$ sudo conntrackd -s

cache internal:
current active connections:              2
connections created:                   4    failed:            0
connections updated:                  13    failed:            0
connections destroyed:                 2    failed:            0

cache external:
current active connections:             0
connections created:                   0    failed:            0
connections updated:                   0    failed:            0
connections destroyed:                 0    failed:            0

traffic processed:
                   0 Bytes                         0 Pckts

multicast traffic (active device=eth0):
                9624 Bytes sent                    0 Bytes recv
                1138 Pckts sent                    0 Pckts recv
                   0 Error send                    0 Error recv

message tracking:
                   0 Malformed msgs                    0 Lost msgs
©2015-2025 艾丽卡 support@alaica.com