sshd設定でオプションを指定できますTCPKeepAlive yes
。これらのパケットは暗号化されていないため、偽装される可能性があります。オプションあり
ClientAliveInterval
ClientAliveCountMax
ServerAliveInterval
ServerAliveCountMax
接続が失われる前のコネクション保持パケットとタイムアウト(* CountMax)の間の間隔を指定できます。ここも参照してくださいsshd_configの `ServerAliveInterval`と `ClientAliveInterval`オプションは正確に何をしますか?
これでのみTCPKeepAlive
有効にできます。それでは、TCPパケット転送間の時間間隔はどのくらいですか?失敗したパケットが数回経過すると、接続が切断され、閉じられたと見なされますか?デフォルト値は次のとおりです。
#TCPKeepAlive yes
#ClientAliveInterval 0
#ClientAliveCountMax 3
私が理解している限り:切断/非アクティブ接続の検出とクローズは、デフォルト設定のTCPKeepAliveオプションにのみ依存します。したがって、この価値を理解することは非常に重要です。
ベストアンサー1
OpenSSHがオペレーティングシステムによって実装された調整機能を提供しないのは、TCPKeepAlive
おそらくパラメータをオンまたはオフにする唯一の便利な方法がないからですsetsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &on_off)
。
Linuxでは、マンページで説明されている/proc
ように、ファイルシステムを介してデフォルト値を表示および変更できます。tcp(7)
grep -T . /proc/sys/net/ipv4/tcp_keepalive*
/proc/sys/net/ipv4/tcp_keepalive_intvl: 75
/proc/sys/net/ipv4/tcp_keepalive_probes: 9
/proc/sys/net/ipv4/tcp_keepalive_time: 7200
したがって、接続がアイドル状態と見なされるまで2時間待ってから、75秒間隔で9つのプローブを送信します。
Linux、FreeBSD、およびNetBSD(OpenBSDではない)では、ソケットごとにこれらのオプションを変更することもできますが、
setsockopt(fd, IPPROTO_TCP, TCP_KEEP{CNT,IDLE,INTVL}, &val)
前述のようにOpenSSHはこれを行いません。