Đây là một lời giải thích sơ bộ về những gì có thể đi sai.
Không thể tạo các kết nối X * 2^16 để chỉ khớp với 2^16 kết nối. Xung đột cổng nguồn sẽ bắt đầu xảy ra ngày càng thường xuyên hơn và được giải quyết bằng cách thay đổi cổng nguồn, nhưng việc tìm một cổng nguồn miễn phí không xung đột với luồng khác sẽ ngày càng khó hơn: suy giảm hiệu suất bắt đầu tăng lên, thậm chí có thể bắt đầu xảy ra tình trạng rớt gói.
Điều này sẽ xảy ra khác đi nếu iptables đã được thay thế bằng nftables? Không. Trong cả hai trường hợp, chúng không phải là bộ phận giải quyết va chạm. Độ phân giải này được thực hiện trong cùng một chương trình phụ trợ Netfilter phổ biến: các nf_nat
mô-đun hạt nhân, có thể lặp lại nhiều lần nếu cần và thậm chí bỏ cuộc (ví dụ: bỏ cái mới theo dõi mục nhập và gói đã kích hoạt quá trình tạo dự kiến của nó).
Nguyên nhân là NAT nguồn được thực hiện khi có một đích duy nhất có thể (máy chủ): nên tránh.
Cách giải quyết có thể:
không sử dụng nguồn NAT. Thay vào đó, nên thực hiện một định tuyến đầy đủ (ngay cả khi điều này yêu cầu nhiều đường dẫn hoặc đường hầm) để 10.10.10.10 không phải nhìn thấy một nguồn 50.50.50.50 duy nhất. Câu hỏi không giải thích lý do tại sao SNAT này là bắt buộc, vì vậy không thể nêu chi tiết hơn.
có nhiều địa chỉ nguồn để cân bằng tải và phân bổ áp suất cổng nguồn. Điều này có thể đạt được với iptables sử dụng thống kê
mô-đun để cân bằng tải cho nhiều SNAT
chỉ tiêu.
chuyển sang nftables thường là một cải tiến, nhưng trong trường hợp này, đây dường như không phải là giải pháp.