首页/安全/取证与溯源速查/连接跟踪表(conntrack)查看
Linux 取证135 条

连接跟踪表(conntrack)查看

netfilter 连接跟踪表记录内核看见的会话,包含源目地址端口与状态;在 NAT 或网关主机上,它是补充防火墙日志的会话证据。

取证与溯源速查安全更新于 2026-10-13

连接跟踪表记录内核看到的会话

netfilter 的连接跟踪机制为每一条经过本机的连接维护一条表项,记录源地址端口、目的地址端口、协议、连接状态以及字节包数。在做过 NAT 或作为网关的主机上,这张表是补充防火墙日志的会话证据:即便防火墙没有开启逐条日志,只要能读到 conntrack 表,就能还原当时仍有活动或最近活动的连接。

表项会老化

连接跟踪表项有超时时间,TCP 已建立连接的默认超时通常在数天量级,未完成握手的连接则短得多(数秒到数十秒),UDP 表项更短。这意味着表内容只是采集那一刻的切片,攻击者收尾后短连接的表项早已消失,长连接才可能残留。敏感时段应当先整表导出留档,再考虑离线分析。

基本信息

适用平台Linux(netfilter,nf_conntrack 模块)
命令conntrack -L(需安装 conntrack-tools)
旁路读取cat /proc/net/nf_conntrack
可选过滤按协议、目的端口或来源地址过滤
权限通常需要 root 才能读取完整表

典型使用场景

  • 网关主机排查:确认内网主机在某个时刻与外部地址存在会话
  • 排查外联通道:按目的端口或来源地址筛选可疑会话
  • 佐证 NAT 映射:确认源地址在转换前后的对应关系
  • 补充防火墙日志:防火墙未记录连接时,用表内容充当会话证据
  • 与进程关联:配合 ss 或 lsof 观察哪些进程在维持这些连接

查看与导出连接跟踪表

查看与导出连接跟踪表
# 安装后按目的端口筛选,只看 445 相关会话
conntrack -L -p tcp --dport 445 | head

# 按来源地址筛选,找出该主机发起的全部会话
conntrack -L -s 203.0.113.9 | head

# 没有 conntrack 命令时直接读内核表并格式化
cat /proc/net/nf_conntrack | head -20

# 整表导出留档(体量可能很大,只做落盘不做屏幕输出)
conntrack -L > /mnt/ev/conntrack-$(date +%Y%m%d%H%M).txt 2>&1
wc -l /mnt/ev/conntrack-*.txt

表项字段读法

字段含义分析用法
tcp / udp / icmp协议类型决定超时时间与后续判断
src / dst原始方向地址与端口内网到外网的原始五元组
sport / dport转换后端口判断是否经过 NAT 转换
ESTABLISHED / SYN_SENT会话状态已建立与未完成握手含义不同
bytes / packets本次会话的字节与包数可判断是否发生了数据传输
确认模块是否加载:lsmod | grep nf_conntrack;未加载时既没有表内容也没有 /proc/net/nf_conntrack,不要把「没有输出」理解为「没有连接」。
高负载主机上表项数量可达数十万,屏幕输出会被冲掉;导出到文件后用 grep 离线过滤,注意导出文件本身也应计算哈希并登记。

易错点

  • 把连接跟踪表当历史记录:表项超时即消失,只有采集那一刻的切片
  • 模块未加载时误判为无连接:没有输出与没有连接是两回事
  • 在高负载主机上直接屏幕输出:内容被冲掉,采样结果不完整
  • 忽略 NAT 转换后的字段:只看原始方向会漏掉实际的对外通信
  • 导出文件不做哈希登记:会话证据后来无法证明未被改动

数据来源与参考

  • conntrack-tools 官方文档(man 8 conntrack)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌