解決Linux NAT ip_conntrack: table full的方法

作者:操作系统

原来Linux NAT用得好好的,没悟出明天却出现了不可能上网的境况,而系统记录也现身了如此的信息:

ip_conntrack: table full, dropping packet.

新兴才了解, Linux NAT的ip_conntrack模组会记录tcp通信协定的established connection记录,并且预设timeout时间长达八日(432,000秒),因而生机勃勃旦LAN中有人利用P2P软体(如: eDonkey、BT...)就轻易产生这种主题材料.

削株掘根办法(1):加大ip_conntrack_max值

摸清原来的ip_conntrack_max值:
指令: cat /proc/sys/net/ipv4/ip_conntrack_max

写入理想的数值(每一个ip_conntrack buffer会占用292 Bytes)
指令: echo "数值" > /proc/sys/net/ipv4/ip_conntrack_max
例如: echo "81920" > /proc/sys/net/ipv4/ip_conntrack_max
其生机勃勃成效是目前的,要是要每次开机都使用新的数值,需将上述指令写入/etc/rc.d/rc.local
或是在/etc/sysctl.conf加入: net.ipv4.ip_conntrack_max =数值
或采纳斯达克综合指数令: sysctl -w net.ipv4.ip_conntrack_max=数值

消灭方法(2):减弱ip_conntrack timeout时间

重设ip_conntrack_tcp_timeout_established (原值: 432000,单位:秒)
指令: echo "数值" > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
例如: echo "600" > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established

开机自动安装的作法同方法(1).

别的连锁指令:

翻看近年来ip_conntrack buffer使用处境
指令: grep conn /proc/slabinfo

结果实例: ip_conntrack 3024 4090 384 409 409 1 (各值表达如下)

ip_conntrack the cache name
3024 the number of currently active objects
4090 the total number of available objects
384 the size of each object in bytes
409 the number of pages with at least one active object
409 the total number of allocated pages
1 the number of pages per slab are given

man slabinfo可查询详细表达.

搜查捕获近日ip_conntrack记录最多的前五名IP
指令: cat /proc/net/ip_conntrack | cut -d ' ' -f 10 | cut -d '=' -f 2 | sort | uniq -c | sort -nr | head -n 5

结果实例:

2816 192.168.1.100
14 163.30.85.129
6 220.132.142.175
6 127.0.0.1
4 218.187.5.223

因此可见, 192.168.1.100占用了绝大大多的buffer,预计这几个IP的User大概使用了P2P软体.图片 1

本文由金冠53777-金冠娱乐53777-Welcome发布,转载请注明来源

关键词: