Windows 7 / PuTTY가 아주 짧은 정전에도 TCP 연결을 끊는 이유는 무엇입니까? 소규모 로컬 네트워크가 있으며

캡 티브 WiFi에 피기 백하는 소규모 로컬 네트워크가 있으며 Windows 7 Professional의 sshOS X -oServerAliveInterval=240및 PuTTY 0.62를 사용 하여 Linode, Hetzner 및 기타 서버에 연결합니다.

PuTTY를 사용하면 ConnectionSending of null packets to keep session active~ 240을 선택 합니다. Enable TCP keepalives (SO_KEEPALIVE option)기본값은입니다.

약 1 분 동안 인터넷이 일시적으로 다운되면 (포로 포털에서 다시 인증해야 함) PuTTY는 거의 항상 열려있는 모든 ssh 세션, 특히 모든 활동이있는 세션, 특히 OS X의 OpenSSH를 잃습니다. 실제로 ssh로 무언가를 입력하려고 시도하더라도 연결이 다시 활성화 될 때까지 60 초 정도 동안 아무런 응답도 보지 않아도 약 1 ~ 2 분 이내에 인터넷이 백업되는 한 세션이 손실되지 않습니다. (따라서 NAT 상태가 항상 유지된다는 것을 알고 있습니다.)

Windows / PuTTY가 양호한 연결을 미리 버리지 않도록 막을 수 있습니까?

SO_KEEPALIVE 또는 그와 같은 일부가 Windows에서 실제로 기본적으로 켜져있는 것처럼 보이며 오래된 연결을 감지하는 시간 초과가 너무 작습니다. 중단 시간이 수백 초에 불과하고 -oServerAliveInterval(times ServerAliveCountMax) 값 미만인 한 OS X가 이러한 일시적인 일시적 중단에 어떻게 면역되는지와 유사하게 몇 초 이상으로 늘리고 싶습니다 .



답변

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


것 같다 TcpMaxDataRetransmissions(REG_DWORD)이 직접 영향을 미칩니다. 값에 추가 할 수 있습니다 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parametersregedit.exe(당신이 먼저 변경하기 위해 추가 할 수 있도록 키가 기본적으로 없습니다). 설정이 해제되면 — 5입니다. 추가하고 f(15) 이상으로 설정 한 후 재부팅하십시오.


기본값 5는 일시적 및 일시적인 네트워크 중단시 연결을 유지하는 데 매우 부적절한 것 같습니다. 몇 초 안에 시간 초과가 발생합니다. 이 TcpMaxDataRetransmissions키를 레지스트리에 추가 하고 값을 f(15) 로 설정하고 컴퓨터를 재부팅 한 후 sysctl net.inet.ip.forwarding=0PuTTY에 문자를 입력하기 직전에 라우터에서 작업 을 수행 한 후 전달을 다시 활성화 한 후 문자가 다시 표시됩니다. 5 분을 기다린 후 라우터에서 (나는 0x0000000c (12) 값이 중단 동안 패킷을 처음 보내려고 시도한 후 정확히 7 분 동안 연결을 끊는지를 확인하기 위해 테스트했습니다). 재부팅하기 전에 PuTTY는 몇 초 내에 연결 시간을 즉시 초과했습니다. 적어도 Windows 7 Professional에서는 재부팅이 필요했습니다.단순히 레지스트리를 변경해도 기존 연결이나 새로운 연결에는 영향을 미치지 않습니다 ! Windows에서는 아무것도 바뀌지 않습니다!

그 동안 기본 설정 해제 값 (1 초)에서 10 진수 (60 초) KeepAliveInterval로 추가하고 설정할 수도 있지만 TCP keepalives가 활성화되어 있지 않으므로 위와 같이 특정 경우에는 아무런 영향을 미치지 않습니다.600001000