linux netfilter 引发网络不稳定

发布时间 2023-07-26 15:18:31作者: 少年老余

 

记录前因:

K8S部署的集群,最近遇到域名解析失败情况,查看coredns日志,没有明显问题。 解析报错: connection timed out ; no servers could be reached

 重启集群服务,解析没有问题, 基本确认跟某个业务服务有关联

解决过程: 

查看跟踪连接数:sysctl net.netfilter.nf_conntrack_count

 可以通过查看跟踪连接详细信息:cat /proc/net/nf_conntrack去统计哪个服务导致

优化对应业务服务解决此次问题

 

学习

认识连接跟踪:

nf_conntrack: 连接跟踪 ,同时支持ipv4和ipv6,用于跟踪连接状态,供其他模块使用。 主要用户linux的NAT和状态防火墙

查看状态:

1.当前跟踪连接详情:cat /proc/net/nf_conntrack

格式说明:

网络层协议名、网络层协议编号、传输层协议名、传输层协议编号、记录失效前剩余秒数、连接状态(不是所有协议都有),之后都是key=value或flag格式,1行里最多2个同名key,第1次出现的来自请求,第2次出现的来自响应

 

2.跟踪连接数

sysctl net.netfilter.nf_conntrack_count

 

3.最大跟踪连接数

dmesg | grep conntrack

cat /proc/sys/net/netfilter/nf_conntrack_max

cat /proc/sys/net/nf_conntrack_max

注:哈希表大小(只读)(64位系统、8G内存默认 65536,16G翻倍,如此类推)net.netfilter.nf_conntrack_buckets;默认最大跟踪连接数,默认 nf_conntrack_buckets * 4

哈希表使用情况:

 grep conntrack /proc/slabinfo