Tại sao Windows 7 / PuTTY giảm kết nối TCP ngay cả khi mất điện rất ngắn?


15

Tôi có một mạng cục bộ nhỏ, cõng trên WiFi bị giam cầm và tôi sử dụng sshtrên OS X với -oServerAliveInterval=240và PuTTY 0.62 trên Windows 7 Professional để thiết lập kết nối với Linode, Hetzner và các máy chủ khác của tôi.

Với PuTTY, tôi chọn ConnectionSending of null packets to keep session activeđến 240. Enable TCP keepalives (SO_KEEPALIVE option)Tắt, theo mặc định.

Khi internet của tôi tạm thời ngừng hoạt động khoảng một phút (phải xác thực lại trên cổng bị khóa), PuTTY hầu như luôn mất tất cả các phiên ssh mở mà tôi có, và đặc biệt là những nơi có bất kỳ loại hoạt động nào, nhưng OpenSSH trên OS X không bao giờ mất bất kỳ phiên nào miễn là internet của tôi được sao lưu trong khoảng một hoặc hai phút, ngay cả khi tôi thực sự cố gắng nhập nội dung nào đó trong ssh và không thấy trả lời trong toàn bộ 60 giây hoặc lâu hơn, cho đến khi kết nối của tôi hoạt động trở lại. (Vì vậy, tôi biết chắc chắn rằng các quốc gia NAT luôn được bảo tồn.)

Tôi có thể ngăn Windows / PuTTY loại bỏ các kết nối tốt không?

Đối với tôi, dường như SO_KEEPALIVE hoặc một số thứ như vậy thực sự được bật trong Windows và thời gian chờ để phát hiện các kết nối cũ là quá nhỏ. Tôi muốn tăng nó lên một vài giây, tương tự như cách OS X miễn nhiễm với những lần mất điện tạm thời này, miễn là thời gian ngừng hoạt động chỉ vài trăm giây và thấp hơn giá trị của -oServerAliveInterval(lần ServerAliveCountMax).


Chỉ cần viết thư để nói rằng tôi có cùng một vấn đề và để nâng cao ... sẽ xem câu hỏi này. Tôi giả sử nó có liên quan đến việc triển khai trình điều khiển mạng trên Windows.
allquixotic

Tôi đã sử dụng putty được 10 năm và đã tìm kiếm một giải pháp cho vấn đề này ngay từ đầu. Điểm đau này chỉ có thể được giảm nhẹ, không được giải quyết. Putty yêu cầu kết nối internet đáng tin cậy 100,00% và các gói bị rơi 0,00%. Trong thế giới mới của Internet luôn luôn được chú ý ở khắp mọi nơi, putty ngày càng trở nên ít hữu dụng hơn khi năm tháng trôi qua vì nó chỉ có thể hoạt động trong vài phút trước khi công việc của bạn bị gián đoạn và phải khởi động lại putty, kết nối lại , sau đó chọn nơi bạn rời đi, giải phóng các tệp bị hỏng và cố gắng hoàn thành công việc của bạn trước khi ngừng hoạt động tiếp theo.
Eric Leschinski

@EricLeschinski, bạn không chính xác. Sự giảm thiểu được nêu trong câu hỏi này chỉ hoạt động tốt, tôi đã không bị ngắt kết nối IPv4 trong một thời gian rất, rất lâu. (Ngoài các trường hợp toàn bộ địa chỉ IPv4 thay đổi hoặc tôi ngủ, v.v. - đối với những trường hợp đó, moshlà cách thay thế tốt hơn.)
cnst

Câu trả lời:


8

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


Có vẻ như TcpMaxDataRetransmissions(REG_DWORD) ảnh hưởng trực tiếp đến điều này. Giá trị có thể được thêm vào HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parametersbằng regedit.exe(khóa bị thiếu theo mặc định, vì vậy trước tiên bạn phải thêm nó để thay đổi nó). Khi không được đặt - đó là 5. Thêm nó và đặt ít nhất là f(15) và khởi động lại.


Giá trị mặc định là 5 dường như không đủ để giữ kết nối trong thời gian mất mạng ngắn và tạm thời; bạn sẽ có một khoảng thời gian chờ trong vài giây. Tôi đã thêm TcpMaxDataRetransmissionskhóa này vào sổ đăng ký và đặt giá trị của nó thành f(15), khởi động lại máy và sau khi thực hiện sysctl net.inet.ip.forwarding=0trên bộ định tuyến ngay trước khi nhập một ký tự trong PuTTY, ký tự sẽ được gửi lại cho tôi sau khi bật lại chuyển tiếp trên bộ định tuyến của tôi sau khi chờ 5 phút (tôi đã kiểm tra nó để xác định rằng giá trị 0x0000000c (12) làm cho kết nối bị hỏng đúng 7 phút sau lần thử đầu tiên gửi gói trong khi bị cúp). Trước khi khởi động lại, PuTTY sẽ hết thời gian kết nối trong vài giây ngay lập tức. Lưu ý rằng cần phải khởi động lại - ít nhất là trên Windows 7 Professional,chỉ đơn giản là thay đổi sổ đăng ký không ảnh hưởng đến các kết nối mới và hiện tại ! Không có gì thay đổi trong Windows!

Trong khi ở đó, cũng có thể thêm và đặt KeepAliveIntervalthành 60000số thập phân (60 giây) từ giá trị không đặt mặc định là 1000(1 giây), nhưng nó không được coi là có bất kỳ ảnh hưởng nào trong trường hợp cụ thể của tôi như trên, vì các chế độ giữ TCP không được bật.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.