7

何千ものデバイスが接続された 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 日でタイムアウトすることが示されています。

明らかに、どこかで設定が不足しているか、何かが正しく構成されていません。

助言がありますか?

ありがとう

4

1 に答える 1

4

@StephenHankinson が言及しているようにconntrack -L、sysctl 変数の変更時の既存の接続 (参照) では、タイムアウトがリセットされません。これらの接続は最終的に終了するため、これは通常問題にはなりませんが、NFCT は を使用してすべての CT を強制的に忘れることができますconntrack -F。ただし、ルールセットが TCP SYN で始まらない「新規」接続を許可しない場合、これにより既存の接続が強制終了される可能性があることに注意してください。

于 2012-02-20T06:14:31.277 に答える