CONNTRACK(8) دستورات مدیریت سیستم CONNTRACK(8)

conntrack - رابط خط فرمان برای سامانه ردیابی اتصالات netfilter

conntrack -L [table] [options] [-z]
conntrack -G [table] parameters
conntrack -D [table] parameters
conntrack -I [table] parameters
conntrack -A [table] parameters
conntrack -U [table] parameters
conntrack -E [table] [options]
conntrack -F [table]
conntrack -C [table]
conntrack -S
conntrack -R file

ابزار conntrack یک رابط کاربری کامل در فضای کاربری (userspace) برای سامانه ردیابی اتصالات Netfilter ارائه می‌دهد که هدف آن جایگزینی رابط قدیمی /proc/net/ip_conntrack است. از این ابزار می‌توان برای جستجو، فهرست‌بندی، بازرسی و نگهداری زیرسیستم ردیابی اتصالات در هسته لینوکس استفاده کرد.

با استفاده از conntrack می‌توانید فهرستی از تمامی اتصالات تحت ردیابی فعلی (یا مجموعه‌ای فیلترشده از آن‌ها) را استخراج کنید، اتصالاتی را از جدول وضعیت حذف کنید و حتی اتصالات جدیدی بیفزایید.

علاوه بر این، می‌توانید رویدادهای ردیابی اتصالات را نیز پایش کنید، به عنوان مثال نمایش یک پیام رویداد (تک‌خطی) به ازای هر اتصال تازه ایجادشده.

زیرسیستم ردیابی اتصالات چندین جدول داخلی را نگهداری می‌کند:

این جدول پیش‌فرض است. شامل فهرستی از تمام اتصالات جاری است که توسط سیستم ردیابی می‌شوند. اگر از معافیت‌های ردیابی اتصالات (هدف NOTRACK در iptables) استفاده نکنید، این شامل تمامی اتصالاتی است که از سیستم عبور می‌کنند.
این جدول انتظارات (expectations) است. انتظارات ردیابی اتصالات سازوکاری است که برای «پیش‌بینی و انتظار» اتصالات مرتبط (RELATED) با اتصالات موجود استفاده می‌شود. انتظارات معمولاً توسط «کمک‌کننده‌های ردیابی اتصال» (گاهی درگاه‌های سطح برنامه یا ALG نامیده می‌شوند) برای پروتکل‌های پیچیده‌تر مانند FTP،‏ SIP یا H.323 استفاده می‌شوند.

این جدول ورودی‌های conntrack را نشان می‌دهد که منقضی شده‌اند و توسط خود سامانه ردیابی اتصالات یا از طریق ابزار conntrack از بین رفته‌اند.
این جدول ورودی‌های جدیدی را نشان می‌دهد که هنوز در جدول conntrack درج نشده‌اند. این ورودی‌ها به بسته‌هایی متصل هستند که در حال پیمایش پشته شبکه هستند، اما هنوز به نقطه تایید در قلاب postrouting نرسیده‌اند.

جداول "dying" و "unconfirmed" اساساً تنها برای اهداف اشکال‌زدایی مفید هستند. در شرایط عادی عملیاتی، مشاهده ورودی‌ها در هر یک از آن‌ها دشوار است. موارد خاصی وجود دارد که دیدن ورودی‌ها در جدول unconfirmed مجاز و معتبر است، مانند بسته‌هایی که از طریق nfqueue در صف قرار گرفته‌اند؛ همچنین در جدول dying، به عنوان مثال زمانی که conntrackd(8) در حالت رویداد مطمئن (event reliable mode) اجرا می‌شود.

گزینه‌های شناسایی‌شده توسط conntrack را می‌توان به چندین گروه مختلف تقسیم کرد.

این گزینه‌ها عملیات خاصی را که باید انجام شود مشخص می‌کنند. در هر زمان تنها یکی از آن‌ها می‌تواند مشخص شود.

فهرست کردن جدول ردیابی اتصالات یا جدول انتظارات.
جستجو و نمایش یک ورودی خاص (منطبق) در جدول داده‌شده.
حذف یک ورودی از جدول داده‌شده.
ایجاد یک ورودی جدید در جدول داده‌شده؛ در صورتی که ورودی از قبل وجود داشته باشد ناموفق خواهد بود.
افزودن یک ورودی جدید به جدول داده‌شده.
به‌روزرسانی یک ورودی در جدول داده‌شده.
نمایش گزارش رویدادها به صورت بلادرنگ (real-time).
تخلیه کامل جدول داده‌شده.
نمایش شمارنده جدول.
نمایش آمارهای سامانه ردیابی اتصالات درون هسته.
بارگذاری ورودی‌ها از یک فایل مشخص. برای خواندن از ورودی استاندارد (stdin)، باید "-" مشخص شود.

صفر کردن اتمیک شمارنده‌ها پس از خواندن آن‌ها. این گزینه فقط در ترکیب با گزینه‌های دستوری "-L, --dump" معتبر است.
نمایش خروجی در یک قالب مشخص. با گزینه خروجی extended، این ابزار اطلاعات لایه ۳ را نمایش می‌دهد. با ktimestamp، برچسب زمانی درون هسته را که از نسخه 2.6.38 در دسترس است نشان می‌دهد (می‌توانید آن را از طریق کلید sysctl(8) با نام net.netfilter.nf_conntrack_timestamp فعال کنید). گزینه خروجی labels به conntrack می‌گوید که نام برچسب‌های ردیابی اتصال را که ممکن است وجود داشته باشند نمایش دهد. گزینه خروجی userspace مشخص می‌کند که آیا رویداد توسط یک فرآیند ایجاد شده است یا خیر.
تنظیم ماسک بیتی رویدادهایی که قرار است توسط کد رویداد ctnetlink درون هسته تولید شوند. با استفاده از این پارامتر، می‌توانید پیام‌های رویداد تولیدشده توسط هسته را به انواعی که واقعاً به آن‌ها نیاز دارید کاهش دهید. این گزینه فقط در ترکیب با "-E, --event" قابل استفاده است.
تنظیم اندازه بافر سوکت Netlink بر حسب بایت. این گزینه زمانی مفید است که ابزار خط فرمان خطاهای ENOBUFS را گزارش کند. اگر این گزینه را ارسال نکنید، مقدار پیش‌فرض موجود در کلید sysctl(8) با نام net.core.rmem_default استفاده می‌شود. اگر فرآیند شما برای مدیریت تمام پیام‌های رویداد بیش از حد کند باشد، یا به عبارت دیگر، حجم رویدادها به اندازه‌ای زیاد باشد که باعث سرریز شدن بافر سوکت شود، ابزار این مشکل را گزارش می‌دهد. توجه داشته باشید که استفاده از یک بافر بزرگ احتمال برخورد با ENOBUFS را کاهش می‌دهد، اما منجر به مصرف بیشتر حافظه خواهد شد. این گزینه فقط در ترکیب با "-E, --event" قابل استفاده است.

فقط تطبیق با ورودی‌هایی که آدرس مبدأ آن‌ها در جهت اولیه برابر با مقدار مشخص‌شده به عنوان آرگومان باشد. در صورت استفاده از نشانه‌گذاری CIDR، به طور ضمنی شامل "--mask-src" می‌شود.
فقط تطبیق با ورودی‌هایی که آدرس مقصد آن‌ها در جهت اولیه برابر با مقدار مشخص‌شده به عنوان آرگومان باشد. در صورت استفاده از نشانه‌گذاری CIDR، به طور ضمنی شامل "--mask-dst" می‌شود.
فقط تطبیق با ورودی‌هایی که آدرس مبدأ آن‌ها در جهت پاسخ برابر با مقدار مشخص‌شده به عنوان آرگومان باشد.
فقط تطبیق با ورودی‌هایی که آدرس مقصد آن‌ها در جهت پاسخ برابر با مقدار مشخص‌شده به عنوان آرگومان باشد.
مشخص کردن پروتکل لایه چهار (TCP،‏ UDP و...).
مشخص کردن پروتکل لایه سه (ipv4،‏ ipv6). این گزینه فقط در ترکیب با "-L, --dump" لازم است. اگر این گزینه مشخص نشود، پروتکل پیش‌فرض لایه ۳ برابر با IPv4 خواهد بود.
مشخص کردن مهلت زمانی (timeout).
مشخص کردن علامت (mark) در conntrack. به صورت اختیاری، می‌توان مقدار ماسک را نیز تعیین کرد. در حالت "--update"، این ماسک بیت‌هایی را مشخص می‌کند که باید پیش از اعمال عملگر XOR روی مقدار MARK در ctmark صفر شوند. در غیر این صورت، ماسک پیش از مقایسه به صورت منطقی با علامت موجود AND می‌شود. در حالت "--create"، ماسک نادیده گرفته می‌شود.
مشخص کردن یک برچسب (label) در conntrack. این گزینه فقط در ترکیب با "-L, --dump"،‏ "-E, --event"،‏ "-U --update" یا "-D --delete" در دسترس است. تطبیق با ورودی‌هایی که برچسب‌های آن‌ها شامل موارد مشخص‌شده به عنوان آرگومان باشد. برای تعیین چندین برچسب که باید تنظیم شوند، از چندین گزینه -l استفاده کنید.
مشخص کردن مسیر یک فایل connlabel.conf برای بارگذاری به جای فایل پیش‌فرض. این گزینه فقط در ترکیب با "-L, --dump"،‏ "-E, --event"،‏ "-U --update" یا "-D --delete" در دسترس است.
مشخص کردن برچسب conntrack جهت افزودن به اتصالات انتخاب‌شده. این گزینه فقط در ترکیب با "-I, --create"،‏ "-A, --add" یا "-U, --update" در دسترس است.

به عنوان یک قاعده کلی، باید از تطبیق 'connlabel' در مجموعه قوانین iptables خود یا از گزاره 'ct label' در مجموعه قوانین nftables خود استفاده کنید؛ این کار پشتیبانی از ct label را در هسته فعال می‌کند و به شما اجازه می‌دهد برچسب‌ها را از طریق "-U, --update" به‌روزرسانی کنید، در غیر این صورت به‌روزرسانی‌های برچسب نادیده گرفته می‌شوند.

مشخص کردن برچسب conntrack جهت حذف از اتصالات انتخاب‌شده. اگر هیچ برچسبی داده نشود، تمام برچسب‌ها حذف می‌شوند. این گزینه فقط در ترکیب با "-U, --update" در دسترس است.
مشخص کردن علامت امنیتی selinux در conntrack.
مشخص کردن وضعیت conntrack.
فیلتر کردن اتصالات NAT مبدأ (Source NAT).
فیلتر کردن اتصالات NAT مقصد (Destination NAT).
فیلتر کردن هرگونه اتصالات NAT.
فیلتر کردن بر اساس ناحیه (zone) در conntrack. برای اطلاعات بیشتر هدف CT در iptables را ببینید.
فیلتر کردن بر اساس ناحیه conntrack در جهت اولیه (مبدأ). برای اطلاعات بیشتر هدف CT در iptables را ببینید.
فیلتر کردن بر اساس ناحیه conntrack در جهت پاسخ (reply). برای اطلاعات بیشتر هدف CT در iptables را ببینید.
مشخص کردن آدرس مبدأ چندتایی (tuple) یک انتظار. در صورت استفاده از نشانه‌گذاری CIDR، به طور ضمنی شامل "--mask-src" می‌شود.
مشخص کردن آدرس مقصد چندتایی (tuple) یک انتظار. در صورت استفاده از نشانه‌گذاری CIDR، به طور ضمنی شامل "--mask-dst" می‌شود.
مشخص کردن ماسک آدرس مبدأ. برای اتصالات conntrack این گزینه فقط در ترکیب با "-L, --dump"،‏ "-E, --event"،‏ "-U --update" یا "-D --delete" در دسترس است. برای انتظارات (expectations) این گزینه فقط در ترکیب با "-I, --create" در دسترس است.
مشخص کردن ماسک آدرس مقصد. همان محدودیت‌های ذکرشده برای "--mask-src".

فیلدهای ویژه TCP:
درگاه مبدأ در جهت اولیه
درگاه مقصد در جهت اولیه
درگاه مبدأ در جهت پاسخ
درگاه مقصد در جهت پاسخ
وضعیت TCP؛ یکی از مقادیر NONE،‏ SYN_SENT،‏ SYN_RECV،‏ ESTABLISHED،‏ FIN_WAIT،‏ CLOSE_WAIT،‏ LAST_ACK،‏ TIME_WAIT،‏ CLOSE یا LISTEN.
فیلدهای ویژه UDP:
درگاه مبدأ در جهت اولیه
درگاه مقصد در جهت اولیه
درگاه مبدأ در جهت پاسخ
درگاه مقصد در جهت پاسخ
فیلدهای ویژه ICMP:
نوع ICMP. باید به صورت عددی مشخص شود.
کد ICMP. باید به صورت عددی مشخص شود.
شناسه ICMP. باید به صورت عددی مشخص شود (اختیاری).
فیلدهای ویژه UDPlite:
درگاه مبدأ در جهت اولیه
درگاه مقصد در جهت اولیه
درگاه مبدأ در جهت پاسخ
درگاه مقصد در جهت پاسخ
فیلدهای ویژه SCTP:
درگاه مبدأ در جهت اولیه
درگاه مقصد در جهت اولیه
درگاه مبدأ در جهت پاسخ
درگاه مقصد در جهت پاسخ
وضعیت SCTP؛ یکی از مقادیر NONE،‏ CLOSED،‏ COOKIE_WAIT،‏ COOKIE_ECHOED،‏ ESTABLISHED،‏ SHUTDOWN_SENT،‏ SHUTDOWN_RECD یا SHUTDOWN_ACK_SENT.
برچسب اعتبارسنجی (مقدار ۳۲ بیتی) در جهت اولیه
برچسب اعتبارسنجی (مقدار ۳۲ بیتی) در جهت پاسخ
فیلدهای ویژه DCCP (نیازمند لینوکس >= 2.6.30):
درگاه مبدأ در جهت اولیه
درگاه مقصد در جهت اولیه
درگاه مبدأ در جهت پاسخ
درگاه مقصد در جهت پاسخ
وضعیت DCCP؛ یکی از مقادیر NONE،‏ REQUEST،‏ RESPOND،‏ PARTOPEN،‏ OPEN،‏ CLOSEREQ،‏ CLOSING یا TIMEWAIT.
نقشی که چندتایی (tuple) اولیه conntrack در حال ردیابی آن است
فیلدهای ویژه GRE:
کلید مبدأ در جهت اولیه (به مبنای ۱۶ یا ۱۰)
کلید مقصد در جهت اولیه (به مبنای ۱۶ یا ۱۰)
کلید مبدأ در جهت پاسخ (به مبنای ۱۶ یا ۱۰)
کلید مقصد در جهت پاسخ (به مبنای ۱۶ یا ۱۰)

کد خروج در صورت عملکرد صحیح 0 است. خطاهایی که ناشی از پارامترهای نامعتبر خط فرمان باشند باعث کد خروج 2 می‌شوند. هرگونه خطای دیگر منجر به کد خروج 1 خواهد شد.

conntrack -L
نمایش جدول ردیابی اتصالات در قالب /proc/net/ip_conntrack
conntrack -L -o extended
نمایش جدول ردیابی اتصالات در قالب /proc/net/nf_conntrack همراه با اطلاعات تکمیلی.
conntrack -L -o xml
نمایش جدول ردیابی اتصالات در قالب XML
conntrack -L -o save
نمایش جدول ردیابی اتصالات در قالب ساختار نحوی conntrack
conntrack -L -f ipv6 -o extended
فقط استخراج اتصالات IPv6 در قالب /proc/net/nf_conntrack همراه با اطلاعات تکمیلی.
conntrack -L --src-nat
نمایش اتصالات NAT مبدأ
conntrack -E -o timestamp
نمایش رویدادهای اتصال به همراه برچسب زمانی
conntrack -D -s 1.2.3.4
حذف تمامی جریان‌هایی که آدرس مبدأ آن‌ها 1.2.3.4 است
conntrack -U -s 1.2.3.4 -m 1
تنظیم مقدار connmark برابر با 1 برای تمام جریان‌هایی که آدرس مبدأ آن‌ها 1.2.3.4 است
conntrack -L -w 11 -o save | sed s/-w 11/-w 12/g | conntrack --load-file -
کپی کردن تمام ورودی‌ها از ناحیه 11 به ناحیه 12 در ct

لطفاً اشکالات را به netfilter-devel@vger.kernel.org گزارش دهید یا در سامانه‌ی باگزیلای Netfilter ثبت کنید (https://bugzilla.netfilter.org).

nftables(8), iptables(8), conntrackd(8)
مشاهده وبگاه رسمی: http://conntrack-tools.netfilter.org

جی شولیست (Jay Schulist)، پاتریک مک‌هاردی (Patrick McHardy)، هارالد ولته (Harald Welte) و پابلو نیرا آیوسو (Pablo Neira Ayuso) رابط سطح هسته "ctnetlink" را نوشتند که توسط ابزار conntrack استفاده می‌شود.

پابلو نیرا آیوسو ابزار conntrack را نوشت و نگهداری می‌کند، و هارالد ولته پشتیبانی از شمارنده‌های محاسباتی مبتنی بر conntrack را اضافه کرد.

صفحه راهنما توسط هارالد ولته <laforge@netfilter.org> و پابلو نیرا آیوسو <pablo@netfilter.org> نوشته شده است.

2019-08-09