خطای nf_conntrack table full
خطای kernel: nf_conntrack: table full, dropping packet در لاگ سیستم (/var/log/messages) ثبت میشود و نشاندهنده پر شدن جدول ردیابی اتصالات (Connection Tracking Table) فایروال لینوکس است.
وقتی این جدول پر شود، سرور اتصالات جدید را رد میکند و سایتها از دسترس خارج میشوند.
دلایل
ترافیک بسیار بالا، حمله DDoS، تعداد زیاد اتصالات همزمان، و مقدار پیشفرض پایین nf_conntrack_max.
بررسی وضعیت
# مقدار فعلی maximum
cat /proc/sys/net/netfilter/nf_conntrack_max
# تعداد اتصالات فعلی
cat /proc/sys/net/netfilter/nf_conntrack_count
# درصد استفاده
echo "$(cat /proc/sys/net/netfilter/nf_conntrack_count) / $(cat /proc/sys/net/netfilter/nf_conntrack_max)" | bc -l
رفع فوری
افزایش nf_conntrack_max
sysctl -w net.netfilter.nf_conntrack_max=500000
دائمی کردن
در /etc/sysctl.conf:
net.netfilter.nf_conntrack_max = 500000
net.netfilter.nf_conntrack_tcp_timeout_established = 600
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 30
sysctl -p
کاهش Timeout
کاهش timeout اتصالات غیرفعال باعث آزاد شدن جدول میشود:
net.netfilter.nf_conntrack_tcp_timeout_established = 600
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 30
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 30
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 30
تنظیم CSF
در فایروال CSF، تنظیمات conntrack:
nano /etc/csf/csf.conf
# CONNLIMIT و CT_LIMIT را بررسی کنید
مانیتورینگ
# مانیتورینگ زنده
watch -n 1 "cat /proc/sys/net/netfilter/nf_conntrack_count"
اگر مرتباً با این خطا مواجه هستید، سرور مجازی با RAM بیشتر یا بهینهسازی فایروال لازم است. کانفیگ سرور شامل بهینهسازی conntrack و CSF. هاست وردپرس مدیریتشده بدون نیاز به تنظیم فایروال.