Linux Netfilter 内核参数调优

 
Linux Netfilter 内核参数调优
Netfilter 是linux 内在的一个软件框架,用来记录管理网络数据包,Netfilter提供了5个hook 来记录管理网络包。
Netfilter进行包的管理,则需要记录每个连接的状态信息。这就是nf_conntrack的工作内容。
 
  • PREROUTING, 所有包都会经过这个hook
  • LOCAL INPUT, 进入本机的包会经过这个hook
  • FORWARD, 不进入本机的包,做转发的包会经过这个hook
  • LOCAL OUTPUT, 从本机出去的包会经过这个hook
  • POSTROUTING, 所有出去的包都会经过这个hook
 
 
一:ip_conntrack 与 nf_conntrack_ipv4 是一个相同的包,ip_conntrack是linux 2.6内核以前的名称。
二:调整一对参数,系统小于4G内存的net.netfilter.nf_conntrack_buckets 默认值是16384, 大于4G内存的默认值是 65535,对于大于4G内存且并发比较大的系统建议调整为262144;同时net.netfilter.nf_conntrack_max默认就是65535;
基于线上都是CentOS7 x86_64 大于4G内存的系统,如果并发大建议这样设置(并发小于1W的,使用默认值)
32G内存推荐:
内存使用最大值:1048576* 376 + 262144 * 16 = 398458880(byte)=380MiB
net.netfilter.nf_conntrack_buckets =131072
net.netfilter.nf_conntrack_max =1048576
96G 内存推荐:
net.netfilter.nf_conntrack_buckets = 262144
net.netfilter.nf_conntrack_max =2310720
内存使用最大值:2310720* 376 + 262144 * 16 =873025024(byte)=833MiB
计算公式:total_mem_used(bytes)=conntrack_max *sizeof(struct nf_conntrack)+conntrack_buckets *sizeof(struct list_head)
CONNTRACK_MAX = RAMSIZE (in bytes) / 65535/ 2 计算模型:(64(G) * 1024*1024*1024/65535/2)(2(G) * 1024*1024*1024/16384/2)
CONNTRACK_BUCKETS=CONNTRACK_MAX/8
基于线上都是CentOS7 x86_64:sizeof(struct nf_conntrack): 376sizeof(struct list_head): 16
 
调整以上参数,是为了在大量tcp 并发的情况下,解决tcp不能连接及报nf_conntrack:table full dropping packet;

重点:执行echo "262144" > /sys/module/nf_conntrack/parameters/hashsize 才能修改net.netfilter.nf_conntrack_buckets = 262144 通过sysctl.conf 定义不生效会报错。

重点:如果系统没有启用nf_conntrack模块,可以忽略以上调优,K8S集群都是要求开启NAT此模块的,可以根据具体系统内存调整。

cat /proc/sys/net/netfilter/nf_conntrack_buckets
cat /proc/sys/net/netfilter/nf_conntrack_max
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
为了不让net.netfilter.nf_conntrack_max条目快速迭代,调整必要的参数,专门对TCP挥手做调整
条目路径:/proc/net/nf_conntrack
默认参数
net.netfilter.nf_conntrack_tcp_timeout_established = 432000 (5天)
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
调优参数
net.netfilter.nf_conntrack_tcp_timeout_established = 84600 (1天)
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 30
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 60
记录状态
ipv4 2 tcp 6 299 ESTABLISHED src=192.168.1.1 dst=192.168.1.6 sport=58747 dport=22 src=192.168.1.6 dst=192.168.1.1 sport=22 dport=58747 [ASSURED] mark=0 secctx=system_u:object_r:unlabeled_t:s0 zone=0 use=2

Original Confluence page attachments

Name
Size
Created by
Created on
Labels
Comments
暂时无法在文档外展示此内容
43.62KB
钟富春
2021-09-28T17:34:10.000+08:00
   
暂时无法在文档外展示此内容
5.98KB
钟富春
2021-09-28T13:48:27.000+08:00
   
暂时无法在文档外展示此内容
5.98KB
钟富春
2021-09-28T13:47:47.000+08:00
   
暂时无法在文档外展示此内容
51.82KB
钟富春
2021-09-28T11:57:26.000+08:00
   
posted @ 2025-04-16 13:20  caonw  阅读(32)  评论(0)    收藏  举报