| Subcribe via RSS

大量连接数导致iptables报错ip_conntrack: table full, dropping packet.

8月 15th, 2008 Posted in iptables < by Johnny Woo >

这个问题更多出现在使用linux作为NAT服务器的环境中
默认ip_conntrack模块默认的链接时间是5天
导致大量链接后很容易超过记录表的大小

/etc/sysctrl.conf
net.ipv4.ip_conntrack_max = 81920
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 1500

8 Responses to “大量连接数导致iptables报错ip_conntrack: table full, dropping packet.”

  1. JulyClyde Says:

    没NAT的环境中,squid会引发这个问题吗?我觉得不应该啊


  2. Martian Guo Says:

    可以使用 “NOTRACK” target 允许规则指定80端口的包不进入链接跟踪/NAT子系统 ,在iptables中添加一个’raw’表,该表在netfilter框架中非常靠前,并在PREROUTING和OUTPUT链上有钩子,从而可以对收到的数据包在连接跟踪前进行处理
    使用下面的规则
    iptables -t raw -A PREROUTING -p tcp –dport 80 -j NOTRACK
    iptables -t raw -A PREROUTING -p tcp –sport 80 -j NOTRACK
    #如果这是一台NAT服务器的话,再添加下面这条规则
    iptables -A FORWARD -m state –state UNTRACKED -j ACCEPT


  3. Martian Guo Says:

    to JulyClyde :只要启用了iptables ,就会启用ip_conntrack ,iptables 需要对进出的包进行连接跟踪状态来判断策略


  4. Johnny Woo Says:

    JulyClyde的说法提醒了我
    这个环境并不是由于SQUID导致的IP_CONNTARK模块报错
    而是由于这台服务器上开放了IPTABLES
    这个报错是iptables的报错
    只是由于正好有大量链接导致iptables的报错.
    我修改下标题吧.省的大家误解


  5. freeke Says:

    好像在AS4U3系统上出现得比较多,我后来线上跑到的U5,U6不会在大量并发连接时出现这个问题,好像是U3的一个内核BUG


  6. JulyClyde Says:

    只要启用iptables就有conntrack?似乎没什么意义啊
    TCP/IP本身就会处理连接的,不需要额外的conntrack吧?


  7. Martian Guo Says:

    conntrack连接跟踪,这是iptables 内部处理TCP/UDP/ICMP数据包状态所需要的一个模块,在iptables 中以判断数据包状态为条件来过滤数据包是否被通过,这些状态包括
    ESTABISHED
    RELATED
    INVALID
    NEW
    UNTRACKED
    这些状态是在用户空间(iptables)中定义的,和平常所说的tcp包连接状态不是同一个概念


  8. Onion83 Says:

    我在gentoo上跑squid也遇到这个问题了,办法是重新编译内核,将ip_conntrack模块去掉.


Leave a Reply