У меня есть небольшая локальная сеть, в которой используется встроенный WiFi, и я использую ssh
в OS X с -oServerAliveInterval=240
и PuTTY 0.62 в Windows 7 Professional для установления соединений с моим Linode, Hetzner и другими серверами.
С помощью PuTTY я выбираю Connection
→ Sending of null packets to keep session active
до 240. Enable TCP keepalives (SO_KEEPALIVE option)
отключено согласно настройкам по умолчанию.
Когда мой интернет временно не работает в течение приблизительно одной минуты (необходимо выполнить повторную проверку подлинности на встроенном портале), PuTTY почти всегда теряет все сеансы open ssh, которые у меня есть, и особенно те, где были какие-либо действия, но OpenSSH в OS X никогда не теряет ни одной сессии, пока мой интернет работает в течение примерно минуты или двух, даже если я на самом деле пытаюсь что-то набрать в ssh, и не вижу ответа в течение целых 60 секунд или около того, пока мое соединение снова не станет активным. (Так что я точно знаю, что состояния NAT всегда сохраняются.)
Могу ли я остановить Windows / PuTTY от упреждающего отбрасывания хороших соединений?
Мне кажется, что SO_KEEPALIVE или что-то подобное на самом деле включено в Windows по умолчанию, и время ожидания для обнаружения устаревших соединений слишком мало. Я хотел бы увеличить его до значения, превышающего пару секунд, аналогично тому, как OS X невосприимчива к этим кратким временным сбоям, если сбой составляет всего пару сотен секунд и ниже значения -oServerAliveInterval
(times ServerAliveCountMax
).