したがって、協会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。