Saya memiliki jaringan lokal kecil yang mendukung Piggybacks pada WiFi captive, dan saya gunakan ssh
pada OS X dengan -oServerAliveInterval=240
dan Putty 0,62 pada Windows 7 Professional untuk membuat koneksi ke Linode, Hetzner dan server lain.
Dengan Putty, saya memilih Connection
→ Sending of null packets to keep session active
ke 240. Tidak Enable TCP keepalives (SO_KEEPALIVE option)
aktif, sesuai standar.
Ketika internet saya untuk sementara waktu sekitar satu menit (harus mengautentikasi ulang pada captive portal), Putty hampir selalu kehilangan semua sesi ssh terbuka yang saya miliki, dan terutama yang ada aktivitas apa pun, tetapi OpenSSH di OS X tidak pernah kehilangan sesi apa pun selama internet saya kembali dalam sekitar satu atau dua menit, bahkan jika saya benar-benar mencoba mengetik sesuatu dalam ssh, dan tidak melihat balasan selama 60 detik atau lebih, sampai koneksi saya aktif kembali. (Jadi saya tahu pasti bahwa negara-negara NAT selalu dilestarikan.)
Bisakah saya menghentikan Windows / Putty dari sebelumnya membuang koneksi yang baik?
Tampaknya bagi saya seolah-olah SO_KEEPALIVE atau semacamnya sebenarnya aktif secara default di Windows, dan batas waktu untuk mendeteksi koneksi basi terlalu kecil. Saya ingin meningkatkannya menjadi lebih dari beberapa detik, mirip dengan bagaimana OS X kebal terhadap pemadaman sementara yang singkat ini selama pemadaman hanya beberapa ratus detik dan di bawah nilai -oServerAliveInterval
(kali ServerAliveCountMax
).
mosh
merupakan alternatif yang lebih baik.)Jawaban:
http://www.chiark.greenend.org.uk/~sgtatham/putty/faq.html#faq-timeout
Sepertinya
TcpMaxDataRetransmissions
(REG_DWORD) langsung memengaruhi ini. Nilai dapat ditambahkan keHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters
denganregedit.exe
(kunci tidak ada secara default, jadi Anda harus menambahkannya terlebih dahulu untuk mengubahnya). Ketika tidak disetel - ini 5. Tambahkan, dan atur setidaknya kef
(15), dan reboot.Nilai default 5 tampaknya cukup tidak memadai untuk menjaga koneksi selama pemadaman jaringan singkat dan sementara; Anda akan mendapatkan batas waktu dalam beberapa detik. Saya telah menambahkan
TcpMaxDataRetransmissions
kunci ini ke registri, dan mengatur nilainya kef
(15), me-reboot mesin, dan setelah melakukansysctl net.inet.ip.forwarding=0
pada router tepat sebelum mengetik karakter di Putty, mendapatkan karakter bergema kembali kepada saya setelah mengaktifkan kembali penerusan pada router saya setelah menunggu 5 menit (saya mengujinya untuk menentukan bahwa nilai 0x0000000c (12) membuat koneksi terputus tepat 7 menit setelah upaya pertama mengirim paket selama pemadaman). Sebelum memulai ulang, Putty akan memutuskan koneksi dalam beberapa detik segera. Perhatikan bahwa reboot diperlukan - setidaknya pada Windows 7 Professional,hanya mengubah registri tidak berpengaruh pada koneksi yang ada maupun yang baru ! Tidak ada yang pernah berubah di Windows!Sementara itu, mungkin juga menambah dan mengatur
KeepAliveInterval
ke60000
desimal (60 detik) dari nilai default tidak disetel1000
(1 detik), tetapi itu tidak seharusnya memiliki efek dalam kasus khusus saya seperti di atas, karena TCP keepalives tidak diaktifkan.sumber