1 Giới thiệu
ip_conntrack là một module mà iptable dùng để theo dõi các kết nối đến server.
ip_contrack sử dụng một bảng để quản lý và kích thước của bảng này được định nghĩa trong file ip_conntrack_max trên CentOS 5 và nf_conntrack_max trên CentOS 6.
Khi số lượng kết nối tăng cao sẽ nhận được thông báo “ip_conntrack: table full, dropping packet” trong file /var/log/messages.
Tức bảng này đã bị đầy, do đó các kết nối đến server sẽ bị iptable huỷ bỏ ( drop ).
2. Khắc phục lỗi
Ta có điểu chỉnh tăng kích thước của bảng lên tùy thuộc vào kích thước bộ nhớ ( RAM) trên server để khắc phục lỗi trên.
Giá trị mặc định được tính theo công thức
CONNTRACK_MAX = RAMSIZE (in bytes) / (16384 *(x / 32)) trong đó x là là số bit của hệ điều hành. Giá trị này không nhỏ hơn 128 và hệ thống có RAM lớn 1GB có giá trị là 65536.
CentOS 5
Kiểm tra giá trị ip_conntrack_max đang sử dụng
# cat /proc/sys/net/ipv4/ip_conntrack_max
Ví dụ thay đổi giá trị ip_conntrack_max thành 1131072
# echo 1131072 > /proc/sys/net/ipv4/ip_conntrack_maxKiểm tra số lượng session hiện thời:
# wc -l /proc/net/ip_conntrack
CentOS 6
Kiểm tra giá trị ip_conntrack_max đang sử dụng
# sysctl net.nf_conntrack_maxVí dụ thay đổi giá trị net.nf_conntrack_max thành 100000
# sysctl -w net.nf_conntrack_max = 100000Thay đổi giá trị này vĩnh viễn bằng cách sửa file /etc/sysctl.conf thêm dòng:
net.nf_conntrack_max = 100000Kiểm tra số lượng session hiện thời:
# wc -l /proc/net/nf_conntrack