IRPOWER

چگونگی رفع مشکل nf_conntrack: table full, dropping packet

مرکز آموزش » سرور مجازی لینوکس » چگونگی رفع مشکل nf_conntrack: table full, dropping packet
ممکن است گاهی هنگام دسترسی به سرور با شرایط زیر مواجه گردید:

• عدم دسترسی به سرور در حالیکه لود سرور بطور غیر طبیعی کاهش یافته است.
• مشاهده Packet Loss فراوان بر روی سرور
• عدم دسترسی به یکی یا تمامی IP های سرور
• اختلال در دسترسی به سرور از طریق ssh

جهت بررسی مشکل ابتدا با اجرای دستور زیر در SSH اقدام به بررسی خطاهای موجود در سرور می کنیم:
tail -f /var/log/messages
در صورتی که مشاهده نمودید خطاهای زیر مکررا در حال نمایش هستند بدان معناست که ظرفیت nf_conntrack پر شده است و بایستی ارتقا یابد.
May 22 02:25:35 cp12-122 kernel: nf_conntrack: table full, dropping packet.
May 22 02:25:35 cp12-122 kernel: nf_conntrack: table full, dropping packet.
May 22 02:25:35 cp12-122 kernel: nf_conntrack: table full, dropping packet.
May 22 02:25:35 cp12-122 kernel: nf_conntrack: table full, dropping packet.
May 22 02:25:35 cp12-122 kernel: nf_conntrack: table full, dropping packet.
May 22 02:25:35 cp12-122 kernel: nf_conntrack: table full, dropping packet.
May 22 02:25:35 cp12-122 kernel: nf_conntrack: table full, dropping packet.
May 22 02:25:35 cp12-122 kernel: nf_conntrack: table full, dropping packet.
May 22 02:25:35 cp12-122 kernel: nf_conntrack: table full, dropping packet.
May 22 02:25:35 cp12-122 kernel: nf_conntrack: table full, dropping packet.
May 22 02:25:35 cp12-122 kernel: nf_conntrack: table full, dropping packet.

nf_conntrack چیست؟

در سیستم عامل های لینوکس بخشی با عنوان Netfilter که معمولا با نام iptables از آن یاد می کنند وجود دارد که توسط قسمتی از هسته سیستم عامل با نام nf_conntrack اقدام به بررسی تراکنش های شبکه و اعمال Role های مرتبط می نماید.
اما معمولا عددی جهت پذیرش Packet ها به آن اختصاص داده شده است که در صورت پر شدن این ظرفیت، سرور دچار اختلال می گردد.
این مشکل معمولا در اثر وجود ترافیک سنگین مانند حملات DOS یا DDOS رخ می دهد.


چگونگی ارتقا ظرفیت nf_conntrack و رفع مشکل:
1- دستور زیر را در سرور اجرا فرمایید تا ظرفیت پیشفرض nf_conntrack مشخص شود:
sysctl -a|grep -i nf_conntrack_max
2- حال با اجرای دستور زیر تعداد Packet های کنونی که به سمت سرور می باشند را مشاهده نمایید:
sysctl net.netfilter.nf_conntrack_count
3- در صورتی که هر دو عدد نزدیک به هم بودند یا Packet های کنونی بیش از ظرفیت مشاهده شد لازم است اقدام به ارتقا ظرفیت نمایید. دستور زیر ظرفیت nf_conntrack را به عددی که به آن معرفی می کنید افزایش می دهد. (پیشنهاد می شود عدد را دو برابر میزان ظرفیت فعلی تنظیم فرمایید.)
sysctl -w net.netfilter.nf_conntrack_max=66500
4- حال جهت اطمینان از رفع مشکل مجددا مراحل 1 و2 را اجرا نمایید. در شرایط طبیعی عدد مربوط به Packet های کنونی بایستی نسبت به ظرفیت nf_conntrack فاصله قابل توجه داشته باشد. خروجی زیر وضعیت طبیعی را گزارش می کند:
net.nf_conntrack_max = 32280
net.netfilter.nf_conntrack_count = 21068
 
نکات قابل توجه:
1- چنانچه دستور های فوق اجرا نگردید از /sbin/ در ابتدای دستور های فوق استفاده نمایید.
2- معمولا امکان افزایش ظرفیت بدون ایجاد ریسک وجود دارد با این حال ممکن است در برخی شرایط و تنظیمات افزایش این میزان باعث ایجاد اشکالاتی غیر قابل پیشبینی شود که در این رابطه لازم است با مدیر سرور خود مشورت فرمایید.

تمامی حقوق مادی و معنوی مطالب متعلق به irPowerWeb است.


تمامی حقوق مادی و معنوی مطالب متعلق به IRPOWER است.

کپی برداری تنها با ذکر منبع و با لینک به صفحه مربوطه در این وب سایت مجاز است
  • 14 کاربر این را مفید یافتند
آیا این پاسخ به شما کمک کرد؟
مقالات مشابه

IRPOWER