Conntrack TCPステータスタイムアウトが正しく機能しません。

Conntrack TCPステータスタイムアウトが正しく機能しません。

プライベートIPアドレスを使用し、ルータ(ゲートウェイ)で少なくとも2時間SNATエントリをアクティブにしようとします(私のネットワークの一部のWindowsアプリケーションは、2時間に設定されたTCPキープアライブを使用します)。ゲートウェイはLinuxマシンなので7400秒にnf_conntrack_tcp_timeout_established設定しました。nf_conntrack_generic_timeout

echo 7400 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established
echo 7400 > /proc/sys/net/netfilter/nf_conntrack_generic_timeout

これで、TCP接続が確立された直後に新しい値が表示されます。

# cat /proc/net/ip_conntrack
tcp      6 7399 ESTABLISHED src=192.168.0.192 dst=108.168.176.194
sport=51826 dport=5222 src=108.168.176.194 dst=95.63.14.117 sport=5222 
dport=51826 [ASSURED] use=1

しかし、数秒後に値を読み直したところ、値は60秒に戻りました。

tcp      6 39 ESTABLISHED src=192.168.0.192 dst=108.168.176.194 
sport=51826 dport=5222 src=108.168.176.194 dst=95.63.14.117 sport=5222 
dport=51826 [ASSURED] use=1

答え1

根本的な原因は、カーネルのconntrackコードが修正されたためです。プロバイダが変更した組み込みLinuxディストリビューションを使用しているため、SNATエントリのタイムアウトを更新する機能は、プロバイダが提供する新しい「機能」の1つを提供する特別な機能を指します。私はそれを修正し、今期待通りに動作します。

関連情報