TCP Keepalive và tường lửa giết chết các phiên nhàn rỗi


10

Trong một trang web của khách hàng, nhóm mạng đã thêm một tường lửa giữa máy khách và máy chủ. Điều này đang khiến các kết nối nhàn rỗi bị ngắt kết nối sau khoảng 40 phút không sử dụng. Dân mạng nói rằng tường lửa không có thời gian chờ kết nối nhàn rỗi, nhưng thực tế là các kết nối nhàn rỗi bị hỏng.

Để giải quyết vấn đề này, trước tiên chúng tôi đã định cấu hình máy chủ (máy Linux) với các thủ tục TCP được bật với tcp_keepalive_time = 300, tcp_keepalive_intvl = 300 và tcp_keepalive_probes = 30000. Điều này hoạt động, và các kết nối có thể tồn tại trong nhiều ngày hoặc nhiều hơn. Tuy nhiên, chúng tôi cũng muốn máy chủ phát hiện các máy khách đã chết và hủy kết nối, vì vậy chúng tôi đã thay đổi cài đặt thành time = 300, intvl = 180, thăm dò = 10, nghĩ rằng nếu máy khách thực sự còn sống, máy chủ sẽ thăm dò cứ sau 300 giây (5 phút) và khách hàng sẽ phản hồi bằng ACK và điều đó sẽ khiến tường lửa không xem đây là một kết nối nhàn rỗi và giết chết nó. Nếu máy khách đã chết, sau 10 lần thăm dò, máy chủ sẽ hủy kết nối. Trước sự ngạc nhiên của chúng tôi, các kết nối nhàn rỗi nhưng còn sống bị giết sau khoảng 40 phút như trước.

Wireshark chạy ở phía máy khách cho thấy không có bất kỳ sự bảo vệ nào giữa máy chủ và máy khách, ngay cả khi bật chế độ bảo quản trên máy chủ.

Điều gì có thể xảy ra ở đây?

Nếu cài đặt cố định trên máy chủ là time = 300, intvl = 180, probes = 10, tôi sẽ hy vọng rằng nếu máy khách còn sống nhưng không hoạt động, máy chủ sẽ gửi các đầu dò cố định cứ sau 300 giây và để yên kết nối, và nếu Máy khách đã chết, nó sẽ gửi một cái sau 300 giây, sau đó thêm 9 đầu dò sau mỗi 180 giây trước khi tắt kết nối. Tôi có đúng không

Một khả năng là tường lửa bằng cách nào đó chặn các đầu dò cố định từ máy chủ và không chuyển chúng cho máy khách, và thực tế là nó có một đầu dò khiến nó nghĩ rằng kết nối đang hoạt động. Đây có phải là hành vi phổ biến cho một tường lửa? Chúng tôi không biết loại tường lửa nào có liên quan.

Máy chủ là nút Teradata và kết nối là từ tiện ích máy khách Teradata đến máy chủ cơ sở dữ liệu, cổng 1025 ở phía máy chủ, nhưng chúng tôi đã thấy vấn đề tương tự với kết nối SSH nên chúng tôi nghĩ rằng nó ảnh hưởng đến tất cả các kết nối TCP.


2
Bạn đang thiếu một mô tả về các cổng hoặc giao thức mà khách hàng đang sử dụng để kết nối với máy chủ. Có phải là SSH không?
ewwhite

Xác định tường lửa cũng có thể giúp đỡ.
Skaperen

3
Kiểm tra xem keepalive có được kích hoạt trên ổ cắm hay không bằng cách chạy netstat --timers -tn và kiểm tra từ khóa "keepalive" (vì điều này phải được kích hoạt bởi phần mềm trên ổ cắm). Thông tin chi tiết tại đây: tldp.org/HOWTO/TCP-Keepalive-HOWTO/index.html Kiểm tra các giá trị bộ đếm thời gian, giá trị đầu tiên là vài giây cho đến gói tiếp theo và gói thứ ba là số gói giữ lại nổi bật đang chờ trả lời (nếu tôi nhớ chính xác)
Victor Jerlin


2
Mạng người của bạn có lẽ sai. Nếu họ đang sử dụng một tường lửa có trạng thái, (họ gần như chắc chắn là) một mục nhập được yêu cầu cho mỗi kết nối được thực hiện. Nếu không có thời gian chờ nhàn rỗi, bộ nhớ trên tường lửa sẽ bị rò rỉ và cuối cùng tường lửa sẽ hết và gặp sự cố. Họ chắc chắn có thời gian chờ ở đâu đó ...
James Shewey

Câu trả lời:


1

Một tường lửa đầy đủ kiểm tra các gói và cũng xác nhận nếu kết nối còn sống. Tôi tin rằng tường lửa cũng nên có các cài đặt được tinh chỉnh giống như các máy tính có. Theo mặc định, nhiều tường lửa chỉ giữ các kết nối nhàn rỗi được mở trong 60 phút nhưng thời gian này có thể thay đổi tùy thuộc vào nhà cung cấp.

Một số nhà cung cấp sẽ có các tính năng như TCP Chặn, Bỏ qua trạng thái TCP và Phát hiện kết nối chết sẽ cho phép xử lý các tình huống đặc biệt như của bạn.

Tùy chọn khác là tự cấu hình tường lửa với cùng tham số bạn có trên máy chủ để đảm bảo mọi thứ đều nhất quán.

Trên tường lửa cisco, bạn có lệnh sau để cấu hình nó.

tên máy chủ (cấu hình) # thời gian chờ tính năng

thời gian chờ kết nối hh: mm: ss, Thời gian nhàn rỗi sau đó kết nối đóng lại, trong khoảng từ 0: 5: 0 đến 1193: 0: 0. Mặc định là 1 giờ (1: 0: 0).

bạn có nhiều thông số theo nhu cầu của bạn.

Tôi sẽ khuyên bạn nên nói chuyện với nhóm quản lý tường lửa và điều chỉnh thời gian theo nhu cầu của bạn hoặc kiểm tra các chức năng.

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.