Xử lý lỗi "ip_conntrack: table full, dropping packet"

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_max

Kiể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_max

Ví dụ thay đổi giá trị net.nf_conntrack_max thành 100000
# sysctl -w net.nf_conntrack_max = 100000

Thay đổ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 = 100000


Kiểm tra số lượng session hiện thời:
# wc -l /proc/net/nf_conntrack

Powered by WHMCompleteSolution