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
  • 协议 & 状态tcpESTABLISHED 表示这是一个已建立的 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

简单总结一下 conntracknfct 这两个工具的区别:

  • conntrack:功能全面,覆盖所有连接跟踪操作(查看、删除、监听等),是目前成熟的通用工具。
  • nfct:功能聚焦,当前主要用于管理超时策略(类似 nft 风格的语法),未来目标可能是完全替代 conntrack
相关推荐
小鹏linux5 小时前
Ubuntu 22.04 部署开源免费具有精美现代web页面的Casdoor账号管理系统
linux·前端·ubuntu·开源·堡垒机
在角落发呆6 小时前
Linux转发配置:解锁网络互联的核心密码
linux·运维·网络
齐潇宇6 小时前
Zabbix 7 概述与配置
linux·zabbix·监控告警
裴东青8 小时前
10-实战:RuoYi-Cloud的自动化发布
运维·ci/cd·自动化
江公望8 小时前
Ubuntu htop命令,10分钟讲清楚
linux·服务器
哎呦,帅小伙哦8 小时前
Linux 时间:从原子钟到 clock_gettime 的每一面
linux·运维·服务器
sxgzzn8 小时前
新能源场站数智化转型:基于数字孪生与AI的智慧运维管理平台解析
大数据·运维·人工智能
张小姐的猫8 小时前
【Linux】多线程 —— 线程互斥
linux·运维·服务器·c++
CodeMartain8 小时前
Dify Windows 原生部署(无 Docker、纯本地)
运维·docker·容器
xxx1x1x9 小时前
极客向:DLL/运行库故障的底层逻辑与自动化修复方案
运维·自动化·dll文件·dll·dll修复·dll缺失·dll一键修复