我有一个连接了数千台设备的 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
为客户端分配了 ips 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 台客户端设备测试了该设置。
但是,我看到的问题是 1200 的 tcp 建立超时仅适用于 192.168.0.2 到 192.168.0.255 ip 范围内的设备。ips 在 192.168.1.x 到 192.168.255.x 范围内的所有设备仍使用 5 天默认超时。
这会在 /proc/net/ip_conntrack 表中留下太多“已建立”的连接,并且最终会填满,即使它们应该在 20 分钟内超时,但它们显示它们将在 5 天内超时。
显然,我在某处缺少设置或配置不正确。
有什么建议么?
谢谢