Hãy quan sát một chi nhánh trở lại sau sự cố đường truyền và cổng thấy điều không bao giờ xuất hiện trong một ngày bình thường: hàng chục laptop đến cùng lúc từ một địa chỉ công cộng. Mỗi chiếc là thiết bị hợp lệ và mỗi chiếc bắt đầu một trao đổi IKE chưa hoàn tất. Việc đợt bùng nổ đó có thành công hay không phụ thuộc vào các giới hạn không liên quan gì đến số nhân viên máy chủ có thể chịu. Đợt bùng nổ ngắn, và đó chính xác là khối lượng công việc mà đường tiếp nhận được xây dựng để chịu đựng.

Theo dõi một laptop quay lại mạng

Máy khách gửi yêu cầu ban đầu và chờ, và cho đến khi trao đổi hoàn tất cổng giữ trạng thái tiếp nhận cho lần thử đó. Các thiết bị khác sau cùng địa chỉ đến trong khi thiết bị đầu tiên vẫn chờ, và chúng xếp hàng sau một giới hạn đếm địa chỉ thay vì người dùng. Từ bên ngoài, triệu chứng là một số người dùng kết nối được và một nhóm lớn hơn bị hết thời gian.

Không có gì trong chuỗi đó là lỗi. Đường tiếp nhận đang làm đúng điều nó được cấu hình để làm.

Hãy đếm công việc nửa mở như một tài nguyên riêng

strongSwan tách hai nhóm: các liên kết đã thiết lập hoàn toàn và các lần thử vẫn đang kết nối hoặc chờ xử lý. Ngưỡng chặn áp dụng cho các liên kết nửa mở được quy cho một địa chỉ ngang hàng, còn ngưỡng cookie áp dụng toàn cục và theo từng địa chỉ. Những bộ đếm đó bảo vệ daemon khỏi bị tiêu hao bởi công việc chưa xác thực, đúng là hình dạng của một cơn bão kết nối lại. Không có trạng thái nào như vậy xuất hiện trong danh sách các đường hầm đã thiết lập.

Đọc chúng như mức trần của phiên nhân viên là sai lầm dẫn đến việc tăng mọi thứ cùng lúc. Một máy chủ mang bốn trăm đường hầm đã thiết lập không tự động có khả năng hấp thụ bốn trăm gói đầu tiên đồng thời, vì hai chi phí rơi vào những nơi khác nhau.

Độ trễ xác thực quyết định mỗi lần thử ở lại trong số nửa mở bao lâu. Một backend trả lời chậm biến một đợt bùng nổ ngắn thành hàng đợi dài ngay cả khi tốc độ đến khiêm tốn.

swanctl --stats
swanctl --list-sas | grep -c ESTABLISHED

Đọc cài đặt tiếp nhận trước khi thay đổi chúng

Tìm các giá trị mà daemon đang chạy thực sự đã tải trước khi hình thành ý kiến về chúng. Cấu hình thường được chia giữa một tệp chính và một thư mục các đoạn cho từng plugin, nên một giá trị đặt ở nơi này có thể bị ghi đè ở nơi khác. Tìm kiếm bên dưới hiển thị mọi tệp đề cập đến các cài đặt này.

Sau đó quyết định con số nào quá nhỏ. Nếu một địa chỉ đại diện hợp lệ cho cả văn phòng, ngưỡng chặn theo địa chỉ là giá trị phải chứa được mức tập trung đó. Ngưỡng cookie toàn cục bảo vệ daemon khỏi lũ rộng hơn và không nên nới lỏng chỉ vì một trang kết nối lại. So sánh giá trị theo địa chỉ đó với trang lớn nhất mà bạn thực sự có.

Giữ cơ chế cookie được bật. Cookie buộc máy khách chứng minh rằng nó có thể nhận tại địa chỉ mà nó tuyên bố trước khi daemon dành công việc thực cho trao đổi, và việc tắt chúng không phải là nâng cấp dung lượng trung tính. Chỉ tăng ngưỡng khi có tốc độ đến đo được và ngân sách xác thực được công bố phía sau.

grep -rn -E 'block_threshold|cookie_threshold' /etc/strongswan.conf /etc/strongswan.d/
swanctl --stats | grep -i half

Lập kế hoạch cho việc trở lại, không chỉ trạng thái ổn định

Một mục tiêu sẵn sàng chỉ đếm phiên đã thiết lập mô tả một buổi chiều yên tĩnh, không phải một lần phục hồi. Thay vào đó hãy hỏi nhóm người dùng dự kiến trở lại như thế nào sau một sự kiện mạng chung, và liệu đường tiếp nhận có thể hấp thụ hình dạng đó không.

Việc dàn trải kết nối lại trên một đội được quản lý thường rẻ hơn mở rộng giới hạn, vì nó loại bỏ đợt bùng nổ nhân tạo thay vì trả tiền cho nó vĩnh viễn. Theo dõi trạng thái nửa mở và các sự kiện tiếp nhận bên cạnh các lần thiết lập thành công, và coi số nửa mở tăng lên với thành công phẳng lặng là cảnh báo sớm chứ không phải điều lạ.

Tài liệu tham chiếu của nhà cung cấp cho các cài đặt này là tài liệu strongswan.conf, trong đó nêu tên các bộ đếm và bản phát hành đã giới thiệu ngưỡng cookie theo địa chỉ. Hãy đọc phần dành cho phiên bản đã cài đặt thay vì trang mới nhất, vì giá trị mặc định thay đổi giữa các bản phát hành.

Bài viết liên quan