跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

怎么在Linux下处理因防火墙Conntrack(连接跟踪)表满导致的突发性海量网络连接丢包故障

nf_conntrack表满导致SYN包被静默丢弃,需分三步处理:秒级止血(临时扩容+清理INVALID/UNREPLIED连接)、精准定位(查源IP、端口、状态分布)、长效防复发(调参+NOTRACK绕过+禁用ALG+架构优化)。 遇到
nf_conntrack: table full, dropping packet
,说明内核连接跟踪表已满,新连接首包(尤其是SYN)被静默丢弃,表现为大量超时、502、curl失败等——这不是警告,是硬性拦截。处理需分三步:秒级止血、精准定位、长效防复发。 一、5秒内恢复业务:临时扩容 + 安全清理 别重启、别等,立刻执行: 临时扩大上限(推荐值按内存估算:每GB内存≈16万条,如32GB设为524288):
sudo sysctl -w net.netfilter.nf_conntrack_max=524288
同步调整哈希桶数量,避免冲突加剧(建议为 max 的 1/4):
sudo sysctl -w net.netfilter.nf_conntrack_buckets=131072
只删无效连接,不中断现有业务:
sudo conntrack -D --state INVALID,UNREPLIED
(比
conntrack -F
安全,不破坏 ESTABLISHED/NAT 状态) 二、快速定位根因:查连接分布与异常源头 表满很少是单纯流量大,多是连接滞留或异常行为: Docker Desktop(linux) 当前 Docker 最新稳定版本之一,主要针对稳定性和兼容性进行了修复优化,适合生产环境与日常开发使用。该版本继续强化 AI 开发支持、容器日志管理以及 Docker Engine 的安全能力,对 Windows/macOS/Linux 平台兼容性进行了进一步优化。 下载 看当前占用和峰值:
cat /proc/sys/net/netfilter/nf_conntrack_count
cat /proc/sys/net/netfilter/nf_conntrack_max
统计连接最多的源IP(常为爬虫、健康检查风暴或攻击):
conntrack -L | awk '{print $7}' | cut -d= -f2 | sort | uniq -c | sort -nr | head -10
查高频端口(如DNS、HTTP短连接):
conntrack -L | grep "dport=53" | wc -l
grep "dport=80\|dport=443"
确认是否真有大量 TIME_WAIT 或 UNREPLIED 残留:
conntrack -L | awk '{print $4}' | sort | uniq -c | sort -nr
三、防复发调优:改参数 + 绕跟踪 + 关模块 永久生效必须写入配置并重载: 在
/etc/sysctl.conf
中添加:
net.netfilter.nf_conntrack_max = 524288
net.netfilter.nf_conntrack_buckets = 131072
net.netfilter.nf_conntrack_tcp_timeout_established = 3600
(从5天缩至1小时)
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 60
(建议60–120秒) 对明确无需跟踪的流量跳过(如本机通信、监控上报):
iptables -t raw -A PREROUTING -i lo -j NOTRACK
iptables -t raw -A OUTPUT -o lo -j NOTRACK
禁用无关ALG模块(如不用FTP/SIP):
echo 'install nf_conntrack_ftp /bin/true' >> /etc/modprobe.d/blacklist.conf
echo 'install nf_conntrack_sip /bin/true' >> /etc/modprobe.d/blacklist.conf
然后卸载:
sudo modprobe -r nf_conntrack_ftp nf_conntrack_sip
四、架构级规避(高并发场景必看) 长期靠调参治标不治本: 负载均衡后端节点若仅做L4转发且无状态 防火墙 需求,可评估关闭 conntrack(需确认网络插件支持,如 Cilium/eBPF) Docker/K8s环境优先使用无 conntrack 依赖的 CNI(如 Cilium),或启用
--disable-conntrack
(Kube-proxy v1.22+) 对外服务启用 HTTP Keep-Alive、gRPC 连接复用,从源头减少短连接数量 关键链路(如 DNS 解析)确保 NetworkPolicy 和安全组放行 53/udp,避免因策略误拦导致重试风暴

相关文章