Scroll to navigation

IPTABLES(8) iptables 1.8.13 IPTABLES(8)

الاسم

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 في نواة لينكس. يمكن تعريف عدة جداول مختلفة. يحتوي كل جدول على عدد من السلاسل المضمنة وقد يحتوي أيضًا على سلاسل معرفة من قبل المستخدم.

كل سلسلة هي قائمة من القواعد التي يمكنها مطابقة مجموعة من الحزم. تحدد كل قاعدة ما يجب فعله مع الحزمة المتطابقة. يُسمى هذا `هدفًا'، والذي قد يكون قفزة إلى سلسلة معرفة من قبل المستخدم في نفس الجدول.

الأهداف

تحدد قاعدة جدار الحماية معايير للحزمة وهدفًا. إذا لم تتطابق الحزمة، تُفحص القاعدة التالية في السلسلة؛ إذا تطابقت، تُحدد القاعدة التالية بقيمة الهدف، والتي يمكن أن تكون اسم سلسلة معرفة من قبل المستخدم، أو أحد الأهداف الموصوفة في iptables-extensions(8)، أو إحدى القيم الخاصة ACCEPT أو DROP أو RETURN.

ACCEPT تعني السماح للحزمة بالمرور. DROP تعني إسقاط الحزمة على الأرض. RETURN تعني التوقف عن اجتياز هذه السلسلة والاستئناف عند القاعدة التالية في السلسلة السابقة (المستدعية). إذا تم الوصول إلى نهاية سلسلة مدمجة أو تمت مطابقة قاعدة في سلسلة مدمجة مع الهدف RETURN، فإن الهدف المحدد بواسطة سياسة السلسلة يحدد مصير الحزمة.

الجداول

يوجد حالياً خمسة جداول مستقلة (أي الجداول موجودة في أي وقت يعتمد على خيارات تهيئة النواة والوحدات الموجودة).

يحدد هذا الخيار جدول مطابقة الحزم الذي يجب أن يعمل عليه الأمر. إذا تم تهيئة النواة مع تحميل الوحدة آلياً، فسيتم محاولة تحميل الوحدة المناسبة لذلك الجدول إذا لم تكن موجودة بالفعل.

الجداول هي كما يلي:

هذا هو الجدول المبدئي (إذا لم يتم تمرير خيار -t). يحتوي على السلاسل المدمجة INPUT (للحزم الموجهة إلى المقابس المحلية)، FORWARD (للحزم التي يتم توجيهها عبر الصندوق)، وOUTPUT (للحزم المولدة محلياً).
يتم استشارة هذا الجدول عند مواجهة حزمة تنشئ اتصالاً جديداً. يتكون من أربع سلاسل مدمجة: PREROUTING (لتعديل الحزم فور دخولها)، INPUT (لتعديل الحزم الموجهة إلى المقابس المحلية)، OUTPUT (لتعديل الحزم المولدة محلياً قبل التوجيه)، وPOSTROUTING (لتعديل الحزم عندما تكون على وشك الخروج). دعم NAT لـ IPv6 متاح منذ النواة 3.7.
يستخدم هذا الجدول لتعديل الحزم المتخصص. حتى النواة 2.4.17 كان يحتوي على سلسلتين مدمجتين: PREROUTING (لتعديل الحزم الواردة قبل التوجيه) وOUTPUT (لتعديل الحزم المولدة محلياً قبل التوجيه). منذ النواة 2.4.18، يتم دعم ثلاث سلاسل مدمجة أخرى: INPUT (للحزم القادمة إلى الصندوق نفسه)، FORWARD (لتعديل الحزم التي يتم توجيهها عبر الصندوق)، وPOSTROUTING (لتعديل الحزم عندما تكون على وشك الخروج).
يستخدم هذا الجدول بشكل رئيس لتكوين إعفاءات من تتبع الاتصال بالاقتران مع هدف NOTRACK. يسجل في خطافات netfilter بأولوية أعلى وبالتالي يتم استدعاؤه قبل ip_conntrack، أو أي جداول IP أخرى. يوفر السلاسل المدمجة التالية: PREROUTING (للحزم الواصلة عبر أي واجهة شبكة) وOUTPUT (للحزم المولدة بواسطة العمليات المحلية).
يستخدم هذا الجدول لقواعد التحكم الإلزامي بالوصول (MAC) للشبكات، مثل تلك الممكنة بواسطة أهداف SECMARK وCONNSECMARK. يتم تنفيذ التحكم الإلزامي بالوصول بواسطة وحدات أمان لينكس مثل SELinux. يتم استدعاء جدول الأمان بعد جدول التصفية، مما يسمح لأي قواعد تحكم اختياري بالوصول (DAC) في جدول التصفية بأن تصبح سارية المفعول قبل قواعد MAC. يوفر هذا الجدول السلاسل المدمجة التالية: INPUT (للحزم القادمة إلى الصندوق نفسه)، OUTPUT (لتعديل الحزم المولدة محلياً قبل التوجيه)، وFORWARD (لتعديل الحزم التي يتم توجيهها عبر الصندوق).

الخيارات

يمكن تقسيم الخيارات التي يتعرف عليها iptables وip6tables إلى عدة مجموعات مختلفة.

الأوامر

تحدد هذه الخيارات الإجراء المطلوب تنفيذه. يمكن تحديد واحد منها فقط في سطر الأوامر ما لم يُذكر خلاف ذلك أدناه. للإصدارات الطويلة من أسماء الأوامر والخيارات، تحتاج إلى استخدام عدد كافٍ من الأحرف لضمان أن iptables يمكنه تمييزه عن جميع الخيارات الأخرى.

إلحاق قاعدة واحدة أو أكثر بنهاية السلسلة المحددة. عندما يتم حل أسماء المصدر و/أو الوجهة إلى أكثر من عنوان، ستتم إضافة قاعدة لكل مجموعة عناوين محتملة.
التحقق من وجود قاعدة تطابق المواصفات في السلسلة المحددة. يستخدم هذا الأمر نفس منطق -D للعثور على إدخال مطابق، لكنه لا يغير تهيئة iptables الحالية ويستخدم رمز الخروج للإشارة إلى النجاح أو الفشل.
حذف قاعدة أو أكثر من السلسلة المحددة. يوجد إصداران لهذا الأمر: يمكن تحديد القاعدة كرقم في السلسلة (بدءًا من 1 للقاعدة الأولى) أو كقاعدة للمطابقة.
إدراج قاعدة أو أكثر في السلسلة المحددة كرقم القاعدة المعطى. لذا، إذا كان رقم القاعدة هو 1، تُدرج القاعدة أو القواعد في رأس السلسلة. هذا هو المبدئي أيضًا إذا لم يُحدد رقم قاعدة.
استبدال قاعدة في السلسلة المحددة. إذا تحللت أسماء المصدر و/أو الوجهة إلى عناوين متعددة، سيفشل الأمر. تُرقم القواعد بدءًا من 1.
سرد جميع القواعد في السلسلة المحددة. إذا لم تُحدد سلسلة، تُسرد جميع السلاسل. مثل كل أمر iptables آخر، ينطبق على الجدول المحدد (المرشح هو المبدئي)، لذا تُسرد قواعد NAT بواسطة

iptables -t nat -n -L
يُرجى ملاحظة أنه يُستخدم غالبًا مع الخيار -n، لتجنب عمليات بحث DNS عكسية طويلة. من القانوني أيضًا تحديد الخيار -Z (صفر)، وفي هذه الحالة تُسرد السلاسل وتُصفّر آليًا. يتأثر المخرجات الدقيقة بالوسائط الأخرى المعطاة. تُكبت القواعد الدقيقة حتى تستخدم

iptables -L -v
أو iptables-save(8).
طباعة جميع القواعد في السلسلة المحددة. إذا لم تُحدد سلسلة، تُطبع جميع السلاسل مثل iptables-save. مثل كل أمر iptables آخر، ينطبق على الجدول المحدد (المرشح هو المبدئي).
مسح السلسلة المحددة (جميع السلاسل في الجدول إذا لم يُعطَ أي منها). هذا يعادل حذف جميع القواعد واحدة تلو الأخرى.
تصفير عدادات الحزم والبايتات في جميع السلاسل، أو فقط السلسلة المعطاة، أو فقط القاعدة المعطاة في سلسلة. من القانوني تحديد الخيار -L، --list (قائمة) أيضًا، لرؤية العدادات فورًا قبل مسحها. (انظر أعلاه.)
إنشاء سلسلة جديدة معرفة من قبل المستخدم بالاسم المعطى. يجب ألا يكون هناك هدف بهذا الاسم موجودًا مسبقًا.
حذف السلسلة المحددة. يجب ألا تكون هناك مراجع للسلسلة. إذا كانت موجودة، يجب حذف أو استبدال القواعد المرجعية قبل حذف السلسلة. يجب أن تكون السلسلة فارغة، أي لا تحتوي على أي قواعد. إذا لم تُعطَ وسيطة، فسيتم حذف جميع السلاسل الفارغة في الجدول. لا يمكن حذف السلاسل المضمنة الفارغة إلا باستخدام iptables-nft.
تعيين السياسة للسلسلة المضمنة (غير المعرفة من قبل المستخدم) إلى الهدف المعطى. يجب أن يكون هدف السياسة إما ACCEPT أو DROP.
إعادة تسمية السلسلة المحددة من قبل المستخدم إلى الاسم المقدم من المستخدم. هذا تجميلي، وليس له تأثير على بنية الجدول.
مساعدة. تقديم وصف (مختصر جدًا حاليًا) لصيغة الأمر.

المعاملات

المعلمات التالية تشكل مواصفات قاعدة (كما تُستخدم في أوامر الإضافة، الحذف، الإدراج، الاستبدال، والإلحاق).

-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، --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، --source عنوان[/قناع][,...]
مواصفات المصدر. العنوان يمكن أن يكون اسم شبكة، اسم مضيف، عنوان IP شبكي (مع /قناع)، أو عنوان IP عادي. سيتم حل أسماء المضيفين مرة واحدة فقط، قبل إرسال القاعدة إلى النواة. يرجى ملاحظة أن تحديد أي اسم ليتم حله باستعلام بعيد مثل DNS فكرة سيئة جدًا. القناع يمكن أن يكون قناع شبكة ipv4 (لـ iptables) أو رقمًا عاديًا، يحدد عدد الآحاد في الجانب الأيسر من قناع الشبكة. وبالتالي، قناع iptables بقيمة 24 يعادل 255.255.255.0. وسيطة "!" قبل مواصفات العنوان تعكس معنى العنوان. العلامة --src هي اسم مستعار لهذا الخيار. يمكن تحديد عناوين متعددة، ولكن هذا سـ يتوسع إلى قواعد متعددة (عند الإضافة باستخدام -A)، أو سيؤدي إلى حذف قواعد متعددة (باستخدام -D).
[!] -d، --destination عنوان[/قناع][,...]
مواصفات الوجهة. انظر وصف العلامة -s (المصدر) للحصول على وصف مفصل للصيغة. العلامة --dst هي اسم مستعار لهذا الخيار.
يحدد مطابقة للاستخدام، أي وحدة توسع تختبر خاصية محددة. تشكل مجموعة المطابقات الشرط الذي يُستدعى بموجبه هدف. تُقيَّم المطابقات من الأول إلى الأخير كما هو محدد في سطر الأوامر وتعمل بطريقة الدارة القصيرة، أي إذا أسفر توسع عن قيمة خاطئة، سيتوقف التقييم.
يحدد هذا هدف القاعدة؛ أي ما يجب فعله إذا طابقت الحزمة القاعدة. يمكن أن يكون الهدف سلسلة معرفة من قبل المستخدم (غير السلسلة التي تحتوي هذه القاعدة)، أو أحد الأهداف المضمنة الخاصة التي تقرر مصير الحزمة فوراً، أو توسع (انظر MATCH AND TARGET EXTENSIONS أدناه). إذا تم حذف هذا الخيار في قاعدة (ولم يُستخدم -g)، فلن يكون لمطابقة القاعدة أي تأثير على مصير الحزمة، ولكن سيتم زيادة عدادات القاعدة.
يحدد هذا أن المعالجة يجب أن تستمر في سلسلة محددة من قبل المستخدم. على عكس خيار --jump، لن يستمر RETURN في المعالجة في هذه السلسلة بل في السلسلة التي استدعتنا عبر --jump.
[!] -i, --in-interface name
اسم واجهة تم استقبال حزمة عبرها (فقط للحزم الداخلة إلى سلاسل INPUT وFORWARD وPREROUTING). عند استخدام الوسيطة "!" قبل اسم الواجهة، ينعكس المعنى. إذا انتهى اسم الواجهة بـ "+"، فإن أي واجهة تبدأ بهذا الاسم ستطابق. إذا تم حذف هذا الخيار، فإن أي اسم واجهة سيطابق.
[!] -o, --out-interface name
اسم واجهة سيتم إرسال حزمة عبرها (للحزم الداخلة إلى سلاسل FORWARD وOUTPUT وPOSTROUTING). عند استخدام الوسيطة "!" قبل اسم الواجهة، ينعكس المعنى. إذا انتهى اسم الواجهة بـ "+"، فإن أي واجهة تبدأ بهذا الاسم ستطابق. إذا تم حذف هذا الخيار، فإن أي اسم واجهة سيطابق.
[!] -f, --fragment
يعني هذا أن القاعدة تشير فقط إلى الشظية الثانية وما بعدها من شظايا IPv4 للحزم المجزأة. نظراً لعدم وجود طريقة لمعرفة منافذ المصدر أو الوجهة لمثل هذه الحزمة (أو نوع ICMP)، فإن هذه الحزمة لن تطابق أي قواعد تحددها. عندما تسبق الوسيطة "!" العلم "-f"، ستطابق القاعدة فقط الشظايا الرئيسية أو الحزم غير المجزأة. هذا الخيار خاص بـ IPv4، وهو غير متوفر في ip6tables.
يتيح هذا للمسؤول تهيئة عدادات الحزم والبايتات لقاعدة (أثناء عمليات INSERT وAPPEND وREPLACE).

خيارات أخرى

يمكن تحديد الخيارات الإضافية التالية:

مخرجات مفصلة. يجعل هذا الخيار أمر القائمة يعرض اسم الواجهة وخيارات القاعدة (إن وجدت) وأقنعة TOS. يتم أيضاً سرد عدادات الحزم والبايتات، مع اللاحقة 'K' أو 'M' أو 'G' لمضاعفات 1000 و1,000,000 و1,000,000,000 على التوالي (لكن انظر العلم -x لتغيير هذا). للإلحاق والإدراج والحذف والاستبدال، يتسبب هذا في طباعة معلومات مفصلة عن القاعدة أو القواعد. يمكن تحديد -v عدة مرات لإصدار عبارات تصحيح أكثر تفصيلاً: عند تحديده مرتين، سيفرغ iptables-legacy معلومات الجدول والإدخالات في libiptc، ويفرغ iptables-nft القواعد في عرض netlink (رمز VM). عند تحديده ثلاث مرات، سيفرغ iptables-nft أيضاً أي رسائل netlink مرسلة إلى النواة.
يعرض إصدار البرنامج وواجهة برمجة تطبيقات النواة المستخدمة.
انتظر قفل xtables. لمنع تشغيل نسخ متعددة من البرنامج بالتزامن، ستُجرى محاولة للحصول على قفل حصري عند الإطلاق. مبدئيًا، سيخرج البرنامج إذا تعذر الحصول على القفل. سيجعل هذا الخيار البرنامج ينتظر (إلى أجل غير مسمى أو لعدد seconds اختياري) حتى يُحصل على القفل الحصري.
مخرجات رقمية. ستتم طباعة عناوين IP وأرقام المنافذ بتنسيق رقمي. بشكل مبدئي، سيحاول البرنامج عرضها كأسماء مضيفين أو أسماء شبكات أو خدمات (عندما ينطبق ذلك).
توسيع الأرقام. يعرض القيمة الدقيقة لعدادات الحزم والبايتات، بدلاً من الرقم المقرب فقط في K (مضاعفات 1000) أو M (مضاعفات 1000K) أو G (مضاعفات 1000M). هذا الخيار ذو صلة فقط بأمر -L.
عند سرد القواعد، يضيف أرقام أسطر إلى بداية كل قاعدة، تتوافق مع موضع تلك القاعدة في السلسلة.
عند إضافة أو إدراج قواعد في سلسلة، استخدم أمر لتحميل أي وحدات ضرورية (الأهداف، إضافات المطابقة، إلخ).

ملف القفل

يستخدم 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-HOWTO NAT، ويشرح netfilter-extensions-HOWTO الإضافات غير الموجودة في التوزيعة القياسية، ويشرح netfilter-hacking-HOWTO داخليات netfilter.
انظر https://www.netfilter.org/.

المؤلفون

كتب Rusty Russell في الأصل iptables، بالتشاور المبكر مع Michael Neuling.

جعل Marc Boucher Rusty يتخلى عن ipnatctl بالضغط من أجل إطار عمل عام لاختيار الحزم في iptables، ثم كتب جدول mangle، ومطابقة owner، وأشياء mark، وتجول في كل مكان يفعل أشياء رائعة.

كتب جيمس موريس هدف TOS ومطابقة tos.

كتب جوزيف كادليكسيك هدف REJECT.

كتب هارالد فيلته هدف ULOG وNFQUEUE، وlibiptc الجديد، بالإضافة إلى مطابقات وأهداف TTL وDSCP وECN.

فريق النواة لـ Netfilter هو: جوزيف كادليكسيك، بابلو نيرا أيوسو، إريك لوبلون، فلوريان ويستفال وأرتورو بوريرو غونزاليس. أعضاء الفريق الأساسيون الفخريون هم: مارك بوشيه، مارتن جوزيفسون، ياسويوكي كوزاكاي، جيمس موريس، هارالد فيلته ورستي راسل.

صفحة الدليل كتبها في الأصل هيرفي إيشين <rv@wallfire.org>.

الإصدارة

تنطبق صفحة الدليل هذه على iptables/ip6tables 1.8.13.

ترجمة

تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.

iptables 1.8.13