我有一个NAT设置,连接了数千个设备。网关通过eth0连接互联网,LAN侧的设备通过网关上的eth1连接。
我的iptables设置如下:
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
eth1的配置如下:
ip: 192.168.0.1
subnet: 255.255.0.0
客户端被分配的IP地址范围是192.168.0.2到192.168.255.254。
在/etc/sysctl.conf中,我对ip_conntrack_tcp_timeout_established进行了以下设置。
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=1200
由于连接到此网关的客户端设备数量众多,我无法使用默认的5天超时时间。
这种设置似乎很有效,并且已经测试了超过10000个客户端设备的设置。
然而,我遇到的问题是TCP建立的超时时间为1200,只适用于IP范围在192.168.0.2至192.168.0.255之间的设备。所有IP地址在192.168.1.x至192.168.255.x范围内的设备仍然使用5天默认超时时间。
这会在/proc/net/ip_conntrack表中留下太多的“已建立”连接,最终填满,即使它们应该在20分钟内超时,它们显示将在5天后超时。
显然,我错过了某个设置或者配置不正确。
有什么建议吗?
谢谢。