ITPub博客

首页 > Linux操作系统 > Linux操作系统 > kernel: ip_conntrack: table full, dropping packet.

kernel: ip_conntrack: table full, dropping packet.

原创 Linux操作系统 作者:tolywang 时间:2011-02-15 11:07:21 0 删除 编辑

           原本 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_conntrackthe cache name
                      3024the number of currently active objects
                      4090the total number of available objects
                      384the size of each object in bytes
                      409the number of pages with at least one active object
                      409the total number of allocated pages
                      1the 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软件.

转载自  http://www.360doc.com/content/11/0210/06/3997568_91752502.shtml 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-687241/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    13506638