Linux 跟踪连接netfilter 调优

Linux系统nf_conntrack连接跟踪机制简介 1、前言 前段时间接手的一个连接跟踪表满导致网络不通的问题,因此对linux系统的连接跟踪模块进行了学习。本文梳理一下目前对nf_conntrack模块的一些个人理解。 2、连接跟踪机制 背景知识:netfilter Netfilter是一个内核架构,是集成到linux内核协议栈的一套防火墙系统,可通过用户空间(iptables等)的工具来把相关配置下发给Netfilt... 阅读详情

 

Netfilter介绍

    linux内核中的netfilter是一款强大的基于状态的防火墙,具有连接跟踪(conntrack)的实现。conntrack是netfilter的核心,许多增强的功能,例如,地址转换(NAT),基于内容的业务识别(l7, layer-7 module)都是基于连接跟踪。

    nf_conntrack模块在kernel 2.6.15(2006-01-03发布) 被引入,支持ipv4和ipv6,取代只支持ipv4的ip_connktrack,用于跟踪连接的状态,供其他模块使用。


主要参数介绍

复制代码

# 哈希表大小(只读)(64位系统、8G内存默认 65536,16G翻倍,如此类推)
net.netfilter.nf_conntrack_buckets

# 最大跟踪连接数,默认 nf_conntrack_buckets * 4
net.netfilter.nf_conntrack_max
net.nf_conntrack_max

复制代码

  • 注:跟踪的连接用哈希表存储,每个桶(bucket)里都是1个链表,默认长度为4KB
  • 注:netfilter的哈希表存储在内核空间,这部分内存不能swap
  • 注:哈希表大小 64位 最大连接数/8  32 最大连接数/4
  • 注:32位系统一条跟踪几率约为300字节。
  • 注:在64位下,当CONNTRACK_MAX为 1048576,HASHSIZE 为 262144 时,最多占350多MB

状态查看

1、查找:buckets哈希表大小,max最大几率的连接条数

# netfilter模块加载时的bucket和max配置:
sudo dmesg | grep conntrack

[6010550.921211] nf_conntrack version 0.5.0 (16384 buckets, 65536 max)

2、查找:哈希表使用情况

# 前4个数字分别为:当前活动对象数、可用对象总数、每个对象的大小(字节)、包含至少1个活动对象的分页数
grep conntrack /proc/slabinfo

nf_conntrack_ffffffff81ad9d40    865    918    320   51    4 : tunables    0    0    0 : slabdata     18     18      0

3、查找:当前跟踪的连接数

sudo sysctl net.netfilter.nf_conntrack_count
cat /proc/net/nf_conntrack | wc -l

4、跟踪连接详细信息

cat /proc/net/nf_conntrack

复制代码

ipv4     2 tcp      6 2 CLOSE src=100.116.203.128 dst=172.16.105.212 sport=62226 dport=8080 src=172.16.105.212 dst=100.116.203.128 sport=8080 dport=62226 [ASSURED] mark=0 zone=0 use=2

------------------------------------------------------

# 记录格式
# 网络层协议名、网络层协议编号、传输层协议名、传输层协议编号、记录失效前剩余秒数、连接状态(不是所有协议都有)

------------------------------------------------------

# 之后都是key=value或flag格式,1行里最多2个同名key(如 src 和 dst),第1次出现的来自请求,第2次出现的来自响应

------------------------------------------------------

复制代码


连接跟踪调优

  • 计算公式
  • CONNTRACK_MAX(最大几率的连接条数) = 内存个数*1024*1024*1024/16384/2 = ***
  • Buckets(哈希表大小) = CONNTRACK_MAX/4 = ***(Byte字节)
  • 跟踪数暂用最内存大小 = CONNTRACK_MAX * 300(Byte字节)= ***(Byte字节)

注:如果不能关掉防火墙,基本思路就是,调大nf_conntrack_buckets和nf_conntrack_max,调小超时时间。
注:除了有关联的参数,尽量一次只改一处,记下默认值,效果不明显或更差就还原。

1、哈希表桶大小 调优

注:net.netfilter.nf_conntrack_buckets 不能直接改(报错)

复制代码

# 临时生效
echo 262144 > /sys/module/nf_conntrack/parameters/hashsize
------------------------------------------------------

# 重启永久生效
新建文件:/etc/modprobe.d/iptables.conf
options nf_conntrack hashsize = 32768 

复制代码

2、最大追踪连接数修改 调优

复制代码

# 临时生效
sudo sysctl -w net.netfilter.nf_conntrack_max=1048576
suod sysctl -w net.nf_conntrack_max=1048576

------------------------------------------------------

# 永久生效
# 添加修改内核配置文件(/etc/sysctl.conf) 
net.netfilter.nf_conntrack_max=1048576
net.nf_conntrack_max=1048576

# 如果要马上应用配置文件里的设置:
sudo sysctl -p /etc/sysctl.conf

复制代码

3、响应时间 调优

复制代码

# 临时生效

# 主动方的最后1个状态。默认120秒
sudo sysctl -w net.netfilter.nf_conntrack_tcp_timeout_fin_wait=30
sudo sysctl -w net.netfilter.nf_conntrack_tcp_timeout_time_wait=30

# CLOSE_WAIT是被动方收到FIN发ACK,然后会转到LAST_ACK发FIN,除非程序写得有问题,正常来说这状态持续时间很短。#默认 60 秒
sudo sysctl -w net.netfilter.nf_conntrack_tcp_timeout_close_wait=15

# 理论上不用这么长,不小于 net.ipv4.tcp_keepalive_time 就行了。默认 432000 秒(5天)
sudo sysctl -w net.netfilter.nf_conntrack_tcp_timeout_established=300

-----------------------------------------------------

# 永久生效
# 修改内核配置文件(/etc/sysctl.conf) 
net.netfilter.nf_conntrack_tcp_timeout_fin_wait=30
net.netfilter.nf_conntrack_tcp_timeout_time_wait=30
net.netfilter.nf_conntrack_tcp_timeout_close_wait=15
net.netfilter.nf_conntrack_tcp_timeout_established=300

# 如果要马上应用配置文件里的设置:
sudo sysctl -p /etc/sysctl.conf

复制代码


禁用连接跟踪模块

注:只要iptables还有规则用到nat和state模块,就不适合关掉netfilter,否则这些规则会失效。

# 条件举例
# 关掉netfilter会拿不到状态,导致每个请求都要从头到尾检查一次,影响性能:
# 例如这条默认规则(通常写在第1条或很靠前的位置):
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

禁用步骤

1、整理确认关闭该模块后不会影响功能

复制代码

# 1
# 查找相关模块
sudo lsmod | egrep "ip_table|iptable|nat|conntrack"

# 2
# 把带 -t nat 、-m state 的规则都干掉
# 或删掉 /etc/sysconfig/iptables 里相应内容
# 查看iptables规则
sudo iptables-save

# 3
# 编辑 iptables 配置文件
# 找到 IPTABLES_MODULES ,删掉跟conntrack有关的模块(如果有)
sudo vim /etc/sysconfig/iptables-config

# 4
# 停掉iptables
# Centos 6
sudo service iptables stop
# Centos 7
sudo systemctl stop iptables

复制代码

2、移除相关模块

复制代码

sudo rmmod iptable_nat
sudo rmmod ip6table_nat
sudo rmmod nf_defrag_ipv4
sudo rmmod nf_defrag_ipv6
# 移除相关模块
sudo rmmod nf_nat
sudo rmmod nf_nat_ipv4
sudo rmmod nf_nat_ipv6
sudo rmmod nf_conntrack
sudo rmmod nf_conntrack_ipv4
sudo rmmod nf_conntrack_ipv6
sudo rmmod xt_conntrack

--------------------------

# 开启相关模块 
sudo modprobe iptable_nat
sudo modprobe ip6table_nat
sudo modprobe nf_defrag_ipv4
sudo modprobe nf_defrag_ipv6
sudo modprobe nf_nat
sudo modprobe nf_nat_ipv4
sudo modprobe nf_nat_ipv6
sudo modprobe nf_conntrack
sudo modprobe nf_conntrack_ipv4
sudo modprobe nf_conntrack_ipv6
sudo modprobe xt_conntrack

复制代码

 

好文要顶 关注我 收藏该文  

kevin.Xiang
关注 - 4
粉丝 - 16

+加关注

0

0

« 上一篇:Linux 文件时间记录属性 调优
» 下一篇:Linux 系统开启随机端口数量 调优

Linux连接跟踪(conntrack)原理、调优与故障排查实战 连接跟踪(Connection Tracking)是Linux内核Netfilter框架中的核心基础设施,用于在网络层识别和记录数据包所属的会话状态。其工作原理是通过分析数据包的协议、IP地址和端口等元组信息,构建并维护一个动态的连接状态表,实现有状态的网络处理。这项技术的核心价值在于为防火墙、NAT(网络地址转换)、负载均衡等高级网络功能提供了会话感知能力,使得规则配置得以简化,并能智能处理双向流量。在应用场景上,它广泛支撑着Kubernetes Service的iptables模式、有状态防火墙策略以及 阅读详情

相关推荐

Linux网络故障排查:深入解析Conntrack连接跟踪机制与性能调优

连接跟踪(Connection Tracking)是现代防火墙实现有状态包过滤的核心技术基础。其核心原理是通过跟踪网络数据流的五元组(源/目的IP、端口及协议),在内核中维护一个动态的连接状态表,从而赋予无状态的网络层和传输层以“会话”概念。这项技术的核心价值在于,它使得防火墙能够智能识别并自动放行属于已建立连接或相关连接的数据包,极大简化了安全策略配置,并提升了网络通信的效率和安全性。在工程实践中,Conntrack广泛应用于实现NAT(网络地址转换)、负载均衡会话保持以及处理FTP等复杂协议。然而,其连

weixin_34332905的博客 304

net.nf_conntrack_max 设置异常问题

故障原因 内核参数 net.nf_conntrack_max 系统默认值为”65536”,当nf_conntrack模块被装置且服务器上连接超过这个设定的值时,系统会主动丢掉新连接包,直到连接小于此设置值才会恢复。同时内核参数“net.netfilter.nf_conntrack_tcp_timeout_established”系统默认值为”432000”,代表nf_conntrack的TCP连接记录时间默认是5天,致使nf_conntrack的值减不下来,丢包持续时间长。 nf_conntrack模块在首

砚墨 1万+

Linux服务器网络突然不通?别慌,先检查一下nf_conntrack这张‘表’是不是满了

本文深入探讨了Linux服务器网络中断的常见原因——nf_conntrack表溢出问题。通过详细解析连接跟踪机制,提供应急处理三步法和长效防护方案,帮助运维人员快速诊断和解决网络不通问题,确保服务器稳定运行。

weixin_42552716的博客 426

Linux Netfilter 内核参数调优

Netfilter 是linux 内在的一个软件框架,用来记录管理网络数据包,Netfilter提供了5个hook 来记录管理网络包。 Netfilter进行包的管理,则需要记录每个连接的状态信息。这就是nf_conntrack的工作内容。 PREROUTING, 所有包都会经过这个hook LOCAL INPUT, 进入本机的包会经过这个hook FORWARD, 不进入本机的包,做转发的包会经过这个hook LOCAL OUTPUT, 从本机出去的包会经过这个hook POSTROUTING, 所.

屈帅波的技术博客 6373

Linux网络层核心机制与性能调优实战

网络层作为TCP/IP协议栈的核心组件,负责实现逻辑寻址和跨网络通信。其核心原理包括IP协议处理、路由决策和报文过滤三大功能模块,通过sk_buff结构体管理数据包生命周期。在Linux系统中,Netfilter框架和路由子系统的高效协作,支撑了从基础网络连接到复杂云原生应用的各类场景。针对高并发场景下的性能瓶颈,可通过调整路由缓存、优化分片参数、合理设置conntrack表大小等工程实践手段进行调优。特别是在容器化和微服务架构下,网络层的正确配置对保障服务网格的稳定性和性能至关重要。

weixin_33552698的博客 133

k8s conntrack 表项超时导致tcp长连接中断

k8s contrack问题

fengcai_ke的博客 2578

linux netfilter 忽略网址,Linux 跟踪连接netfilter 调优

Netfilter介绍linux内核中的netfilter是一款强大的基于状态的防火墙,具有连接跟踪(conntrack)的实现。conntrack是netfilter的核心,许多增强的功能,例如,地址转换(NAT),基于内容的业务识别(l7, layer-7 module)都是基于连接跟踪。nf_conntrack模块在kernel 2.6.15(2006-01-03发布) 被引入,支持ipv4...

weixin_34191434的博客 404

LINUX服务器防火墙nf_conntrack问题一例

iptables模块nf_conntrack引发的一则故障案例

有莘不破的博客 1666

linux跟踪连接表nf_conntrack netfilter调优

转载: http://www.mamicode.com/info-detail-2422830.html

一只蜗牛慢慢爬 1176

Qt 侧边菜单栏+堆叠窗口stackedWidget

效果如下:环境:Qt 6.6.2 MSVC2019 64bit。

weixin_41033231的博客 1569

【Bug已解决】Anthropic tool_result 找不到对应 tool use id 解决方案

方案适用场景推荐指数每个tool_use必须生成对应tool_result最基础的原则,所有Harness都必须遵守⭐⭐⭐⭐⭐裁剪历史时成对处理实现了上下文裁剪/压缩逻辑的Harness⭐⭐⭐⭐⭐并行工具调用结果数量校验支持多工具并行调用的场景⭐⭐⭐⭐使用官方SDK高层封装不需要特别定制消息组装逻辑⭐⭐⭐⭐请求前主动校验中间件追求生产级健壮性,提前拦截问题⭐⭐⭐⭐⭐这类报错,本质上是。

一键难忘的博客 1万+

深入解析 Linux 内核防火墙:你的网络安全卫士

Netfilter 内核执行流程与 iptables 规则存储结构分析 Netfilter 是 Linux 内核的钩子框架,通过五个关键 HOOK 点(PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING)拦截网络数据包。内核通过 nf_register_net_hook() 注册处理函数,并按优先级顺序执行。每个 HOOK 点可返回 NF_ACCEPT、NF_DROP 等状态决定数据包命运。 iptables 规则在内核中以 xt_table 结构存储,包含规则数组和各

kangkangluoluo的博客 1245

点云语义分割:使用Cylinder3D训练SemanticKITTI数据集

将该路径修改到config/semanticktti.yaml文件中的data_path节点下。下载semanticKITTI数据集的点云数据和标签,解压到一起。系统:Ubuntu18。

zhaoguanhua的博客 2604

基于Linux Netfilter/iptables构建企业级防火墙:从架构设计到高可用部署

防火墙是网络安全架构中的核心组件,负责在网络边界执行访问控制策略,其基本原理是通过预定义的规则集对数据包进行过滤、转发或拒绝。在众多实现技术中,Linux内核的Netfilter子系统配合iptables(或nftables)工具链,提供了一个开源、高性能且深度可编程的数据包处理框架。这一技术组合的价值在于,它允许工程师在通用x86服务器上构建完全自主可控的企业级安全设施,实现从数据包过滤、网络地址转换(NAT)到连接状态跟踪的全套功能,从而有效平衡了成本、性能与灵活性。其典型应用场景包括保护企业内部网络、

weixin_26642481的博客 322

基于STM32设计的水下水质检测装置(微信小程序)(205)

本项目设计了一款基于STM32微控制器为核心的水下水质检测设备,该设备具有高度集成化、智能化的特点,能够实时监测水深、温度、浊度及溶解性总固体(TDS)等关键水质参数,并通过4G网络将数据上传至腾讯云IOT物联网平台,实现远程监控和数据分析。同时,为了便于操作和移动观测,还配套开发了微信小程序,用户可通过微信小程序实时查看并控制设备的各项功能,如调整下潜深度等。

1253

LPDDR6来了!带你一文看懂它和LPDDR5/5X的差距 + 技术演进逻辑全解析

🧠从速率到架构,从总线宽度到协议设计,LPDDR6 每一个改动都不是拍脑袋做的,它针对的是AI / HPC / 云计算 / 下一代笔记本平台的真实需求。作为工程师的我们,不仅要“用得上”,更要“测得准”,因为没有测试验证,就没有量产落地!🎯LPDDR6不是未来,而是现在进行时!

weixin_43199439的博客 2176

深度解析 deepin-community/kernel 网络过滤:从 netfilter 架构到企业级防火墙实战

在当今复杂的网络环境中,Linux 内核的网络过滤能力是保障系统安全的关键防线。deepin-community/kernel 项目中的 netfilter 框架和 iptables 工具提供了强大而灵活的网络数据包处理机制。本文将深入剖析这一核心技术,从架构原理到实战应用,帮助中级和高级用户构建高性能的企业级防火墙系统。 ## 核心关键词与目标受众 **核心关键词**:netfilter 架

gitblog_00717的博客 345

IgH EtherCAT 从入门到精通:第 30 章 实战:高可用 EtherCAT 系统设计

摘要:构建高可用EtherCAT系统的关键技术 本章详细介绍了工业级EtherCAT系统的高可用性设计方法,主要包括: 冗余链路架构:采用双网卡环形拓扑设计,主备网卡同时工作,通过IgH Master的冗余配置实现线缆故障自动切换。 状态监控机制:提供专用API实时监控主备链路状态,包括从站响应数、链路状态和冗余激活标志,形成完整的故障判断矩阵。 自动恢复功能:系统内置FSM架构支持热插拔自动检测和重配置,从站断线/重连时可自动完成状态恢复,同时允许应用层实施安全措施。 这些技术共同构成了生产环境下Ethe

从事嵌入式linux android驱动开发,拥有全栈能力 248

Netfilter与conntrack连接跟踪表参数调优实战

在Linux网络栈中,Netfilter负责数据包过滤、NAT与转发,conntrack连接跟踪则为每条流维护状态表项;表项容量、哈希桶数量、超时回收与队列深度共同决定高并发下的连接建立、NAT会话保持和软中断开销。容量不足会触发nf_conntrack: table full丢包,桶冲突会推高查找成本,超时错配会造成长连接异常中断,端口与全连接/半连接队列配置不当则带来新建连接失败和请求超时。对后端服务、网关、容器平台和边缘节点而言,围绕连接跟踪表做容量估算、内存核算、超时对齐与灰度验证,是Linux网络

weixin_33290540的博客 280

你知道吗?其实这些都是AI——农作物监控AI

随着全球人口的不断增长,粮食需求日益增加。为了应对这一挑战,现代农业正在迅速转型,引入了许多先进技术来提高生产效率和作物产量。在这些技术中,人工智能(AI)在农作物监控方面的应用显得尤为重要。通过利用AI技术,农民和农业专家可以更好地管理农作物的生长,预防病虫害,并优化灌溉和施肥方案,从而实现农业生产的智能化和精准化。

AI科研社 367

Lumerical 教程目录,说明及个人感悟(共计138篇,持续更新中)

Lumerical---教程说明及个人感悟

u011699626的博客 1万+

Linux conntrack 连接跟踪表实战:查看、删除、监听与调优

连接跟踪(conntrack)是 Linux 内核 netfilter 的核心机制,用于记录经过本机的连接状态,支撑 NAT、状态防火墙和会话保持。其原理基于五元组维护一张有容量上限的状态表,每条记录约占用 300 字节内核内存,表满时新连接会被直接丢弃。掌握 conntrack 的查看、过滤、删除和事件监听,能快速定位丢包、连接泄漏和 NAT 异常等故障。在生产环境中,合理调优 nf_conntrack_max、超时时间和哈希桶大小,是保障网关和容器网络稳定性的关键。

weixin_26905487的博客 121

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

从LVS到Linux实战:从负载均衡到内核调优的完全指南

负载均衡是构建高并发服务架构的基石,而Linux系统则是承载这一切的核心平台。理解LVS在四层网络中的转发原理(NAT、DR、TUN),能帮助工程师从内核层面掌握流量分发的本质。在此基础上,linux常用命令、系统安装、用户权限与提权防护等基础操作,构成了运维人员日常排障的必备技能。从裸机环境到虚拟化部署,再到内核参数调优与高可用集群搭建,每一个环节都考验着对系统底层逻辑的理解。本文以LVS为主线,串联起Linux服务器从初始化到生产落地的完整链路,涵盖命令实战、安全加固、故障排查及嵌入式Linux等扩展方

weixin_31528001的博客 260

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Netfilter 内核网络框架学习:钩子原理、开发实践与性能调优

本文系统介绍了Linux内核Netfilter网络框架的核心机制与开发实践。主要内容包括:1)Netfilter作为内核态网络过滤框架的基础架构,通过钩子回调机制实现高性能数据包处理;2)五大核心钩子点(PRE_ROUTING、LOCAL_IN等)及其在数据包流向中的作用;3)连接跟踪、NAT和报文修改三大核心子系统;4)通过示例代码演示如何开发Netfilter内核模块;5)iptables与Netfilter的映射关系;6)生产环境性能调优建议;7)新一代nftables的发展趋势。文章为Linux网络

qq_44934156的博客 221

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Linux连接跟踪表排查指南:用conntrack命令读懂活跃连接条目

在Linux网络运维中,状态防火墙是现代安全体系的基础,它通过在内核中维护一张动态连接状态表,让数据包不再盲目匹配规则。这张表就是连接跟踪表(conntrack),由netfilter子系统管理,同时也为NAT、负载均衡等场景提供关键映射。当业务出现偶发不通、新连接丢弃或日志频繁刷出table full时,往往是这张表接近容量上限或条目异常残留。熟练掌握conntrack命令的查询与字段解读,配合sysctl水位监控,能快速定位故障并给出调优方向。本文从状态防火墙原理出发,结合iptables实战场景,详解

weixin_31423955的博客 269
上一篇: k8s-calico
下一篇: 本文面向具有基本K8s使用经验的读者
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值