13

У меня есть небольшая локальная сеть, в которой используется встроенный WiFi, и я использую ssh в OS X с -oServerAliveInterval=240 и PuTTY 0.62 в Windows 7 Professional для установления соединений с моим Linode, Hetzner и другими серверами.

С помощью PuTTY я выбираю ConnectionSending 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).

1 ответ1

7

http://www.chiark.greenend.org.uk/~sgtatham/putty/faq.html#faq-timeout


Похоже, что TcpMaxDataRetransmissions (REG_DWORD) напрямую влияет на это. Значение можно добавить в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters с помощью regedit.exe (ключ отсутствует по умолчанию, поэтому сначала необходимо добавить его, чтобы изменить его). Когда не установлено - это 5. Добавьте его и установите по крайней мере на f (15) и перезагрузите компьютер.


Значение по умолчанию 5 кажется совершенно неадекватным для сохранения соединений во время кратковременных и временных отключений сети; Вы получите тайм-аут в течение нескольких секунд. Я добавил этот ключ TcpMaxDataRetransmissions в реестр и установил его значение равным f (15), перезагрузил компьютер и после выполнения команды sysctl net.inet.ip.forwarding=0 на маршрутизаторе прямо перед вводом символа в PuTTY, После того, как я ожидал 5 минут (после того, как ожидал 5 минут), я получил ответное сообщение о том, что переадресация на маршрутизаторе вернулась. отключение). Перед перезагрузкой PuTTY сразу же отключит соединение в течение нескольких секунд. Обратите внимание, что перезагрузка была обязательной - по крайней мере, в Windows 7 Professional простое изменение реестра не влияет ни на существующие, ни на новые подключения ! В Windows ничего не меняется!

Несмотря на это, он также может добавить и установить для KeepAliveInterval значение 60000 десятичных (60 секунд) из неустановленного по умолчанию значения 1000 (1 секунда), но это не должно оказывать никакого влияния в моем конкретном случае, как указано выше, поскольку сообщения поддержки TCP не были включены ,

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .