2012-02-17 39 views
6

Tôi đã có thiết lập tự nhiên với hàng nghìn thiết bị được kết nối với nó. Cổng có internet do eth0 cung cấp và các thiết bị ở phía LAN kết nối với eth1 trên gateway.ip_conntrack_tcp_timeout_established không được áp dụng cho toàn bộ mạng con

tôi có các thiết lập sau đây với iptables:

/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 
/sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT 
/sbin/iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT 

eth1 được cấu hình như sau:

ip: 192.168.0.1 
subnet: 255.255.0.0 

Khách hàng được giao 192.168.0.2 ip qua 192.168.255.254.

Trong /etc/sysctl.conf tôi có các thiết lập sau đây cho ip_conntrack_tcp_timeout_established

net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=1200 

Do số lượng các thiết bị client kết nối với cửa ngõ này, tôi không thể sử dụng thời gian chờ mặc định 5 ngày.

Điều này có vẻ hoạt động tốt và đã thử nghiệm thiết lập với hơn 10.000 thiết bị khách.

Tuy nhiên, vấn đề tôi thấy là thời gian chờ thiết lập tcp 1200 chỉ được áp dụng cho các thiết bị trong phạm vi ip 192.168.0.2 đến 192.168.0.255. Tất cả các thiết bị có ips trong khoảng 192.168.1.x đến 192.168.255.x vẫn đang sử dụng thời gian chờ mặc định là 5 ngày.

Điều này đang để lại quá nhiều kết nối "THÀNH LẬP" trong bảng/proc/net/ip_conntrack và cuối cùng sẽ được lấp đầy, mặc dù chúng sẽ hết thời gian trong vòng 20 phút, chúng cho thấy chúng sẽ hết thời gian trong 5 ngày .

Rõ ràng là tôi thiếu cài đặt ở đâu đó hoặc có cấu hình nào đó không chính xác.

Mọi đề xuất?

Cảm ơn

+0

+1 cho câu hỏi hay, nhưng có thể được giải quyết tốt hơn bởi những người trên serverfault.com –

+4

Chỉ trong trường hợp bất kỳ ai khác có vấn đề tương tự. Về cơ bản, tôi đã cài đặt conntrack_tools và chạy một sudo/usr/sbin/conntrack -F để đặt lại bảng và sau đó tất cả các kết nối dường như bắt đầu sử dụng thời gian chờ của 1200 thay vì thời gian chờ 5 ngày. –

Trả lời

3

Như @StephenHankinson đề cập, các kết nối hiện tại (x conntrack -L) tại thời điểm thay đổi biến sysctl không có thiết lập lại thời gian chờ của họ. Điều này thường không phải là một vấn đề, vì các kết nối này cuối cùng sẽ kết thúc, nhưng NFCT có thể bị buộc phải quên tất cả CT bằng cách sử dụng conntrack -F. Tuy nhiên, lưu ý rằng điều này có thể giết chết các kết nối hiện có nếu ruleset của bạn không cho phép các kết nối “MỚI” không bắt đầu bằng TCP SYN.

Các vấn đề liên quan