conntrack-tools 用法

conntrack-tools 是管理和监控 Linux 内核连接跟踪(Connection Tracking)表的瑞士军刀。它不仅是一个查看工具,还提供了强大的运维能力,可以用来排查网络问题、实现防火墙的高可用等。

下面我们来深入看看它的安装和核心用法。

📥 安装与内核模块准备

conntrack 命令通常需要单独安装:

  • Debian/Ubuntu : sudo apt install conntrack conntrackd nfct
  • RHEL/CentOS : sudo yum install conntrack-tools

使用前,需确保内核已加载连接跟踪及相关 Netlink 模块:

bash 复制代码
# 加载 nf_conntrack 与 netfilter netlink 模块
sudo modprobe nf_conntrack
sudo modprobe nf_conntrack_netlink

🔧 核心组件解析 (conntrack, conntrackd, nfct)

这个工具集主要包含三个部分:

  • conntrack :命令行管理工具,用来跟内核的连接跟踪表"对话",执行查看、删除、监听等操作。
  • conntrackd :用户态守护进程,主要用于实现防火墙的高可用(HA)。它可以在多台机器间同步连接跟踪表,实现状态化的主备切换。
  • nfct :较新的工具,目前主要用于管理连接跟踪的超时策略(cttimeout),未来可能替代 conntrack。

🛠️ conntrack 核心命令详解

conntrack 是日常运维中最常用的部分。

基础命令 (-L, -C, -D, -F)
功能 命令格式
列出所有连接 sudo conntrack -L
统计当前连接数 sudo conntrack -C
删除单个连接条目 sudo conntrack -D -p tcp --orig-src 10.0.0.1 --orig-dst 10.0.0.2 --orig-sport 12345 --orig-dport 80
清空整个连接表 sudo conntrack -F
conntrack -L 输出解读

conntrack -L 的输出信息量大,掌握它的含义是排查问题的基础:

text 复制代码
tcp      6 431999 ESTABLISHED src=192.168.1.100 dst=10.0.0.1 sport=5432 dport=3306 src=192.168.1.100 dst=10.0.0.1 sport=5432 dport=3306 [ASSURED] mark=0 use=2
  • 协议 & 状态 :tcp 和 ESTABLISHED 表示这是一个已建立的 TCP 连接。

  • 超时 :431999 是此条目的剩余存活时间(秒)。若不活跃,条目将在此时间后自动删除。

  • 二层元组 :src/dst/sport/dport 描述了一个完整的网络流。特别注意,一条记录会包含两次,分别代表原始方向 和期望回复方向的信息。

    运行 NAT 时尤其要注意:原始方向记录客户端发出的包;而期望回复方向会显示转化后的地址,便于调试。

  • 标志 :[ASSURED] 表示"确信"该连接是活跃的,条目不会被过早回收。

    • 若无此标识 :conntrack 可能尚不能100%确认该连接的状态,比如可能是一个新连接或收到了非 SYN 的 TCP 包(如 mid-stream pickup)。

高级过滤 (-p, -s, -d, --dst-nat)

你可以通过参数过滤信息,让输出更聚焦:

  • 按协议过滤 :sudo conntrack -L -p tcp
  • 按源/目IP过滤 :sudo conntrack -L -s 192.168.1.100 -d 10.0.0.1
  • 查看 NAT 条目 :sudo conntrack -L --dst-nat 192.168.1.100
实时事件监控 (-E)

-E 参数可以实时输出连接状态变更事件,对动态追踪非常有用:

bash 复制代码
sudo conntrack -E

它会显示每条连接从 [NEW] 建立到 [DESTROY] 销毁的全过程。


🚀 conntrackd 实现高可用

conntrackd 通过用户态守护进程,将主防火墙的连接表状态实时同步至备机。一旦主机宕机(通过 Keepalived 等检测),备份防火墙无缝接管,避免了已建立连接的 TCP 会话中断。其核心同步算法通常包括"无跟踪 (notrack)"和"完全容错 (FTFW)"等方式,需要精心配置。

⚙️ 性能调优:避免连接跟踪表爆炸

若服务器高负载时出现 "nf_conntrack: table full, dropping packet" 的内核日志,通常表明跟踪表已满。可在 conntrack 操作外,直接通过 sysctl 调优内核参数:

bash 复制代码
# 查看当前最大连接数与使用率
sysctl net.netfilter.nf_conntrack_max
cat /proc/sys/net/netfilter/nf_conntrack_count

# 扩大最大连接数(需保留约1/4-1/8容量给bucket)
sudo sysctl -w net.netfilter.nf_conntrack_max=524288
sudo sysctl -w net.netfilter.nf_conntrack_buckets=131072

# 长期配置写入 /etc/sysctl.conf

🤔 conntrack vs nfct

简单总结一下 conntrack 和 nfct 这两个工具的区别:

  • conntrack:功能全面,覆盖所有连接跟踪操作(查看、删除、监听等),是目前成熟的通用工具。
  • nfct:功能聚焦,当前主要用于管理超时策略(类似 nft 风格的语法),未来目标可能是完全替代 conntrack。
相关推荐
hz567892 小时前
涉密视频会议设备配置指南:终端、音视频采集与配套设施选型
服务器·网络·数据库·安全·实时音视频·信息与通信·智能硬件
广州浮点FLOATLIC2 小时前
许可证服务器迁移后软件打不开:研发 IT 怎样定位连接问题
linux·服务器·数据库
优橙教育2 小时前
零基础学AI应用开发要多久?3个月能到什么水平
服务器·开发语言·网络·php
IT研究所3 小时前
AI-ITR平台如何减少客户问题反复升级?
大数据·运维·人工智能·低代码·自然语言处理·安全架构·企微
BLUcoding3 小时前
接口服务公网超时排查记录:SecureRandom 阻塞问题分析与解决
java·linux·springboot·aes·securerandom
AIgorithmGEEK3 小时前
[Linux]从手写报头到内核套路:序列化、反序列化与自定义协议全链路
linux·运维·服务器·网络·序列化·反序列化
Nil2083 小时前
leetcode 139单词拆分
linux·运维·服务器
Starry-sky(jing)3 小时前
BUG: unable to handle kernel paging request 完整排查:dmesg 四要素与三路定罪
linux·运维·服务器·内核·排障
mounter6253 小时前
从硬件互连到操作系统变革:CXL 技术演进与 Linux 内核工程挑战
linux·运维·服务器
zhengqweasd3 小时前
机房托管服务器怎么选硬盘,机械盘和 SSD 托管场景差异
运维·服务器·github