conntrackは接続をどのくらい覚えていますか?

conntrackは接続をどのくらい覚えていますか?

したがって、協会conntrackは、接続が終了した後にX秒を覚えているようです。

Xの長さと設定可能かどうかを知っている人はいますか?

答え1

conntrackがシャットダウン後にTCP接続を覚えておく必要があるのは、TCPがシャットダウン後に接続を記憶するのと同じ理由です。RFC 793TCPの場合、特にTIME-WAITの部分では、デフォルト値(明確に書かれていない)は2mnでなければなりません。もちろん、これはUDP、ICMP、またはその他のプロトコルには適用されませんが、遅延はセッションを記憶することです。これはステートフルファイアウォールまたはNATに必要です。

つまり、netfilterのconntrackがロードされたら、ほとんどの設定をここで使用できます。

/proc/sys/net/netfilter/

(非常に古いカーネルにあるかもしれません)

たとえば、次のように表示されます。

# sysctl net.netfilter | grep timeout
net.netfilter.nf_conntrack_dccp_timeout_closereq = 64

[...]

net.netfilter.nf_conntrack_dccp_timeout_timewait = 240
net.netfilter.nf_conntrack_frag6_timeout = 60
net.netfilter.nf_conntrack_generic_timeout = 600
net.netfilter.nf_conntrack_gre_timeout = 30
net.netfilter.nf_conntrack_gre_timeout_stream = 180
net.netfilter.nf_conntrack_icmp_timeout = 30
net.netfilter.nf_conntrack_icmpv6_timeout = 30

[...]

net.netfilter.nf_conntrack_tcp_timeout_close = 10
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_established = 432000
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_last_ack = 30
net.netfilter.nf_conntrack_tcp_timeout_max_retrans = 300
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 60
net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 120
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_unacknowledged = 300
net.netfilter.nf_conntrack_udp_timeout = 30
net.netfilter.nf_conntrack_udp_timeout_stream = 120

同じコマンド(またはecho nnn > /proc/sys/...)を使用して設定を変更できます。たとえば、TCP CLOSE 状態タイムアウトを 60 などのより高い遅延に増やします。

sysctl -w net.netfilter.nf_conntrack_tcp_timeout_close=60

一部の機能とデフォルト設定は、カーネルのオプションとバージョンによって異なります。たとえば、net.netfilter.nf_conntrack_udp_timeout_stream「設定された」UDPトラフィック(複数のパケットと対応する応答が同じストリームにあると見なされます)の場合、最近のカーネルでは180から120に減少しました(> = 5.0?)。

デフォルトのグローバル値を使用する代わりに、特定の種類の接続に適用されるように専用のタイムアウトポリシーを構成する別の方法があります。nfct~に沿ってiptablesまたはnftables

関連情報