Linux
OpenSSH:TCPKeepAlive 選項的間隔是多少?
在 sshd 配置中,您可以指定選項
TCPKeepAlive yes
。這些 Paket 未加密,因此可能會被欺騙。與選項ClientAliveInterval ClientAliveCountMax ServerAliveInterval ServerAliveCountMax
您可以指定保持活動數據包的間隔和斷開連接的超時時間 (*CountMax)。另請參閱此處sshd_config 中的“ServerAliveInterval”和“ClientAliveInterval”選項究竟是做什麼的?
與
TCPKeepAlive
您只能啟用它。那麼發送 TCP-Pakets 的間隔是多少呢?在多少個不成功的數據包之後,連接被視為斷開並關閉?由於預設值為:#TCPKeepAlive yes #ClientAliveInterval 0 #ClientAliveCountMax 3
據我了解:斷開/非活動連接的檢測和關閉僅取決於預設配置中的 TCPKeepAlive 選項。因此,了解這些價值觀非常重要。
OpenSSH 不提供任何調整
TCPKeepAlive
(由作業系統實現)的原因可能是因為沒有可移植的方法來更改其參數;唯一便攜的東西是用setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &on_off)
.
/proc
在 Linux 上,您可以通過文件系統查看(並更改)預設值,如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 不會這樣做。