ARPTABLES(8) System Manager's Manual ARPTABLES(8)

arptables-nft - ابزار مبتنی بر nftables برای فیلتر کردن بسته‌های ARP

arptables [-t table] {-A|-D} chain rule-specification [options...]

arptables [-t table] -I chain [rulenum] rule-specification

arptables [-t table] -R chain rulenum rule-specification

arptables [-t table] -D chain rulenum

arptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]

arptables [-t table] -N chain

arptables [-t table] -X [chain]

arptables [-t table] -P chain policy

arptables [-t table] -E old-chain-name new-chain-name

rule-specification := [matches...] [target]

match := -m matchname [per-match-options]

target := -j targetname [per-target-options]

arptables یک ابزار فضای کاربری است که برای برپایی و نگهداری جدول‌های قواعد ARP در هسته لینوکس استفاده می‌شود. این قواعد فریم‌های ARP عبوری را بازرسی می‌کنند. arptables مشابه ابزار فضای کاربری iptables است، اما arptables پیچیدگی کمتری دارد.

جدول هسته برای تقسیم قابلیت‌ها به مجموعه‌های مختلفی از قواعد استفاده می‌شود. به هر مجموعه از قواعد یک زنجیره (chain) گفته می‌شود. هر زنجیره یک فهرست مرتب از قواعد است که می‌توانند با فریم‌های ARP مطابقت داده شوند. اگر یک قاعده با یک فریم ARP منطبق شود، یک مشخصه پردازش تعیین می‌کند که با آن فریم منطبق چه باید کرد. به این مشخصه پردازش «هدف» (target) گفته می‌شود. با این حال، اگر فریم با قاعده فعلی در زنجیره مطابقت نداشته باشد، قاعده بعدی در زنجیره بررسی می‌شود و به همین ترتیب ادامه می‌یابد. کاربر می‌تواند زنجیره‌های جدیدی (تعریف‌شده توسط کاربر) ایجاد کند که می‌توانند به عنوان «هدف» یک قاعده استفاده شوند.

یک قاعده دیوار آتش معیارهایی را برای یک فریم ARP و یک مشخصه پردازش فریم به نام هدف تعیین می‌کند. هنگامی که یک فریم با یک قاعده مطابقت پیدا کند، اقدام بعدی انجام‌شده توسط هسته با هدف مشخص می‌شود. هدف می‌تواند یکی از مقادیر زیر باشد: ACCEPT، DROP، CONTINUE، RETURN، یک «افزونه» (به بخش زیر مراجعه کنید) یا یک زنجیره تعریف‌شده توسط کاربر.

ACCEPT به معنای عبور دادن فریم است. DROP به معنای دور ریختن فریم است. CONTINUE به معنای این است که قاعده بعدی باید بررسی شود. این می‌تواند برای آگاهی از اینکه چند فریم از یک نقطه مشخص در زنجیره عبور می‌کنند یا برای ثبت گزارش (لاگ) آن فریم‌ها کاربردی باشد. RETURN به معنای توقف پیمایش این زنجیره و ادامه کار از قاعده بعدی در زنجیره قبلی (فراخواننده) است. برای افزونه‌های هدف لطفاً به بخش افزونه‌های هدف (TARGET-EXTENSIONS) این صفحه راهنما مراجعه کنید.

تنها یک جدول ARP در هسته لینوکس وجود دارد. این جدول filter است. می‌توانید آرگومان -t filter را در دستور arptables حذف کنید. آرگومان -t در صورت استفاده، باید نخستین آرگومان در خط فرمان arptables باشد.


جدول filter، تنها جدول موجود است و شامل دو زنجیره داخلی می‌باشد: INPUT (برای فریم‌هایی که مقصد آن‌ها همین میزبان است) و OUTPUT (برای فریم‌هایی که به صورت محلی تولید شده‌اند).

پس از آرگومان اولیه خط فرمان arptables، آرگومان‌های باقیمانده را می‌توان به چند گروه مختلف تقسیم کرد. این گروه‌ها عبارتند از دستورات، دستورات متفرقه، مشخصات قواعد، افزونه‌های تطبیق و افزونه‌های دیده‌بان.

آرگومان‌های دستور arptables اقداماتی را که باید روی جدول تعریف‌شده با آرگومان -t انجام شوند مشخص می‌کنند. اگر از آرگومان -t برای نام بردن یک جدول استفاده نکنید، دستورات بر روی جدول پیش‌فرض filter اعمال می‌شوند. به استثنای دستور -Z، تنها یک دستور می‌تواند در هر بار در خط فرمان استفاده شود.

افزودن یک قاعده به انتهای زنجیره انتخاب‌شده.
حذف قاعده مشخص‌شده از زنجیره انتخاب‌شده. دو روش برای استفاده از این دستور وجود دارد. روش نخست با مشخص کردن بازه‌ای از شماره قواعد برای حذف با نحو start_nr[:end_nr] است. استفاده از اعداد منفی مجاز است؛ برای جزئیات بیشتر درباره استفاده از اعداد منفی، دستور -I را ببینید. روش دوم با مشخص کردن کامل قاعده همان‌گونه که در زمان افزودن مشخص شده بود صورت می‌گیرد.
درج قاعده مشخص‌شده در زنجیره انتخاب‌شده در شماره قاعده مشخص‌شده. اگر تعداد فعلی قواعد برابر N باشد، شماره مشخص‌شده می‌تواند بین -N و N+1 باشد. برای عدد مثبت i، هر دو شماره i و i-N-1 همان مکان را در زنجیره مشخص می‌کنند که قاعده باید در آن درج شود. عدد 0 مکانی پس از آخرین قاعده در زنجیره را مشخص می‌کند و بنابراین استفاده از این عدد معادل استفاده از دستور -A است.
جایگزینی قاعده مشخص‌شده در زنجیره انتخاب‌شده در شماره قاعده مشخص‌شده. اگر تعداد فعلی قواعد برابر N باشد، شماره مشخص‌شده می‌تواند بین 1 و N باشد. i مکانی در زنجیره را مشخص می‌کند که قاعده باید در آن جایگزین شود.
تنظیم سیاست (policy) برای زنجیره روی هدف داده‌شده. سیاست می‌تواند یکی از مقادیر ACCEPT، DROP یا RETURN باشد.
تخلیه (flush) زنجیره انتخاب‌شده. اگر هیچ زنجیره‌ای انتخاب نشود، تمام زنجیره‌ها تخلیه خواهند شد. با این حال، تخلیه زنجیره سیاست آن را تغییر نمی‌دهد.
صفر کردن شمارنده‌های زنجیره انتخاب‌شده. اگر هیچ زنجیره‌ای انتخاب نشود، تمام شمارنده‌ها صفر می‌شوند. دستور -Z می‌تواند همراه با دستور -L استفاده شود. هنگامی که هر دو دستور -Z و -L به این صورت با هم استفاده شوند، شمارنده‌های قواعد پیش از صفر شدن روی صفحه چاپ می‌شوند.
فهرست کردن تمام قواعد موجود در زنجیره انتخاب‌شده. اگر هیچ زنجیره‌ای انتخاب نشود، تمام زنجیره‌ها فهرست می‌شوند.
ایجاد یک زنجیره جدید تعریف‌شده توسط کاربر با نام داده‌شده. تعداد زنجیره‌های تعریف‌شده توسط کاربر نامحدود است. نام زنجیره تعریف‌شده توسط کاربر حداکثر می‌تواند ۳۱ کاراکتر باشد.
حذف زنجیره مشخص‌شده تعریف‌شده توسط کاربر. نباید هیچ ارجاعی به زنجیره مشخص‌شده باقی مانده باشد، در غیر این صورت arptables از حذف آن خودداری خواهد کرد. اگر هیچ زنجیره‌ای مشخص نشود، تمام زنجیره‌های تعریف‌شده توسط کاربر که مورد ارجاع نیستند حذف خواهند شد.
تغییر نام زنجیره مشخص‌شده به نام جدید. علاوه بر تغییر نام یک زنجیره تعریف‌شده توسط کاربر، می‌توانید نام یک زنجیره استاندارد را نیز به نامی که با سلیقه شما سازگار است تغییر دهید. برای نمونه، اگر PREBRIDGING را به PREROUTING ترجیح می‌دهید، می‌توانید از دستور -E برای تغییر نام زنجیره PREROUTING استفاده کنید. اگر نام یکی از زنجیره‌های استاندارد arptables را تغییر دادید، لطفاً حتماً این موضوع را هنگام ارسال پرسش در فهرست‌های ایمیل arptables ذکر کنید. بهتر است در نوشته‌های خود از نام استاندارد استفاده کنید. تغییر نام یک زنجیره استاندارد arptables به این شکل، هیچ تأثیری بر ساختار یا عملکرد جدول هسته arptables نخواهد داشت.

نمایش نسخه برنامه فضای کاربری arptables.
ارائه توضیحی کوتاه از نحو دستور.
هدف (target) قاعده. این می‌تواند یکی از مقادیر زیر باشد: ACCEPT، DROP، CONTINUE، RETURN، یک افزونه هدف (به بخش افزونه‌های هدف (TARGET-EXTENSIONS) مراجعه کنید) یا نام یک زنجیره تعریف‌شده توسط کاربر.
این گزینه به مدیر سیستم امکان می‌دهد شمارنده‌های بسته و بایت یک قاعده را مقداردهی اولیه کند (در طول عملیات‌های INSERT، APPEND و REPLACE).

آرگومان‌های خط فرمان زیر یک مشخصه قاعده را تشکیل می‌دهند (همان‌گونه که در دستورات افزودن و حذف استفاده می‌شوند). قرار دادن گزینه «!» پیش از مشخصه، آزمون مربوط به آن مشخصه را معکوس می‌کند. به غیر از این مشخصات استاندارد قواعد، آرگومان‌های خط فرمان دیگری نیز وجود دارند که قابل توجه هستند.

مشخصه IP مبدأ.
مشخصه IP مقصد.
آدرس MAC مبدأ. هر دو ماسک و آدرس به صورت ۶ عدد در مبنای ۱۶ که با دونقطه از هم جدا شده‌اند نوشته می‌شوند.
آدرس MAC مقصد. هر دو ماسک و آدرس به صورت ۶ عدد در مبنای ۱۶ که با دونقطه از هم جدا شده‌اند نوشته می‌شوند.
رابطی که فریم از طریق آن دریافت می‌شود (برای زنجیره INPUT). فلگ --in-if یک نام مستعار برای این گزینه است.
رابطی که قرار است فریم از طریق آن ارسال شود (برای زنجیره OUTPUT). فلگ --out-if یک نام مستعار برای این گزینه است.
طول سخت‌افزار (تعداد بایت‌ها).
کد عملیات (۲ بایت). مقادیر موجود عبارتند از: 1 = Request 2 = Reply 3 = Request_Reverse 4 = Reply_Reverse 5 = DRARP_Request 6 = DRARP_Reply 7 = DRARP_Error 8 = InARP_Request 9 = ARP_NAK.
نوع سخت‌افزار (۲ بایت، در مبنای ۱۶). مقادیر موجود عبارتند از: 1 = Ethernet.
نوع پروتکل (۲ بایت). مقادیر موجود عبارتند از: 0x800 = IPv4.

افزونه‌های arptables در ابزار فضای کاربری از پیش کامپایل شده‌اند؛ بنابراین نیازی نیست که آن‌ها را صریحاً با گزینه -m مانند iptables بارگذاری کنید. با این حال، این افزونه‌ها با قابلیت‌هایی سر و کار دارند که توسط ماژول‌های مکمل هسته پشتیبانی می‌شوند.

--mangle-ip-s IP address
آدرس IP مبدأ را به مقدار داده‌شده تغییر می‌دهد (mangle می‌کند).
--mangle-ip-d IP address
آدرس IP مقصد را به مقدار داده‌شده تغییر می‌دهد.
--mangle-mac-s MAC address
آدرس MAC مبدأ را به مقدار داده‌شده تغییر می‌دهد.
--mangle-mac-d MAC address
آدرس MAC مقصد را به مقدار داده‌شده تغییر می‌دهد.
--mangle-target target
هدف عملیات mangle در ARP (یکی از مقادیر DROP، CONTINUE یا ACCEPT — پیش‌فرض ACCEPT است).

این ماژول به شما اجازه می‌دهد مقدار skb->priority را تنظیم کنید (و بدین ترتیب بسته را در یک کلاس CBQ مشخص طبقه‌بندی نمایید).

مقدار کلاس اصلی (major) و فرعی (minor) را تعیین می‌کند. مقادیر همواره در مبنای ۱۶ (هگزادسیمال) تفسیر می‌شوند، حتی اگر پیشوند 0x مشخص نشده باشد.

این ماژول به شما اجازه می‌دهد مقدار skb->mark را تنظیم کنید (و بدین ترتیب بسته را بر اساس علامت در u32 دسته‌بندی نمایید).

مقدار علامت (mark) را تنظیم می‌کند. مقادیر همواره در مبنای ۱۶ تفسیر می‌شوند، حتی اگر پیشوند 0x مشخص نشده باشد.
عملیات بیتی AND روی علامت با بیت‌های داده‌شده.
عملیات بیتی OR روی علامت با بیت‌های داده‌شده.

در این نسخه مبتنی بر nft از arptables، پشتیبانی از زنجیره FORWARD پیاده‌سازی نشده است. از آنجا که بسته‌های ARP تنها توسط پل‌های (bridge) لینوکس «هدایت» (forward) می‌شوند، همان نتیجه را می‌توان با استفاده از زنجیره FORWARD در ebtables به دست آورد.

مشاهده کنید: http://netfilter.org/mailinglists.html

xtables-nft(8)، iptables(8)، ebtables(8)، ip(8)

مشاهده کنید: https://wiki.nftables.org

March 2019