Ho una piccola rete locale che trasporta sulle spalle su un WiFi in cattività e lo uso ssh
su OS X con -oServerAliveInterval=240
e PuTTY 0.62 su Windows 7 Professional per stabilire connessioni a Linode, Hetzner e altri server.
Con PuTTY, seleziono Connection
→ Sending of null packets to keep session active
su 240. Enable TCP keepalives (SO_KEEPALIVE option)
È disattivato, come da impostazione predefinita.
Quando la mia connessione Internet è temporaneamente inattiva per circa un minuto (devo eseguire nuovamente l'autenticazione sul portale captive), PuTTY perde quasi sempre tutte le sessioni ssh aperte che ho, e in particolare quelle in cui c'è stato qualsiasi tipo di attività, ma OpenSSH su OS X non perde mai alcuna sessione fintanto che la mia connessione Internet viene ripristinata entro circa un minuto o due, anche se in realtà provo a digitare qualcosa in ssh e non vedo risposta per tutti i 60 secondi circa, fino a quando la mia connessione non sarà di nuovo attiva. (Quindi so per certo che gli stati NAT sono sempre preservati.)
Posso impedire a Windows / PuTTY di scartare preventivamente buone connessioni?
Mi sembra che SO_KEEPALIVE o alcuni di questi siano effettivamente attivi per impostazione predefinita in Windows e il timeout per il rilevamento di connessioni obsolete sia troppo piccolo. Vorrei aumentarlo a qualcosa di più di un paio di secondi, analogamente a come OS X è immune da queste brevi interruzioni temporanee, purché l'interruzione sia solo di un paio di centinaia di secondi ed è inferiore al valore di -oServerAliveInterval
(volte ServerAliveCountMax
).
mosh
è un'alternativa migliore.)