何千ものデバイスが接続された 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 を超えるクライアント デバイスでセットアップをテストしました。
ただし、私が見ている問題は、192.168.0.2 から 192.168.0.255 までの IP 範囲内のデバイスにのみ 1200 の tcp 確立タイムアウトが適用されていることです。192.168.1.x から 192.168.255.x の範囲の IP を持つすべてのデバイスは、依然として 5 日のデフォルト タイムアウトを使用しています。
これにより、/proc/net/ip_conntrack テーブルにあまりにも多くの「ESTABLISHED」接続が残り、最終的にはいっぱいになります。20 分以内にタイムアウトするはずなのに、5 日でタイムアウトすることが示されています。
明らかに、どこかで設定が不足しているか、何かが正しく構成されていません。
助言がありますか?
ありがとう