iptables/ip6tables — أداة إدارة لتصفية حزم IPv4/IPv6 وNAT
ملخص
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]
وصف
تُستخدم Iptables و ip6tables لإعداد وصيانة وفحص جداول قواعد تصفية حزم IPv4 و IPv6 في نواة Linux. يمكن تعريف عدة جداول مختلفة. يحتوي كل جدول على عدد من السلاسل المضمنة وقد يحتوي أيضًا على سلاسل معرفة من قبل المستخدم.
كل سلسلة عبارة عن قائمة بالقواعد التي يمكنها مطابقة مجموعة من الحزم. تحدد كل قاعدة ما يجب القيام به مع الحزمة التي تطابق. يسمى هذا "هدفًا"، والذي يمكن أن يكون انتقالًا إلى سلسلة معرفة من قبل المستخدم في نفس الجدول.
الأهداف
تحدد قاعدة جدار الحماية معايير للحزمة وهدفًا. إذا لم تتطابق الحزمة، يتم فحص القاعدة التالية في السلسلة؛ إذا تطابقت، فسيتم تحديد القاعدة التالية بواسطة قيمة الهدف، والتي يمكن أن تكون اسم سلسلة معرفة من قبل المستخدم، أو أحد الأهداف الموضحة في iptables-extensions (8)، أو أحد القيم الخاصة ACCEPT أو DROP أو RETURN.
ACCEPT يعني السماح بمرور الحزمة. DROP يعني إسقاط الحزمة. RETURN يعني إيقاف عبور هذه السلسلة والعودة إلى القاعدة التالية في السلسلة السابقة (المتصلة). إذا تم الوصول إلى نهاية سلسلة مضمنة أو تمت مطابقة قاعدة في سلسلة مضمنة ذات هدف RETURN، فإن الهدف المحدد بواسطة سياسة السلسلة يحدد مصير الحزمة.
الجداول
هناك حاليًا خمسة جداول مستقلة (الجداول الموجودة في أي وقت تعتمد على خيارات تكوين النواة والوحدات الموجودة).
-t, --table table
يحدد هذا الخيار جدول مطابقة الحزم الذي يجب أن يعمل عليه الأمر. إذا تم تكوين النواة مع التحميل التلقائي للوحدات، فسيتم إجراء محاولة لتحميل الوحدة المناسبة لهذا الجدول إذا لم تكن موجودة بالفعل.
الجداول هي كما يلي:
filter:
هذا هو الجدول الافتراضي (إذا لم يتم تمرير خيار -t). يحتوي على السلاسل المضمنة
INPUT (للرسائل الموجهة إلى المنافذ المحلية) و FORWARD (للرسائل التي يتم توجيهها عبر الجهاز) و OUTPUT (للرسائل التي يتم إنشاؤها محليًا).
nat:
يتم استشارة هذا الجدول عندما يتم العثور على حزمة تنشئ اتصالاً جديدًا. يتكون من أربع سلاسل مدمجة: PREROUTING (لتعديل الحزم بمجرد وصولها) و INPUT (لتعديل الحزم الموجهة إلى المنافذ المحلية) و OUTPUT (لتعديل الحزم التي يتم إنشاؤها محليًا قبل التوجيه) و POSTROUTING (لتعديل الحزم قبل خروجها). يتوفر دعم IPv6 NAT منذ نواة 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. يتم تنفيذ التحكم في الوصول الإلزامي بواسطة وحدات أمان Linux مثل SELinux. يتم استدعاء جدول الأمان بعد جدول التصفية، مما يسمح لأي قواعد للتحكم في الوصول التقديري (DAC) في جدول التصفية بالعمل قبل قواعد MAC. يوفر هذا الجدول السلاسل المدمجة التالية: INPUT (للحزم القادمة إلى الجهاز نفسه) و OUTPUT (لتعديل الحزم التي يتم إنشاؤها محليًا قبل التوجيه) و FORWARD (لتعديل الحزم التي يتم توجيهها عبر الجهاز).
الخيارات
يمكن تقسيم الخيارات التي تتعرف عليها iptables و ip6tables إلى عدة مجموعات مختلفة.
أوامر
تحدد هذه الخيارات الإجراء المطلوب تنفيذه. يمكن تحديد واحد فقط منها في سطر الأوامر ما لم يتم ذكر خلاف ذلك أدناه. للإصدارات الطويلة من أسماء الأوامر والخيارات، تحتاج إلى استخدام عدد كافٍ من الأحرف لضمان أن iptables يمكنها التمييز بينها وبين جميع الخيارات الأخرى.
-A, --append chain rule-specification
إلحاق واحد أو أكثر من القواعد في نهاية السلسلة المحددة. عندما تحل الأسماء المصدر و/أو الوجهة إلى أكثر من عنوان واحد، سيتم إضافة قاعدة لكل مجموعة ممكنة من العناوين.
-C, --check chain rule-specification
تحقق مما إذا كانت القاعدة التي تطابق المواصفات موجودة في السلسلة المحددة. يستخدم هذا الأمر نفس المنطق المستخدم في -D للعثور على إدخال مطابق، ولكنه لا يغير تكوين iptables الموجود ويستخدم رمز الخروج الخاص به للإشارة إلى النجاح أو الفشل.
-D، --delete chain rule-specification
-D، --delete chain rulenum
احذف قاعدة أو أكثر من السلسلة المحددة. هناك نسختان من هذا الأمر: يمكن تحديد القاعدة عن طريق رقمها في السلسلة (بدءًا من 1 للقاعدة الأولى) أو عن طريق قاعدة مطابقة.
-I، --insert chain [rulenum] rule-specification
أدخل قاعدة أو أكثر في السلسلة المحددة كقاعدة بالرقم المحدد. لذلك، إذا كان رقم القاعدة هو 1، فسيتم إدراج القاعدة أو القواعد في بداية السلسلة. هذا هو أيضًا الإعداد الافتراضي إذا لم يتم تحديد رقم قاعدة.
-R، --replace chain rulenum rule-specification
استبدل قاعدة في السلسلة المحددة. إذا كانت أسماء المصدر و/أو الوجهة تحل إلى عناوين متعددة، فسيفشل الأمر. القواعد مرقمة بدءًا من 1.
-L، --list [chain]
اعرض جميع القواعد في السلسلة المحددة. إذا لم يتم تحديد أي سلسلة، فسيتم سرد جميع السلاسل. مثل أي أمر iptables آخر، فإنه ينطبق على الجدول المحدد (filter هو الافتراضي)، لذلك يتم سرد قواعد NAT عن طريق iptables -t nat -n -L يرجى ملاحظة أنه غالبًا ما يتم استخدامه مع الخيار -n، لتجنب عمليات البحث الطويلة عن DNS العكسي. من القانوني تحديد الخيار -Z (صفر) أيضًا، وفي هذه الحالة سيتم سرد السلاسل ومسحها بشكل ذري. يتأثر الإخراج الدقيق بالحجج الأخرى المقدمة. يتم قمع القواعد الدقيقة حتى تستخدم iptables -L -v أو iptables-save(8).
-S، --list-rules [chain]
اطبع جميع القواعد في السلسلة المحددة. إذا لم يتم تحديد أي سلسلة، فسيتم طباعة جميع السلاسل مثل iptables-save. مثل أي أمر iptables آخر، فإنه ينطبق على الجدول المحدد (filter هو الافتراضي).
-F، --flush [chain]
امسح السلسلة المحددة (جميع السلاسل في الجدول إذا لم يتم تحديد أي منها). هذا يعادل حذف جميع القواعد واحدة تلو الأخرى.
-Z، --zero [chain [rulenum]]
قم بتهيئة عدادات الحزم والبايت في جميع السلاسل، أو السلسلة المحددة فقط، أو القاعدة المحددة فقط في سلسلة. من القانوني تحديد الخيار -L، --list (قائمة) أيضًا، لرؤية العدادات مباشرة قبل مسحها. (انظر أعلاه).
-N، --new-chain chain
أنشئ سلسلة مستخدمة جديدة بالاسم المحدد. يجب ألا يكون هناك هدف بهذا الاسم بالفعل.
-X، --delete-chain [chain]
احذف السلسلة المحددة. يجب ألا تكون هناك أي مراجع إلى السلسلة. إذا كانت هناك، فيجب حذف أو استبدال القواعد التي تشير إليها قبل حذف السلسلة. يجب أن تكون السلسلة فارغة، أي لا تحتوي على أي قواعد. إذا لم يتم إعطاء أي وسيطة، فسيؤدي ذلك إلى حذف جميع السلاسل الفارغة في الجدول. لا يمكن حذف سلاسل مدمجة فارغة إلا باستخدام iptables-nft.
-P، --policy chain target
قم بتعيين السياسة للسلسلة المدمجة (غير المعرفة من قبل المستخدم) إلى الهدف المحدد. يجب أن يكون هدف السياسة إما ACCEPT أو DROP.
-E, --rename-chain old-chain new-chain
أعد تسمية السلسلة المحددة من قبل المستخدم إلى الاسم الذي يحدده المستخدم. هذا إجراء تجميلي ولا يؤثر على هيكل الجدول.
-h مساعدة. يوفر وصفًا موجزًا لبنية الأمر.
المعلمات
تتكون المعلمات التالية من مواصفات القاعدة (كما هو مستخدم في أوامر الإضافة والحذف والإدراج والاستبدال والإلحاق).
-4, --ipv4
ليس لهذا الخيار أي تأثير في iptables و iptables-restore. إذا تم إدراج قاعدة تستخدم الخيار -4 مع ip6tables-restore (وبالخيار -4 فقط)، فسيتم تجاهلها بصمت. أي استخدامات أخرى ستؤدي إلى ظهور خطأ. يسمح هذا الخيار بقواعد IPv4 و IPv6 في ملف قاعدة واحد للاستخدام مع كل من iptables-restore و ip6tables-restore.
-6, --ipv6
إذا تم إدراج قاعدة تستخدم الخيار -6 مع iptables-restore (وبالخيار -6 فقط)، فسيتم تجاهلها بصمت. أي استخدامات أخرى ستؤدي إلى ظهور خطأ. يسمح هذا الخيار بقواعد IPv4 و IPv6 في ملف قاعدة واحد للاستخدام مع كل من iptables-restore و ip6tables-restore. ليس لهذا الخيار أي تأثير في ip6tables و ip6tables-restore.
[!] -p, --protocol protocol
بروتوكول القاعدة أو الحزمة المراد فحصها. يمكن أن يكون البروتوكول المحدد واحدًا من tcp أو udp أو udplite أو icmp أو icmpv6 أو esp أو ah أو sctp أو mh أو الكلمة الأساسية الخاصة "all"، أو يمكن أن يكون قيمة رقمية، تمثل أحد هذه البروتوكولات أو بروتوكولًا مختلفًا. اسم البروتوكول من /etc/protocols مسموح به أيضًا. يقوم وسيط "!" قبل البروتوكول بعكس الاختبار. الرقم صفر يعادل الكل. "all" ستطابق جميع البروتوكولات وتعتبر الافتراضية عند حذف هذا الخيار. لاحظ أنه في ip6tables، لا يُسمح برؤوس تمديد IPv6 باستثناء esp. يمكن استخدام esp و ipv6-nonext مع إصدار Kernel 6.11 أو أحدث. الرقم صفر يعادل الكل، مما يعني أنه لا يمكنك اختبار حقل البروتوكول للقيمة 0 مباشرةً. لمطابقة رأس HBH، حتى لو كان آخر رأس، لا يمكنك استخدام -p 0، ولكن يجب عليك دائمًا استخدام -m hbh.
[!] -s, --source address[/mask][,...]
تحديد المصدر. يمكن أن يكون العنوان اسم شبكة أو اسم مضيف أو عنوان IP للشبكة (مع /mask) أو عنوان IP عادي. سيتم حل أسماء المضيف مرة واحدة فقط، قبل إرسال القاعدة إلى النواة. يرجى ملاحظة أن تحديد أي اسم ليتم حله باستخدام استعلام بعيد مثل DNS هو فكرة سيئة حقًا. يمكن أن يكون القناع قناع شبكة IPv4 (لـ iptables) أو رقم عادي، يحدد عدد الواحدات الموجودة على الجانب الأيسر من قناع الشبكة. وبالتالي، فإن قناع iptables بقيمة 24 يعادل 255.255.255.0. يقوم وسيط "!" قبل تحديد العنوان بعكس معنى العنوان. يعد العلم --src اسمًا مستعارًا لهذا الخيار. يمكن تحديد عناوين متعددة، ولكن سيؤدي ذلك إلى توسيعها إلى قواعد متعددة (عند الإضافة باستخدام -A)، أو سيؤدي ذلك إلى حذف قواعد متعددة (باستخدام -D).
[!] -d, --destination address[/mask][,...]
تحديد الوجهة. راجع وصف العلم -s (المصدر) للحصول على وصف مفصل لبنية الجملة. يعد العلم --dst اسمًا مستعارًا لهذا الخيار.
-m، --match مطابقة
يحدد المطابقة المراد استخدامها، أي وحدة امتداد تختبر خاصية معينة.
تشكل مجموعة المطابقات الشرط الذي بموجبه يتم استدعاء الهدف. يتم تقييم المطابقات من الأولى إلى الأخيرة كما هو محدد في سطر الأوامر وتعمل بطريقة "قصر الدائرة"، أي إذا أعطت إحدى الوحدات الناتجة قيمة خاطئة، فسيتوقف التقييم.
-j، --jump الهدف
يحدد هذا الهدف الخاص بالقاعدة؛ أي، ما الذي يجب فعله إذا تطابقت الحزمة.
يمكن أن يكون الهدف عبارة عن سلسلة معرفة من قبل المستخدم (بخلاف السلسلة التي توجد بها هذه القاعدة)، أو أحد الأهداف المضمنة الخاصة التي تقرر مصير الحزمة على الفور، أو وحدة امتداد (انظر "وحدات الامتداد الخاصة بالمطابقة والهدف" أدناه). إذا تم حذف هذا الخيار في قاعدة (ولم يتم استخدام -g)، فلن يكون لمطابقة القاعدة أي تأثير على مصير الحزمة، ولكن سيتم زيادة العدادات الموجودة على القاعدة.
-g، --goto السلسلة
يحدد هذا أن المعالجة يجب أن تستمر في سلسلة محددة من قبل المستخدم. على عكس خيار --jump، فإن RETURN لن يستمر في المعالجة في هذه السلسلة ولكن بدلاً من ذلك في السلسلة التي استدعتنا من خلال --jump.
[!] -i، --in-interface الاسم
اسم الواجهة التي تم استقبال الحزمة من خلالها (فقط للحزم التي تدخل سلاسل INPUT و FORWARD و PREROUTING). عندما يتم استخدام الوسيطة "!" قبل اسم الواجهة، يتم عكس المعنى. إذا انتهى اسم الواجهة بعلامة "+"، فستطابق أي واجهة تبدأ بهذا الاسم. إذا تم حذف هذا الخيار، فستطابق أي اسم واجهة.
[!] -o، --out-interface الاسم
اسم الواجهة التي سيتم إرسال الحزمة من خلالها (للحزم التي تدخل سلاسل FORWARD و OUTPUT و POSTROUTING). عندما يتم استخدام الوسيطة "!" قبل اسم الواجهة، يتم عكس المعنى. إذا انتهى اسم الواجهة بعلامة "+"، فستطابق أي واجهة تبدأ بهذا الاسم. إذا تم حذف هذا الخيار، فستطابق أي اسم واجهة.
[!] -f، --fragment
يعني هذا أن القاعدة تشير فقط إلى الأجزاء الثانية وما بعدها من حزم IPv4 المجزأة. نظرًا لعدم وجود طريقة لمعرفة المنفذ المصدر أو الوجهة لتلك الحزمة (أو نوع ICMP)، فلن تتطابق هذه الحزمة مع أي قواعد تحددها. عندما تسبق الوسيطة "!" العلامة "-f"، ستطابق القاعدة فقط الأجزاء الرئيسية أو الحزم غير المجزأة. هذا الخيار خاص بـ IPv4، ولا يتوفر في ip6tables.
-c، --set-counters الحزم البايتات
يتيح هذا الخيار للمسؤول تهيئة عدادات الحزم والبايت الخاصة بقاعدة (أثناء عمليات INSERT و APPEND و REPLACE).
خيارات إضافية
يمكن تحديد الخيارات الإضافية التالية:
-v، --verbose
إخراج مطول. يجعل هذا الخيار الأمر list يعرض اسم الواجهة وخيارات القاعدة (إن وجدت) وأقنعة TOS. يتم أيضًا سرد عدادات الحزم والبايت، مع اللاحقة 'K' أو 'M' أو 'G' لمضاعفات 1000 و 1,000,000 و 1,000,000,000 على التوالي (ولكن انظر علامة -x لتغيير ذلك). بالنسبة للإلحاق والإدراج والحذف والاستبدال، يتسبب هذا في طباعة معلومات مفصلة حول القاعدة أو القواعد. يمكن تحديد -v عدة مرات لإصدار بيانات تصحيح أخطاء أكثر تفصيلاً: عند تحديدها مرتين، ستقوم iptableslegacy بإخراج معلومات الجدول والإدخالات في مكتبة libiptc، وتقوم iptables-nft بإخراج القواعد في عرض netlink (رمز VM). عند تحديدها ثلاث مرات، ستقوم iptables-nft أيضًا بإخراج أي رسائل netlink يتم إرسالها إلى النواة.
-V, --version
يعرض إصدار البرنامج وواجهة برمجة تطبيقات النواة المستخدمة.
-w, --wait [ثانية]
انتظر قفل xtables. لمنع تشغيل مثيلات متعددة من البرنامج في وقت واحد، سيتم إجراء محاولة للحصول على قفل حصري عند بدء التشغيل. بشكل افتراضي، سينتهي البرنامج إذا لم يتمكن من الحصول على القفل. سيجعل هذا الخيار البرنامج ينتظر (إلى أجل غير مسمى أو لعدد اختياري من الثواني) حتى يمكن الحصول على القفل الحصري.
-n, --numeric
إخراج رقمي. سيتم طباعة عناوين IP وأرقام المنافذ بتنسيق رقمي. بشكل افتراضي، سيحاول البرنامج عرضها كاسم مضيف أو اسم شبكة أو خدمات (كلما كان ذلك ممكنًا).
-x, --exact
توسيع الأرقام. يعرض القيمة الدقيقة لعدادات الحزم والبايت، بدلاً من عرض العدد التقريبي فقط بالآلاف (مضاعفات 1000) أو الملايين (مضاعفات 1000 ألف) أو الجيجابايت (مضاعفات 1000 مليون). هذا الخيار ذو صلة فقط بأمر -L.
--line-numbers
عند سرد القواعد، أضف أرقامًا للأسطر في بداية كل قاعدة، تتوافق مع موقع القاعدة في السلسلة.
--modprobe=command
عند إضافة أو إدراج قواعد في سلسلة، استخدم الأمر لتحميل أي وحدات ضرورية (الأهداف، وإضافات المطابقة، إلخ).
ملف القفل
يستخدم iptables الملف /run/xtables.lock للحصول على قفل حصري عند بدء التشغيل.
يمكن استخدام متغير البيئة XTABLES_LOCKFILE لتجاوز الإعداد الافتراضي.
إضافات المطابقة والهدف
يمكن لـ iptables استخدام وحدات مطابقة ووجهات الحزم الموسعة. تتوفر قائمة بهذه الوحدات في صفحة دليل iptables-extensions(8).
تشخيص الأخطاء
يتم طباعة رسائل خطأ متنوعة إلى الخطأ القياسي. رمز الخروج هو 0 للتشغيل الصحيح. تتسبب الأخطاء التي يبدو أنها ناتجة عن معلمات سطر أوامر غير صالحة أو مسيئة في رمز خروج 2. تتسبب الأخطاء التي تشير إلى عدم توافق بين مساحة النواة ومساحة المستخدم في رمز خروج 3. تتسبب الأخطاء التي تشير إلى مشكلة في الموارد، مثل القفل المشغول أو فشل تخصيص الذاكرة أو رسائل الخطأ من النواة، في رمز خروج 4. أخيرًا، تتسبب الأخطاء الأخرى في رمز خروج 1.
الأخطاء
الأخطاء؟ ما هذا؟ ;-). ربما تريد إلقاء نظرة على https://bugzilla.netfilter.org/ سينتهي iptables على الفور برمز خطأ 111 إذا اكتشف أنه تم استدعاؤه كبرنامج setuid-to-root. لا يمكن استخدام iptables بأمان بهذه الطريقة لأنه يثق في المكتبات المشتركة (المطابقات، والأهداف) التي يتم تحميلها في وقت التشغيل، ويمكن تعيين مسار البحث باستخدام متغيرات البيئة.
التوافق مع IPCHAINS
تتشابه أداة iptables هذه مع أداة ipchains التي كتبها Rusty Russell. الاختلاف الرئيسي هو أن سلسلتي الأوامر INPUT و OUTPUT يتم عبورهما فقط للحزم القادمة إلى المضيف المحلي أو المنشأة من المضيف المحلي على التوالي. وبالتالي، تمر كل حزمة عبر إحدى السلاسل الثلاث (باستثناء حركة المرور في حلقة التكرار، والتي تتضمن كلًا من سلسلتي الأوامر INPUT و OUTPUT)؛ في السابق، كانت الحزمة المعاد توجيهها تمر عبر جميع السلاسل الثلاث.
الاختلاف الرئيسي الآخر هو أن الخيار -i يشير إلى واجهة الإدخال؛ والخيار -o يشير إلى واجهة الإخراج، وكلاهما متاحان للحزم التي تدخل سلسلة الأوامر FORWARD.
تم فصل الأشكال المختلفة من NAT؛ تعتبر iptables مرشحًا للحزم فقط عند استخدام جدول filter الافتراضي، مع وحدات ملحقة اختيارية. يجب أن يؤدي هذا إلى تجنب الكثير من الارتباك بشأن الجمع بين إخفاء عنوان IP وتصفية الحزم كما كان الحال في السابق. لذلك، يتم التعامل مع الخيارات التالية بشكل مختلف:
-j MASQ
-M -S
-M -L
هناك العديد من التغييرات الأخرى في iptables.
انظر أيضًا
iptables-apply(8)، iptables-save(8)، iptables-restore(8)، iptables-extensions(8)،
يوفر دليل التصفية للحزم [packet-filtering-HOWTO] تفاصيل حول استخدام iptables لتصفية الحزم، ويوفر دليل NAT [NAT-HOWTO] تفاصيل حول NAT، ويوفر دليل ملحقات netfilter [netfilter-extensions-HOWTO] تفاصيل حول الملحقات التي ليست في التوزيع القياسي، ويوفر دليل netfilter-hacking [netfilter-hacking-HOWTO] تفاصيل حول تفاصيل netfilter الداخلية. راجع https://www.netfilter.org/.
المؤلفون
كتب Rusty Russell أداة iptables في البداية، وذلك بالتشاور مع Michael Neuling.
أقنع Marc Boucher Rusty بالتخلي عن ipnatctl من خلال الضغط من أجل إطار عمل عام لاختيار الحزم في iptables، ثم كتب جدول "mangle"، ومطابقة "owner"، وأمر "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 صفحة الدليل الأصلية <_>.
الإصدار
تنطبق صفحة الدليل هذه على iptables/ip6tables 1.8.11.