Iptables
عبارات و اصطلاحات IP Tables

در ادامه این بخش، تعدادی از عبارات و اصطلاحاتی که بیشترین کاربرد را دارند و برای درک مطالب بعدی لازم هستند، شرح داده می‌شوند.
انطباق:
این کلمه با دو معنی مختلف به‌کار می‌رود. معنی اول: یک انطباق منفرد که به یک قانون می‌گوید که یک سرآیند باید محتوی چه اطلاعاتی باشد. مثلاً انطباق—source به ما می‌گوید که آدرس منبع باید یک میزبان خاص یا محدوده خاصی از شبکه باشد. هر قانون از یک یا چندین انطباق تشکیل شده‌است. معنی دوم: اگر کل یک قانون در مورد یک بسته صدق کند می‌گوییم بسته با قانون انطباق یافته‌است. چند نمونه از پرکاربردترین انطباق‌ها در ادامه آورده شده‌اند:
(--source (-s: یک آدرس IP مبدأ یا شبکه را انطباق می‌دهد.
 (--destination (-d: یک آدرس IP مقصد یا شبکه را انطباق می‌دهد.
 (--protocol (-p: روی یک IP انطباق انجام می‌دهد.
 (--in-interface (-i: یک رابط ورودی ایجاد می‌کند.
 interface: یک رابط خروجی ایجاد می‌کند.
 --state: روی مجموعه‌ای از حالات اتصال انطباق می‌دهد.
 --string: روی رشته‌ای از بایت‌های داده لایهٔ کاربردی، انطباق انجام می‌دهد.
قانون (Rule):
مجموعه‌ای از یک یا چندین انطباق به همراه یک هدف است که در اکثر پیاده‌سازی‌های IPTables، یک قانون مجموعه‌ای از چندین انطباق است. در بعضی از پیاده‌سازی‌ها می‌توانیم چندین هدف برای هر قانون داشته باشیم.
مجموعهٔ قوانین:
مجموعه‌ای از قوانین در پیاده‌سازی IPTables می‌باشد. مجموعهٔ قوانین در یک فایل پیکربندی نوشته می‌شوند.
پرش:
دستورالعمل JUMP مانند یک هدف است و دقیقاً مانند آن نوشته می‌شود. با این تفاوت که به جای نوشتن نام هدف، نام یک زنجیرهٔ دیگر نوشته می‌شود. اگر قانون انطباق داشت، بسته به زنجیرهٔ بعدی فرستاده می‌شود و در آن پردازش می‌شود.
Mangling:
دستکاری و تغییر فرم بسته را به اصطلاح Mangling می‌نامند. برای نمونه، هسته لینوکس می‌تواند فیلدهایی از بسته را دستکاری و تغییر دهد.
هدف:
به‌طور کلی هر قانون موجود در مجموعهٔ قوانین یک مجموعهٔ هدف دارد. اگر کل قانون به‌طور کامل انطباق پیدا کند، تعریف هدف مشخص می‌کند که باید با بسته چه کرد. مثلاً می‌گوید که باید آن را قبول، حذف یا آدرس IP آن را ترجمه کرد. یک قانون ممکن است پرش یا هدف داشته باشد یا نداشته باشد. در ادامه چند هدف پرکاربرد آورده شده است:
ACCEPT: به یک بسته اجازه می‌دهد که به راه خود ادامه دهد.
 DROP: یک بسته را حذف می‌کند و هیچ پردازش دیگری روی آن انجام نمی‌شود.
 LOG: یک بسته را در syslog ثبت می‌کند.
 REJECT: یک بسته را حذف می‌کند و هم‌زمان یک پاسخ مناسب، ارسال می‌کند.
 RETURN: باعث ادامه پردازش یک بسته در زنجیرهٔ فراخواننده می‌شود.
جدول (Table):
جداول مجموعه‌ای از زنجیرها هستند. زنجیرهایی را که در یک دسته قرار می‌گیرند، درون یک جدول تعریف می‌کنند. این طبقه‌بندی‌ها باعث سهولت کار کاربران و بالا رفتن سرعت می‌شوند. هر جدول هدف خاصی دارد و در IPTables، چهار جدول وجود دارد: جداول Filter, Nat, Raw و Mangle. حال به بررسی این جداول می‌پردازیم:
جدول Filter: تمام قوانین و زنجیرهایی که به نوعی کار حذف یا عبور بسته را انجام می‌دهند در این جدول قرار می‌گیرند. برای نمونه، قانون حذف بسته‌ها از آدرس ۹۲٫۴۰٫۱۰٫۰۵ در این جدول است. زنجیرهای Input, Forward و Output در این جدول قرار دارند.
جدول NAT: شامل تمام قوانین و زنجیرهایی است که کار ترجمه یا تغییر آدرس(IP بسته‌ها) را بر عهده دارند. برای نمونه، قانون تغییر آدرس ۲۳٫۱۰٫۱۰٫۹ به آدرس ۸۰٫۹۰٫۹۰٫۰۰ در این جدول قرار می‌گیرد. زنجیرهای Prerouting و postrouting در این جدول قرار دارند.
جدول Mangle: قانون‌ها و زنجیرهای پیشرفته مربوط به تغییر و دستکاری سرآیند(Header) بسته‌ها در این جدول طبقه‌بندی می‌شوند. تفاوت جدول NAT و Mangle در این است که در NAT فقط آدرس‌ها تغییر یا دستکاری می‌شوند، اما در Mangle فیلدهای دیگر سرآیند بسته‌ها دستکاری می‌شوند. زنجیرهای Prerouting, Input و Output در این جدول قرار دارند.
پیگیری اتصال:
یکی از مهم‌ترین ویژگی‌های Netfilter پیگیری اتصال است. پیگیری اتصال این امکان را به هسته می‌دهد که کلیه اتصال‌های شبکه یا جلسه‌ها را پیگیری کند و بدین‌وسیله کلیه بسته‌هایی که با هم یک اتصال را تشکیل می‌دهند، به هم مرتبط کند. NAT به این اطلاعات برای ترجمهٔ بسته‌های مرتبط به هم نیاز دارد و IPTables می‌تواند از این اطلاعات استفاده کند و مانند یک دیواره آتش حالت‌دار عمل کند. پیگیری اتصال، هر بسته را به حالت‌های مختلف به شرح زیر طبقه‌بندی می‌کند:
جدید: اولین بستهٔ یک اتصال جدید.
 برقرارشده: بسته‌ای که قسمتی از اتصالی است که وجود دارد.
 وابسته: بسته‌ای که یک اتصال جدید را شروع کرده‌است و این اتصال به یک اتصال موجود مرتبط است.
 نامعتبر: قسمتی از هیچ اتصال شناخته‌شده‌ای نیست.
 عدم ردیابی: حالت خاصی است که توسط مدیر به یک بسته نسبت داده می‌شود تا پیگیری اتصال را برای یک بسته خاص انجام ندهد.
زنجیره (Chain):
یک زنجیره یک مجموعهٔ قانون است که بر روی بسته‌هایی که زنجیره را می‌پیمایند، اعمال می‌شود. هر زنجیره یک هدف خاص دارد. هر جدول یک مجموعهٔ زنجیره توکار دارد اما کاربر نیز می‌تواند زنجیره‌هایی را تعریف کند.
شکل۱. ساختار IPTables
مهم‌ترین زنجیره‌های توکار عبارتند از INPUT, OUTPUT و FORWARD
INPUT: این زنجیره توسط بسته‌هایی پیمایش می‌شود که به شبکهٔ محلی وارد می‌شوند. البته بعد از این‌که در هسته عمل مسیریابی آن‌ها انجام شود.
 OUTPUT: برای بسته‌هایی است که در سیستم لینوکس تولید می‌شوند.
 FORWARD: وقتی دیواره آتش برای متصل‌کردن یک شبکه به شبکهٔ دیگر استفاده می‌شود، بسته‌ها باید در دیواره آتش مسیریابی شوند که در این مورد این زنجیره به‌کار می‌رود.
دو زنجیرهٔ دیگر عبارتند از PREROUTING و POSTROUTING که اصلاح سرآیند بسته‌ها را قبل و بعد از عمل مسیریابی توسط هسته، انجام می‌دهند.
Flow of network packets through Netfilter