| IPTABLES(8) | iptables 1.8.11 | IPTABLES(8) |
نام (NAME)
iptables - ابزار مدیریت برای فیلتر کردن بستهها و NAT در IPv4
خلاصه دستور (SYNOPSIS)
iptables [-t table] {-A|-C|-D|-V} chain rule-specification
ip6tables [-t table] {-A|-C|-D|-V} chain rule-specification
iptables [-t table] -I chain [rulenum] rule-specification
iptables [-t table] -R chain rulenum rule-specification
iptables [-t table] -D chain rulenum
iptables [-t table] -S [chain [rulenum]]
iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]
iptables [-t table] -N chain
iptables [-t table] -X [chain]
iptables [-t table] -P chain policy
iptables [-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]
توضیحات (DESCRIPTION)
ابزارهای iptables و ip6tables برای راهاندازی، نگهداری و بازرسی جدولهای قواعد فیلتر کردن بستههای IPv4 و IPv6 در هسته لینوکس استفاده میشوند. چندین جدول مختلف را میتوان تعریف کرد. هر جدول شامل تعدادی زنجیره توکار (built-in) است و همچنین میتواند شامل زنجیرههای تعریفشده توسط کاربر باشد.
هر زنجیره فهرستی از قواعد است که میتوانند با مجموعهای از بستهها تطبیق یابند. هر قاعده مشخص میکند که با یک بسته منطبق چه باید کرد. به این عمل «هدف» (target) گفته میشود که میتواند یک پرش به یک زنجیره تعریفشده توسط کاربر در همان جدول باشد.
اهداف (TARGETS)
یک قاعده دیواره آتش، معیارها برای یک بسته و یک هدف را مشخص میکند. اگر بسته تطبیق پیدا نکند، قاعده بعدی در زنجیره بررسی میشود؛ اگر تطبیق پیدا کند، آنگاه قاعده بعدی توسط مقدار هدف مشخص میشود، که میتواند نام یک زنجیره تعریفشده توسط کاربر، یکی از اهداف شرح داده شده در iptables-extensions(8) یا یکی از مقادیر ویژه ACCEPT، DROP یا RETURN باشد.
مقدار ACCEPT به معنی عبور دادن بسته است.
مقدار DROP به معنی دور انداختن و نادیده گرفتن بسته است.
مقدار RETURN به معنی توقف پیمایش این زنجیره و ادامه از قاعده بعدی در زنجیره قبلی (فراخواننده) است. اگر به انتهای یک زنجیره توکار رسیده شود یا قاعدهای در یک زنجیره توکار با هدف RETURN تطبیق یابد، هدف مشخصشده توسط سیاست (policy) زنجیره، سرنوشت بسته را تعیین میکند.
جدولها (TABLES)
در حال حاضر پنج جدول مستقل وجود دارد (اینکه کدام جدولها در هر لحظه موجود باشند، به گزینههای پیکربندی هسته و ماژولهای بارگذاریشده بستگی دارد).
- -t, --able table
- این گزینه
جدول تطبیق
بستهای را
مشخص
میکند که
دستور باید
روی آن عمل
کند. اگر
هسته با
بارگذاری
خودکار
ماژولها
پیکربندی
شده باشد،
در صورتی که
ماژول
مناسب برای
آن جدول از
قبل
بارگذاری
نشده باشد،
تلاشی برای
بارگذاری
آن انجام
خواهد شد.
جدولها به شرح زیر هستند:
- filter:
- این جدول پیشفرض است (اگر هیچ گزینه -t داده نشود). این جدول شامل زنجیرههای توکار زیر است: INPUT (برای بستههایی که مقصد آنها سوکتهای محلی است)، FORWARD (برای بستههایی که از طریق سیستم مسیریابی میشوند)، و OUTPUT (برای بستههایی که بهصورت محلی تولید شدهاند).
- nat:
- این جدول هنگامی که با بستهای مواجه میشویم که یک اتصال جدید ایجاد میکند، بررسی میشود. این جدول شامل چهار زنجیره توکار است: PREROUTING (برای تغییر بستهها به محض ورود)، INPUT (برای تغییر بستههای با مقصد سوکتهای محلی)، OUTPUT (برای تغییر بستههای تولیدشده محلی پیش از مسیریابی)، و POSTROUTING (برای تغییر بستهها در آستانه خروج). پشتیبانی از NAT در IPv6 از هسته نسخه 3.7 در دسترس است.
- mangle:
- این جدول برای تغییر و دستکاری تخصصی بستهها به کار میرود. تا نسخه هسته 2.4.17 این جدول دارای دو زنجیره توکار بود: PREROUTING (برای تغییر بستههای ورودی پیش از مسیریابی) و OUTPUT (برای تغییر بستههای تولیدشده محلی پیش از مسیریابی). از نسخه هسته 2.4.18، سه زنجیره توکار دیگر نیز پشتیبانی میشوند: INPUT (برای بستههایی که به خود سیستم وارد میشوند)، FORWARD (برای تغییر بستههایی که از طریق سیستم مسیریابی میشوند)، و POSTROUTING (برای تغییر بستهها هنگامی که در حال خروج هستند).
- raw:
- این جدول عمدتاً برای پیکربندی معافیتها از ردیابی اتصال در ترکیب با هدف NOTRACK استفاده میشود. این جدول در قلابهای netfilter با اولویت بالاتری ثبت میشود و بنابراین پیش از ip_conntrack یا هر جدول IP دیگری فراخوانی میگردد. این جدول زنجیرههای توکار زیر را فراهم میکند: PREROUTING (برای بستههای دریافتی از طریق هر رابط شبکه) و OUTPUT (برای بستههای ایجادشده توسط فرآیندهای محلی).
- security:
- این جدول برای قواعد شبکهای کنترل دسترسی اجباری (MAC) استفاده میشود، مانند مواردی که با اهداف SECMARK و CONNSECMARK فعال میشوند. کنترل دسترسی اجباری توسط ماژولهای امنیتی لینوکس مانند SELinux پیادهسازی میشود. جدول security پس از جدول filter فراخوانی میشود و به هر قاعده کنترل دسترسی اختیاری (DAC) در جدول filter اجازه میدهد پیش از قواعد MAC اعمال شود. این جدول زنجیرههای توکار زیر را فراهم میکند: INPUT (برای بستههای ورودی به خود سیستم)، OUTPUT (برای تغییر بستههای تولیدشده محلی پیش از مسیریابی)، و FORWARD (برای تغییر بستههایی که از طریق سیستم مسیریابی میشوند).
گزینهها (OPTIONS)
گزینههایی که توسط iptables و ip6tables شناسایی میشوند را میتوان به چند گروه مختلف تقسیم کرد.
دستورات (COMMANDS)
این گزینهها عملیات مورد نظر را برای اجرا مشخص میکنند. در خط فرمان فقط یکی از آنها را میتوان مشخص کرد، مگر اینکه در زیر خلاف آن ذکر شده باشد. برای نگارشهای طولانی نام دستورات و گزینهها، تنها کافی است به اندازهای حروف بنویسید که iptables بتواند آن را از سایر گزینهها تمیز دهد.
- -A, --ppend chain rule-specification
- افزودن یک یا چند قاعده به انتهای زنجیره انتخابشده. هنگامی که نامهای مبدا یا مقصد به بیش از یک آدرس تفکیک شوند، برای هر ترکیب آدرس ممکن، یک قاعده اضافه خواهد شد.
- -C, --heck chain rule-specification
- بررسی اینکه آیا قاعدهای منطبق با مشخصات دادهشده در زنجیره انتخابشده وجود دارد یا خیر. این دستور از منطقی مشابه با -D برای یافتن یک مدخل منطبق استفاده میکند، اما پیکربندی موجود iptables را تغییر نمیدهد و از کد خروج خود برای نشان دادن موفقیت یا شکست استفاده میکند.
- -D, --elete chain rule-specification
- -D, --elete chain rulenum
- حذف یک یا چند قاعده از زنجیره انتخابشده. دو نگارش برای این دستور وجود دارد: قاعده میتواند به صورت یک شماره در زنجیره (با شروع از ۱ برای نخستین قاعده) یا به عنوان یک قاعده برای تطبیق مشخص شود.
- -I, --insert chain [rulenum] rule-specification
- درج یک یا چند قاعده در زنجیره انتخابشده در شماره قاعده دادهشده. بنابراین، اگر شماره قاعده ۱ باشد، قاعده یا قواعد در ابتدای زنجیره درج میشوند. این حالت همچنین در صورتی که هیچ شماره قاعدهای مشخص نشود، رفتار پیشفرض است.
- -R, --eplace chain rulenum rule-specification
- جایگزین کردن یک قاعده در زنجیره انتخابشده. اگر نامهای مبدا یا مقصد به چندین آدرس تفکیک شوند، دستور ناموفق خواهد بود. شمارهگذاری قواعد از ۱ آغاز میشود.
- -L, --n]
- فهرست کردن
تمام قواعد
در زنجیره
انتخابشده.
اگر هیچ
زنجیرهای
انتخاب
نشود، تمام
زنجیرهها
فهرست
میشوند.
مانند هر
دستور دیگر
iptables، این
گزینه روی
جدول
مشخصشده
اعمال
میشود (filter
پیشفرض
است)،
بنابراین
قواعد NAT با
دستور زیر
فهرست
میشوند:
iptables -t nat -n -L
لطفاً توجه داشته باشید که این گزینه اغلب همراه با گزینه -n استفاده میشود تا از جستجوهای معکوس طولانی DNS جلوگیری شود. همچنین تعیین گزینه -Z (صفر کردن) همراه با آن مجاز است که در این صورت زنجیره(ها) بهصورت اتمیک فهرست شده و شمارندههای آنها صفر میشوند. خروجی دقیق تحت تأثیر سایر آرگومانهای دادهشده قرار میگیرد. نمایش قواعد دقیق سرکوب میشود تا زمانی که از دستور زیر استفاده کنید:iptables -L -v
یا iptables-save(8). - -S, --n]
- چاپ تمام قواعد در زنجیره انتخابشده. اگر زنجیرهای انتخاب نشود، تمام زنجیرهها مانند iptables-save چاپ میشوند. مانند هر دستور دیگر iptables، این گزینه روی جدول مشخصشده اعمال میشود (filter پیشفرض است).
- -F, --ush [chain]
- پاکسازی زنجیره انتخابشده (در صورت عدم تعیین زنجیره، تمام زنجیرههای جدول پاکسازی میشوند). این کار معادل حذف تکتک تمام قواعد است.
- -Z, --ro [chain [rulenum]]
- صفر کردن شمارندههای بستهها و بایتها در تمام زنجیرهها، یا فقط در زنجیره دادهشده، یا فقط برای قاعده مشخصشده در یک زنجیره. همچنین تعیین گزینه -L، -- (فهرست) مجاز است تا شمارندهها درست پیش از پاک شدن مشاهده شوند (به بالا مراجعه کنید).
- -N, --0w-chain chain
- ایجاد یک زنجیره جدید تعریفشده توسط کاربر با نام دادهشده. از قبل نباید هدفی با این نام وجود داشته باشد.
- -X, --elete-chain [chain]
- حذف زنجیره مشخصشده. نباید هیچ ارجاعی به این زنجیره وجود داشته باشد. در صورت وجود ارجاع، باید قواعد ارجاعدهنده را پیش از حذف زنجیره، حذف یا جایگزین کنید. زنجیره باید خالی باشد، یعنی هیچ قاعدهای نداشته باشد. اگر هیچ آرگومانی داده نشود، تمام زنجیرههای خالی موجود در جدول حذف خواهند شد. زنجیرههای توکار خالی را فقط میتوان با iptables-nft حذف کرد.
- -P, --olicy
chain target - تنظیم سیاست (policy) برای زنجیره توکار (غیرتعریفشده توسط کاربر) روی هدف دادهشده. هدف سیاست باید یا ACCEPT یا DROP باشد.
- -E, --ename-chain old-chain new-chain
- تغییر نام زنجیره مشخصشده توسط کاربر به نام جدید ارائه شده. این تغییر صرفاً ظاهری است و هیچ تأثیری بر ساختار جدول ندارد.
- -h
- راهنما. نمایش توضیحی (در حال حاضر بسیار کوتاه) از نحو دستور.
پارامترها (PARAMETERS)
پارامترهای زیر مشخصات یک قاعده را تشکیل میدهند (همانطور که در دستورات افزودن، حذف، درج، جایگزینی و الحاق استفاده میشوند).
- -4, --ipv4
- این گزینه در iptables و iptables-restore هیچ تأثیری ندارد. اگر قاعدهای با استفاده از گزینه -4 تنها و تنها با ip6tables-restore درج شود، بیصدا نادیده گرفته میشود. هرگونه استفاده دیگر منجر به خطا خواهد شد. این گزینه اجازه میدهد قواعد IPv4 و IPv6 درون یک فایل قاعده منفرد قرار گیرند تا هم با iptables-restore و هم با ip6tables-restore قابل استفاده باشند.
- -6, --ipv6
- اگر قاعدهای با استفاده از گزینه -6 تنها و تنها با iptables-restore درج شود، بیصدا نادیده گرفته میشود. هرگونه استفاده دیگر منجر به خطا خواهد شد. این گزینه اجازه میدهد قواعد IPv4 و IPv6 درون یک فایل قاعده منفرد قرار گیرند تا هم با iptables-restore و هم با ip6tables-restore قابل استفاده باشند. این گزینه در ip6tables و ip6tables-restore هیچ تأثیری ندارد.
- [!] -p, --rotocol
protocol - پروتکل قاعده یا بستهای که باید بررسی شود. پروتکل مشخصشده میتواند یکی از موارد tcp، udp، udplite، icmp، icmpv6، esp، ah، sctp، mh یا کلمه کلیدی ویژه all باشد، یا میتواند یک مقدار عددی باشد که نشاندهنده یکی از این پروتکلها یا پروتکلی دیگر است. نام پروتکل از فایل /etc/protocols نیز مجاز است. آرگومان "!" قبل از پروتکل، آزمون را معکوس میکند. عدد صفر معادل all است. مقدار all با همه پروتکلها تطبیق مییابد و در صورت حذف این گزینه، به عنوان پیشفرض در نظر گرفته میشود. توجه داشته باشید که در ip6tables، هدرهای توسعه IPv6 به جز esp مجاز نیستند. گزینههای esp و ipv6-nonext را میتوان از نسخه هسته 2.6.11 یا بالاتر استفاده کرد. عدد صفر معادل all است، به این معنی که نمیتوانید مستقیماً مقدار 0 را در فیلد پروتکل آزمایش کنید. برای تطبیق روی هدر HBH، حتی اگر آخرین هدر باشد، نمیتوانید از -p 0 استفاده کنید، بلکه همیشه نیاز به -m hbh دارید.
- [!] -s, --urce address[/mask][,...]
- مشخصات مبدأ. address میتواند یک نام شبکه، یک نام میزبان، یک آدرس IP شبکه (همراه با /mask)، یا یک آدرس IP ساده باشد. نامهای میزبان فقط یکبار، پیش از ارسال قاعده به هسته تفکیک خواهند شد. لطفاً توجه داشته باشید که تعیین هر نامی که با یک پرسوجوی از راه دور مانند DNS تفکیک شود، ایده بسیار بدی است. پارامتر mask میتواند یک ماسک شبکه ipv4 (برای iptables) یا یک عدد ساده باشد که تعداد ۱ها را در سمت چپ ماسک شبکه مشخص میکند. بنابراین، ماسک iptables برابر با 24 معادل 255.255.255.0 است. آرگومان "!" قبل از مشخصات آدرس، مفهوم آدرس را معکوس میکند. فلگ --c نام مستعاری برای این گزینه است. چندین آدرس را میتوان مشخص کرد، اما این کار به چندین قاعده گسترش مییابد (هنگام افزودن با -A)، یا باعث حذف چندین قاعده خواهد شد (با -D).
- [!] -d, --estination address[/mask][,...]
- مشخصات مقصد. برای توضیحات دقیق در مورد نحو، به توضیحات فلگ -s (مبدأ) مراجعه کنید. فلگ --st نام مستعاری برای این گزینه است.
- -m, --tch match
- یک تطبیق را برای استفاده مشخص میکند، یعنی یک ماژول الحاقی که یک ویژگی خاص را آزمایش میکند. مجموعه تطبیقها شرایطی را تشکیل میدهند که تحت آن یک هدف فراخوانی میشود. تطبیقها از اول تا آخر همانطور که در خط فرمان مشخص شدهاند ارزیابی میشوند و به صورت اتصال کوتاه (short-circuit) عمل میکنند؛ یعنی اگر یک افزونه نتیجه نادرست (false) بدهد، ارزیابی متوقف خواهد شد.
- -j, --jump target
- هدف قاعده را مشخص میکند؛ یعنی در صورتی که بسته با قاعده تطبیق یابد چه کاری انجام شود. هدف میتواند یک زنجیره تعریفشده توسط کاربر (به غیر از زنجیرهای که این قاعده در آن قرار دارد)، یکی از اهداف توکار ویژه باشد که فوراً سرنوشت بسته را تعیین میکنند، یا یک افزونه باشد (به بخش افزونههای تطبیق و هدف (MATCH AND TARGET EXTENSIONS) در زیر مراجعه کنید). اگر این گزینه در یک قاعده حذف شود (و از -g استفاده نشود)، تطبیق با قاعده تأثیری بر سرنوشت بسته نخواهد داشت، اما شمارندههای روی قاعده افزایش مییابند.
- -g, --to chain
- مشخص میکند که پردازش باید در یک زنجیره تعیینشده توسط کاربر ادامه یابد. بر خلاف گزینه --jump، مقدار RETURN پردازش را در این زنجیره ادامه نمیدهد، بلکه در زنجیرهای که ما را از طریق --jump فراخوانی کرده بود ادامه خواهد داد.
- [!] -i, --in-interface name
- نام رابطی که بسته از طریق آن دریافت شده است (فقط برای بستههایی که وارد زنجیرههای INPUT، FORWARD و PREROUTING میشوند). وقتی آرگومان "!" قبل از نام رابط استفاده شود، مفهوم معکوس میشود. اگر نام رابط با یک "+" ختم شود، هر رابطی که با این نام شروع شود تطبیق داده خواهد شد. اگر این گزینه حذف شود، هر نام رابطی تطبیق مییابد.
- [!] -o, --
- نام رابطی که قرار است بسته از طریق آن ارسال شود (برای بستههایی که وارد زنجیرههای FORWARD، OUTPUT و POSTROUTING میشوند). وقتی آرگومان "!" قبل از نام رابط استفاده شود، مفهوم معکوس میشود. اگر نام رابط با یک "+" ختم شود، هر رابطی که با این نام شروع شود تطبیق داده خواهد شد. اگر این گزینه حذف شود، هر نام رابطی تطبیق مییابد.
- [!] -f, --agment
- این بدان معنی است که قاعده فقط به قطعات دوم و بعدی IPv4 بستههای قطعهقطعهشده (fragmented) اشاره دارد. از آنجا که هیچ راهی برای تشخیص پورتهای مبدا یا مقصد چنین بستهای (یا نوع ICMP) وجود ندارد، چنین بستهای با هیچ قاعدهای که آنها را مشخص کرده باشد تطبیق نخواهد یافت. وقتی آرگومان "!" قبل از فلگ "-f" قرار میگیرد، قاعده فقط با قطعات ابتدایی یا بستههای قطعهقطعهنشده تطبیق مییابد. این گزینه مختص IPv4 است و در ip6tables در دسترس نیست.
- -c, --t-counters packets bytes
- این گزینه به مدیر سیستم امکان میدهد شمارندههای بسته و بایت یک قاعده را مقداردهی اولیه کند (در طول عملیاتهای INSERT، APPEND و REPLACE).
سایر گزینهها (OTHER OPTIONS)
گزینههای اضافی زیر را میتوان مشخص کرد:
- -v, --
- خروجی با جزئیات کامل. این گزینه باعث میشود دستور فهرست، نام رابط، گزینههای قاعده (در صورت وجود) و ماسکهای TOS را نمایش دهد. شمارندههای بسته و بایت نیز با پسوندهای 'K'، 'M' یا 'G' به ترتیب برای ضریبهای ۱٬۰۰۰، ۱٬۰۰۰٬۰۰۰ و ۱٬۰۰۰٬۰۰۰٬۰۰۰ فهرست میشوند (اما برای تغییر این حالت به فلگ -x مراجعه کنید). برای الحاق، درج، حذف و جایگزینی، این گزینه باعث میشود اطلاعات با جزئیات در مورد قاعده یا قواعد چاپ شود. گزینه -v میتواند چندین بار مشخص شود تا عبارات اشکالزدایی با جزئیات بیشتری نمایش یابند: اگر دو بار مشخص شود، iptables-legacy اطلاعات جدول و مدخلها را در libiptc دامپ میکند و iptables-nft قواعد را در قالب نمایش netlink (کد ماشین مجازی) دامپ مینماید. اگر سه بار مشخص شود، iptables-nft همچنین هر پیام netlink ارسالشده به هسته را نیز دامپ خواهد کرد.
- -V, --
- نمایش نسخه برنامه و API هسته مورد استفاده.
- -w, --288
- انتظار برای قفل xtables. برای جلوگیری از اجرای همزمان چندین نمونه از برنامه، تلاشی برای دریافت یک قفل انحصاری هنگام راهاندازی انجام خواهد شد. به طور پیشفرض، اگر قفل به دست نیاید برنامه خارج میشود. این گزینه باعث میشود برنامه تا زمان دریافت قفل انحصاری (برای همیشه یا به مدت مشخصشده به seconds) منتظر بماند.
- -n, --0meric
- خروجی عددی. آدرسهای IP و شماره پورتها با فرمت عددی چاپ خواهند شد. به طور پیشفرض، برنامه تلاش میکند آنها را به صورت نامهای میزبان، نامهای شبکه یا سرویسها (در صورت امکان) نمایش دهد.
- -x, --\xact
- گسترش اعداد. نمایش مقدار دقیق شمارندههای بسته و بایت، به جای نمایش عدد گرد شده با K (ضریبهای ۱۰۰۰)، M (ضریبهای ۱۰۰۰K) یا G (ضریبهای ۱۰۰۰M). این گزینه فقط برای دستور -L کاربرد دارد.
- --
- هنگام فهرست کردن قواعد، شماره خطوط به ابتدای هر قاعده مطابق با موقعیت آن قاعده در زنجیره اضافه میشود.
- --dprobe=command
- هنگام افزودن یا درج قواعد در یک زنجیره، از command برای بارگذاری ماژولهای لازم (اهداف، افزونههای تطبیق و غیره) استفاده میکند.
فایل قفل (LOCK FILE)
برنامه iptables از فایل /run/xtables.lock برای ایجاد یک قفل انحصاری هنگام راهاندازی استفاده میکند.
متغیر محیطی XTABLES_LOCKFILE میتواند برای لغو و تغییر این تنظیم پیشفرض استفاده شود.
افزونههای تطبیق و هدف (MATCH AND TARGET EXTENSIONS)
ابزار iptables میتواند از ماژولهای توسعهیافته تطبیق بسته و هدف استفاده کند. فهرستی از این ماژولها در صفحه راهنمای iptables-extensions(8) موجود است.
عیبیابی (DIAGNOSTICS)
پیامهای خطای گوناگون در خروجی خطای استاندارد چاپ میشوند. کد خروج برای عملکرد صحیح 0 است. خطاهایی که ناشی از پارامترهای نامعتبر یا نادرست خط فرمان به نظر میرسند، باعث کد خروج 2 میشوند. خطاهایی که نشاندهنده ناسازگاری بین هسته و فضای کاربری هستند، منجر به کد خروج 3 میشوند. خطاهایی که نشاندهنده مشکل منابع هستند، مانند قفل بودن منبع، شکست در تخصیص حافظه یا پیامهای خطای هسته، باعث کد خروج 4 میشوند. در نهایت، سایر خطاها باعث تولید کد خروج 1 میشوند.
اشکالات (BUGS)
اشکالات؟ این دیگر چیست؟ ;-) خب، شاید مایل باشید نگاهی به https://bugzilla.netfilter.org بیندازید. برنامه iptables اگر متوجه شود که به عنوان یک برنامه setuid-to-root فراخوانی شده است، بلافاصله با کد خطای 111 خارج خواهد شد. برنامه iptables را نمیتوان به طور امن به این شیوه استفاده کرد زیرا به کتابخانههای اشتراکی (تطبیقها، اهداف) بارگذاریشده در زمان اجرا اعتماد میکند، و مسیر جستجوی آنها میتواند با متغیرهای محیطی تعیین شود.
سازگاری با IPCHAINS (COMPATIBILITY WITH IPCHAINS)
این iptables بسیار شبیه به ipchains اثر Rusty Russell است. تفاوت اصلی این است که زنجیرههای INPUT و OUTPUT تنها به ترتیب برای بستههایی پیمایش میشوند که به میزبان محلی وارد شده و از میزبان محلی سرچشمه میگیرند. بنابراین هر بسته تنها از یکی از سه زنجیره عبور میکند (به جز ترافیک loopback که شامل هر دو زنجیره INPUT و OUTPUT میشود)؛ در گذشته یک بسته هدایتشده (forwarded) از هر سه زنجیره عبور میکرد.
تفاوت اصلی دیگر این است که -i به رابط ورودی اشاره دارد؛ -o به رابط خروجی اشاره میکند، و هر دو برای بستههای ورودی به زنجیره FORWARD در دسترس هستند.
اشکال مختلف NAT تفکیک شدهاند؛ iptables هنگام استفاده از جدول پیشفرض 'filter' همراه با ماژولهای الحاقی اختیاری، یک فیلتر بسته خالص است. این کار باید از بسیاری از سردرگمیها در مورد ترکیب پوششدهی IP (masquerading) و فیلتر بستهها که پیشتر دیده میشد جلوگیری کند. بنابراین گزینههای زیر به گونه متفاوتی اداره میشوند:
-j MASQ -M -S -M -Lتغییرات متعدد دیگری نیز در iptables وجود دارد.
همچنین ببینید (SEE ALSO)
iptables-apply(8), iptables-save(8), iptables-restore(8), iptables-extensions(8),
سند packet-filtering-HOWTO
جزئیات
استفاده از
iptables را برای
فیلتر کردن
بستهها
شرح
میدهد،
سند NAT-HOWTO
جزئیات NAT را
شرح
میدهد،
سند netfilter-extensions-HOWTO
جزئیات
افزونههایی
را شرح
میدهد که
در توزیع
استاندارد
نیستند، و
سند netfilter-hacking-HOWTO
سازوکار
داخلی
نتفیلتر
را شرح
میدهد.
ببینید:
https://www.netfilter.org.
نویسندگان (AUTHORS)
برنامه iptables در ابتدا توسط Rusty Russell و با مشورتهای اولیه Michael Neuling نوشته شد.
Marc Boucher با تلاش برای ایجاد چارچوب انتخاب بسته عمومی در iptables، باعث شد Rusty توسعه ipnatctl را رها کند؛ سپس او جدول mangle، تطبیق مالک (owner match) و ابزارهای mark را نوشت و در همه بخشها کارهای جالب انجام داد.
James Morris هدف TOS و تطبیق tos را نوشت.
Jozsef Kadlecsik هدف REJECT را نوشت.
Harald Welte هدفهای ULOG و NFQUEUE، کتابخانه جدید libiptc، و همچنین تطبیقها و اهداف TTL، DSCP و ECN را نوشت.
تیم هسته Netfilter عبارتند از: Jozsef Kadlecsik، Pablo Neira Ayuso، Eric Leblond، Florian Westphal و Arturo Borrero Gonzalez. اعضای سابق تیم هسته عبارتند از: Marc Boucher، Martin Josefsson، Yasuyuki Kozakai، James Morris، Harald Welte و Rusty Russell.
صفحه راهنما در ابتدا توسط Herve Eychenne <rv@wallfire.org> نوشته شده است.
نسخه (VERSION)
این صفحه راهنما برای iptables/ip6tables 1.8.11 کاربرد دارد.
| iptables 1.8.11 |