IPtables là một firewall mềm tuyệt vời cho Linux, nó cho phép xây dựng các rule để có thể track đến từng connection. Tuy nhiên đó là khả năng của iptalbes, còn hệ điều hành cũng cần tuyệt vời tương ứng để xử lý các connection đó. Khi lượng traffic gia tăng bất thường hay khi server rơi vào 1 trận tấn công DOS, iptables phải track quá nhiều connection, lúc đó hệ thống báo ra từ trong /var/log/message như sau:
nf_conntrack: table full, dropping packet
Điều đó có nghĩa là khi iptables sử dụng các module limit, recent…đã track quá số lượng connection mặc định mà nó có thể xử lý được là 65536 kết nối. Khi đó hệ điều hành không còn khả năng đáp ứng lại các request từ bên ngoài, mặc dù các tài nguyên khác như RAM, CPU, I/O vẫn không thay đổi. Để giải quyết vấn đề này ta có 2 cách:
1. Xem lại các rules xử lý gói tin xem có bị lặp ở phần track nào không
2. Gia tăng số lượng connection mà hệ thống có thể xử lý
Với cách thứ 2, trước tiên ta check giới hạn hiện tại của hệ thống:
cat /proc/sys/net/netfilter/nf_conntrack_max
Sau đó là check số lượng connection mà hệ thống đang xử lý:
cat /proc/sys/net/netfilter/nf_conntrack_count
Nếu giá trị đang xử lý vượt giới hạn, ta sẽ mở thêm như sau:
vi /etc/sysctl.conf Thay đổi hoặc thêm thông số: net.nf_conntrack_max = 165536 /sbin/sysctl -p
Một điều đáng chú ý là ở các hệ thống VPS sử dụng công nghệ cũ như OpenVZ hay Virtual Ozzo, người dùng sẽ không thể tùy ý thay đổi các thông số này. Với các VPS thuê ở VCLOUD, kể cả các VPS giá rẻ, do sử dụng nền tảng ảo hóa Vmware nên các thông số trên tùy ý được điều chỉnh, chính vì thế sẽ đem lại sự tối ưu và tiện lợi nhất cho người dùng.