Scroll to navigation

iptables-extensions(8) iptables 1.8.13 iptables-extensions(8)

الاسم

iptables-extensions — قائمة الإضافات في توزيعة iptables القياسية

موجز

ip6tables [-m name [module-options...]] [-j target-name [target-options...]

iptables [-m name [module-options...]] [-j target-name [target-options...]

إضافات المطابقة

يمكن لـ iptables استخدام وحدات مطابقة الحزم الموسعة مع الخيارات -m أو --match، متبوعة باسم وحدة المطابقة؛ بعد ذلك، تتوفر خيارات إضافية متنوعة لسطر الأوامر، اعتمادًا على الوحدة المحددة. يمكنك تحديد وحدات مطابقة موسعة متعددة في سطر واحد، ويمكنك استخدام الخيارات -h أو --help بعد تحديد الوحدة لتلقي مساعدة خاصة بتلك الوحدة. يتم تقييم وحدات المطابقة الموسعة بالترتيب الذي تم تحديدها به في القاعدة.

إذا تم تحديد -p أو --protocol وفقط إذا تمت مصادفة خيار غير معروف، يحاول iptables تحميل وحدة مطابقة بنفس اسم البروتوكول، لمحاولة جعل الخيار متاحًا.

addrtype

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

أنواع العناوين التالية ممكنة:

عنوان غير محدد (أي 0.0.0.0)
عنوان أحادي
عنوان محلي
عنوان بث
حبة أي كاست
عنوان بث متعدد
عنوان ثقب أسود
عنوان غير قابل للوصول
عنوان محظور
FIXME
FIXME
[!] --src-type type
يطابق إذا كان عنوان المصدر من النوع المحدد
[!] --dst-type type
يطابق إذا كان عنوان الوجهة من النوع المحدد
--limit-iface-in
يمكن تقييد التحقق من نوع العنوان بالواجهة التي تدخل منها الحزمة. هذا الخيار صالح فقط في سلاسل PREROUTING وINPUT وFORWARD. لا يمكن تحديده مع الخيار --limit-iface-out.
--limit-iface-out
يمكن تقييد التحقق من نوع العنوان بالواجهة التي تخرج منها الحزمة. هذا الخيار صالح فقط في سلاسل POSTROUTING وOUTPUT وFORWARD. لا يمكن تحديده مع الخيار --limit-iface-in.

ah (خاص بـ IPv6)

تطابق هذه الوحدة المعاملات في رأس الاستيثاق لحزم IPsec.

[!] --ahspi spi[:spi]
تطابق SPI.
[!] --ahlen length
الطول الكلي لهذا الرأس بالأوكتيتات.
تطابق إذا كان الحقل المحجوز مملوءًا بصفر.

ah (خاص بـ IPv4)

تطابق هذه الوحدة SPIs في رأس الاستيثاق لحزم IPsec.

[!] --ahspi spi[:spi]

bpf

تطابق باستخدام مرشح مأخذ لينكس. تتوقع مسارًا إلى كائن eBPF أو برنامج cBPF بتنسيق عشري.

مرر مسارًا إلى كائن eBPF مثبت.

تحمل التطبيقات برامج eBPF إلى النواة باستخدام استدعاء النظام bpf() وأمر BPF_PROG_LOAD ويمكنها تثبيتها في نظام ملفات افتراضي باستخدام BPF_OBJ_PIN. لاستخدام كائن مثبت في iptables، قم بتركيب نظام ملفات bpf باستخدام

mount -t bpf bpf ${BPF_MOUNT}

ثم أدخل المرشح في iptables بالمسار:

iptables -A OUTPUT -m bpf --object-pinned ${BPF_MOUNT}/{PINNED_PATH} -j ACCEPT
مرر تنسيق كود البايت BPF كما يولده الأداة nfbpf_compile.

تنسيق الكود مشابه لمخرجات أمر tcpdump -ddd: سطر واحد يخزن عدد التعليمات، متبوعًا بسطر لكل تعليمة. تتبع أسطر التعليمات النمط 'u16 u8 u8 u32' بالتدوين العشري. ترمز الحقول للعملية، إزاحة القفز إذا كان صحيحًا، إزاحة القفز إذا كان خاطئًا والحقل العام متعدد الاستخدامات 'K'. التعليقات غير مدعومة.

على سبيل المثال، لقراءة الحزم المطابقة فقط لـ 'ip proto 6'، أدخل التالي، بدون التعليقات أو المسافات البيضاء الزائدة:

4 # عدد التعليمات
48 0 0 9 # تحميل بايت ip->proto
21 0 1 6 # قفز مساوٍ IPPROTO_TCP
6 0 0 1 # إرجاع نجاح (غير صفري)
6 0 0 0 # إرجاع فشل (صفر)

يمكنك تمرير هذا المرشح لمطابقة bpf بالأمر التالي:

iptables -A OUTPUT -m bpf --bytecode '4,48 0 0 9,21 0 1 6,6 0 0 1,6 0 0 0' -j ACCEPT

أو بدلاً من ذلك، يمكنك استدعاء الأداة nfbpf_compile.

iptables -A OUTPUT -m bpf --bytecode "`nfbpf_compile RAW 'ip proto 6'`" -j ACCEPT

أو استخدم tcpdump -ddd. في هذه الحالة، قم بتوليد BPF يستهدف جهازًا بنفس نوع وصلة البيانات كمطابقة xtables. يمرر Iptables الحزم من طبقة الشبكة فصاعدًا، دون طبقة MAC. اختر جهازًا بنوع وصلة بيانات RAW، مثل جهاز tun:

ip tuntap add tun0 mode tun
ip link set tun0 up
tcpdump -ddd -i tun0 ip proto 6

انظر tcpdump -L -i $dev للحصول على قائمة بأنواع وصلة البيانات المعروفة لجهاز معين.

قد ترغب في معرفة المزيد عن BPF من صفحة الدليل bpf(4) الخاصة بـ FreeBSD.

cgroup

[!] --path path
مطابقة عضوية cgroup2.

كل مقبس مرتبط بـ cgroup v2 للعملية المنشئة. يطابق هذا الحزم القادمة من أو المتجهة إلى جميع المقابس في التسلسل الهرمي الفرعي للمسار المحدد. يجب أن يكون المسار نسبيًا لجذر التسلسل الهرمي لـ cgroup2.

[!] --cgroup classid
مطابقة classid لـ cgroup net_cls.

classid هو العلامة المحددة عبر متحكم cgroup net_cls. لا يمكن استخدام هذا الخيار و--path معًا.

مثال:

iptables -A OUTPUT -p tcp --sport 80 -m cgroup ! --path service/http-server -j DROP
iptables -A OUTPUT -p tcp --sport 80 -m cgroup ! --cgroup 1 -j DROP

هام: عند استخدامه في سلسلة INPUT، فإن مطابق cgroup حاليًا ذو وظائف محدودة فقط، مما يعني أنه سيطابق فقط الحزم التي تتم معالجتها للمقابس المحلية عبر إزالة تعدد الإرسال المبكر للمقابس. لذلك، لا يُنصح بالاستخدام العام على سلسلة INPUT ما لم يتم فهم الآثار جيدًا.

متاح منذ لينكس 3.14.

عنقود

يسمح لك بنشر عناقيد مشاركة الحِمل للبوابات والخلفيات دون الحاجة إلى موازنات الحِمل.

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

يضبط عدد العُقد الكلي في العنقود.
[!] --cluster-local-node \fIعدد
يضبط معرف رقم العقدة المحلية.
[!] --cluster-local-nodemask \fIقناع
يضبط قناع معرف رقم العقدة المحلية. يمكنك استخدام هذا الخيار بدلاً من --cluster-local-node.
يضبط قيمة البذرة لتجزئة Jenkins.

مثال:

iptables -A PREROUTING -t mangle -i eth1 -m cluster --cluster-total-nodes 2 --cluster-local-node 1 --cluster-hash-seed 0xdeadbeef -j MARK --set-mark 0xffff
iptables -A PREROUTING -t mangle -i eth2 -m cluster --cluster-total-nodes 2 --cluster-local-node 1 --cluster-hash-seed 0xdeadbeef -j MARK --set-mark 0xffff
iptables -A PREROUTING -t mangle -i eth1 -m mark ! --mark 0xffff -j DROP
iptables -A PREROUTING -t mangle -i eth2 -m mark ! --mark 0xffff -j DROP

والأوامر التالية لجعل جميع العُقد ترى نفس الحزم:

ip maddr add 01:00:5e:00:01:01 dev eth1
ip maddr add 01:00:5e:00:01:02 dev eth2
arptables -A OUTPUT -o eth1 --h-length 6 -j mangle --mangle-mac-s 01:00:5e:00:01:01
arptables -A INPUT -i eth1 --h-length 6 --destination-mac 01:00:5e:00:01:01 -j mangle --mangle-mac-d 00:zz:yy:xx:5a:27
arptables -A OUTPUT -o eth2 --h-length 6 -j mangle --mangle-mac-s 01:00:5e:00:01:02
arptables -A INPUT -i eth2 --h-length 6 --destination-mac 01:00:5e:00:01:02 -j mangle --mangle-mac-d 00:zz:yy:xx:5a:27

ملاحظة: أوامر arptables أعلاه تستخدم الصيغة السائدة. إذا كنت تستخدم arptables-jf المضمنة في بعض إصدارات RedHat وCentOS وFedora، فستواجه أخطاء نحوية. لذلك، ستحتاج إلى تكييفها مع صيغة arptables-jf لجعلها تعمل.

في حالة اتصالات TCP، يجب تعطيل ميزة الالتقاط لتجنب وضع علامة على حزم TCP ACK القادمة في اتجاه الرد على أنها صالحة.

echo 0 > /proc/sys/net/netfilter/nf_conntrack_tcp_loose

تعليق

يسمح لك بإضافة تعليقات (حتى 256 حرفًا) إلى أي قاعدة.

مثال:
iptables -A INPUT -i eth1 -m comment --comment "شبكتي المحلية"

بايتات الاتصال

يطابق بعدد البايتات أو الحزم التي نقلها اتصال (أو أحد التدفقين المكونين للاتصال) حتى الآن، أو بمتوسط البايتات لكل حزمة.

العدادات هي 64 بت وبالتالي لا يُتوقع أن تفيض ;)

الاستخدام الرئيسي هو اكتشاف التنزيلات طويلة العمر ووضع علامة عليها لتتم جدولتها باستخدام نطاق أولوية أقل في التحكم في المرور.

يمكن أيضًا عرض البايتات المنقولة لكل اتصال من خلال `conntrack -L` والوصول إليها عبر ctnetlink.

لاحظ أنه بالنسبة للاتصالات التي لا تحتوي على معلومات محاسبة، ستعيد المطابقة دائمًا القيمة false. تتحكم علامة sysctl "net.netfilter.nf_conntrack_acct" في ما إذا كانت الاتصالات الجديدة ستُحسب بالبايت/الحزمة. لن تكتسب/تفقد تدفقات الاتصال الحالية بنية المحاسبة عند قلب علامة sysctl.

[!] --connbytes from[:to]
يطابق حزمًا من اتصال يكون عدد حزمه/بايتاته/متوسط حجم حزمته أكبر من FROM وأقل من TO بايت/حزمة. إذا تم حذف TO، يتم التحقق من FROM فقط. يُستخدم "!" لمطابقة الحزم التي لا تقع ضمن النطاق.
أي الحزم يجب أخذها في الاعتبار
ما إذا كان يجب التحقق من كمية الحزم، أو عدد البايتات المنقولة، أو متوسط الحجم (بالبايت) لجميع الحزم المستلمة حتى الآن. لاحظ أنه عند استخدام "both" مع "avgpkt"، وتدفق البيانات (بشكل رئيسي) في اتجاه واحد فقط (مثل HTTP)، سيكون متوسط حجم الحزمة حوالي نصف حزم البيانات الفعلية.
مثال:
iptables .. -m connbytes --connbytes 10000:100000 --connbytes-dir both --connbytes-mode bytes ...

connlabel

الوحدة النمطية تطابق أو تضيف تسميات اتصال (connlabels) إلى اتصال. تسميات الاتصال مشابهة لعلامات الاتصال (connmarks)، باستثناء أن التسميات مبنية على البتات؛ أي يمكن إرفاق جميع التسميات بتدفق في نفس الوقت. يتم دعم ما يصل إلى 128 تسمية فريدة حاليًا.

[!] --label name
يطابق إذا تم تعيين التسمية name على اتصال. بدلاً من اسم (والذي سيتم ترجمته إلى رقم، انظر المثال أدناه)، يمكن استخدام رقم بدلاً من ذلك. استخدام رقم يتجاوز دائمًا connlabel.conf.
إذا لم يتم تعيين التسمية على الاتصال، فقم بتعيينها. لاحظ أن تعيين تسمية قد يفشل. وذلك لأن النواة تخصص منطقة تخزين تسمية التتبع (conntrack label) عند إنشاء الاتصال، وتحتفظ فقط بكمية الذاكرة المطلوبة من قبل مجموعة القواعد الموجودة في وقت إنشاء الاتصال. في هذه الحالة، ستفشل المطابقة (أو تنجح، في حالة نفي خيار --label).

تعتمد هذه المطابقة على libnetfilter_conntrack 1.0.4 أو أحدث. تتم ترجمة التسمية عبر ملف الإعدادات /etc/xtables/connlabel.conf.

مثال:

0	eth0-in
1	eth0-out
2	ppp-in
3	ppp-out
4	bulk-traffic
5	interactive

connlimit

يسمح لك بتقييد عدد الاتصالات المتوازية لخادم لكل عنوان IP للعميل (أو كتلة عنوان العميل).

--connlimit-upto n
يطابق إذا كان عدد الاتصالات الحالية أقل من أو يساوي n.
--connlimit-above n
طابق إذا كان عدد الاتصالات الحالية أعلى من n.
--connlimit-mask prefix_length
جمّع المضيفين باستخدام طول البادئة. بالنسبة لـ IPv4، يجب أن يكون هذا رقمًا بين (بما في ذلك) 0 و32. بالنسبة لـ IPv6، بين 0 و128. إذا لم يُحدد، يُستخدم أقصى طول بادئة للبروتوكول المنطبق.
--connlimit-saddr
طبّق الحد على مجموعة المصدر. هذا هو المبدئي إذا لم يُحدد --connlimit-daddr.
--connlimit-daddr
طبّق الحد على مجموعة الوجهة.

أمثلة:

  • اسمح باتصالين telnet لكل مضيف عميل:
    iptables -A INPUT -p tcp --syn --dport 23 -m connlimit --connlimit-above 2 -j REJECT
  • يمكنك أيضًا المطابقة بالعكس:
    iptables -A INPUT -p tcp --syn --dport 23 -m connlimit --connlimit-upto 2 -j ACCEPT
  • حدد عدد طلبات HTTP المتوازية إلى 16 لكل شبكة مصدر بحجم الفئة C (قناع شبكة 24 بت):
    iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 16 --connlimit-mask 24 -j REJECT
  • حدد عدد طلبات HTTP المتوازية إلى 16 للشبكة المحلية الرابط (IPv6):
    ip6tables -p tcp --syn --dport 80 -s fe80::/64 -m connlimit --connlimit-above 16 --connlimit-mask 64 -j REJECT
  • حدد عدد الاتصالات بمضيف معين:
    ip6tables -p tcp --syn --dport 49152:65535 -d 2001:db8::1 -m connlimit --connlimit-above 100 -j REJECT

connmark

يطابق هذا الوحدة حقل علامة netfilter المرتبط باتصال (والذي يمكن تعيينه باستخدام الهدف CONNMARK أدناه).

[!] --mark قيمة[/قناع]
يطابق الحزم في الاتصالات ذات قيمة العلامة المعطاة (إذا تم تحديد قناع، يتم إجراء عملية AND منطقية مع العلامة قبل المقارنة).

تتبع الاتصال

تتيح هذه الوحدة، عند دمجها مع تتبع الاتصال، الوصول إلى حالة تتبع الاتصال لهذه الحزمة/الاتصال.

[!] --ctstate قائمة_الحالات
قائمة_الحالات هي قائمة مفصولة بفواصل لحالات الاتصال المطلوب مطابقتها. الحالات الممكنة مدرجة أدناه.
[!] --ctproto بروتوكول_الطبقة4
بروتوكول الطبقة 4 للمطابقة (بالرقم أو الاسم)
[!] --ctorigsrc عنوان[/قناع]
[!] --ctorigdst عنوان[/قناع]
[!] --ctreplsrc عنوان[/قناع]
[!] --ctrepldst عنوان[/قناع]
المطابقة مع عنوان المصدر/الوجهة الأصلي/الرد
[!] --ctorigsrcport منفذ[:منفذ]
[!] --ctorigdstport منفذ[:منفذ]
[!] --ctreplsrcport منفذ[:منفذ]
[!] --ctrepldstport منفذ[:منفذ]
المطابقة مع منفذ المصدر/الوجهة الأصلي/الرد (TCP/UDP/إلخ) أو مفتاح GRE. المطابقة مع نطاقات المنافذ مدعومة فقط في إصدارات النواة الأعلى من 2.6.38.
[!] --ctstatus قائمة_الحالات
قائمة_الحالات هي قائمة مفصولة بفواصل لحالات الاتصال المطلوب مطابقتها. الحالات الممكنة مدرجة أدناه.
[!] --ctexpire الوقت[:الوقت]
طابق العمر المتبقي بالثواني مع القيمة المعطاة أو نطاق القيم (شامل)
طابق الحزم المتدفقة في الاتجاه المحدد. إذا لم تُحدد هذه العلامة على الإطلاق، تُطابق الحزم في كلا الاتجاهين.

الحالات لـ --ctstate:

الحزمة غير مرتبطة بأي اتصال معروف.
بدأت الحزمة اتصالاً جديداً أو ارتبطت باتصال لم يشهد حزماً في كلا الاتجاهين.
الحزمة مرتبطة باتصال شهد حزماً في كلا الاتجاهين.
تبدأ الحزمة اتصالاً جديداً، لكنها مرتبطة باتصال موجود، مثل نقل بيانات FTP أو خطأ ICMP.
الحزمة غير متعقبة على الإطلاق، ويحدث هذا إذا ألغيت تعقبها صراحة باستخدام -j CT --notrack في الجدول الخام.
SNAT
حالة افتراضية، تُطابق إذا اختلف عنوان المصدر الأصلي عن وجهة الرد.
DNAT
حالة افتراضية، تُطابق إذا اختلفت الوجهة الأصلية عن مصدر الرد.

الحالات لـ --ctstatus:

لا شيء مما يلي.
هذا اتصال متوقع (أي أن مساعد تتبع الاتصال قام بإعداده).
رأى تتبع الاتصال حزمًا في كلا الاتجاهين.
يجب ألا ينتهي إدخال تتبع الاتصال مبكرًا أبدًا.
مؤكد
تم تأكيد الاتصال: غادرت الحزمة الأصلية الصندوق.

وحدة المعالجة المركزية

[!] --cpu رقم
طابق وحدة المعالجة المركزية التي تعالج هذه الحزمة. يتم ترقيم وحدات المعالجة المركزية من 0 إلى NR_CPUS-1. يمكن استخدامها مع RPS (توجيه الحزم عن بُعد) أو بطاقات شبكة متعددة القنوات لتوزيع حركة مرور الشبكة على قوائم انتظار مختلفة.

مثال:

iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 0 -j REDIRECT --to-ports 8080

iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 1 -j REDIRECT --to-ports 8081

متاح منذ لينكس 2.6.36.

dccp

[!] --source-port,--sport منفذ[:منفذ]
[!] --destination-port,--dport منفذ[:منفذ]
[!] --dccp-types قناع
يطابق عندما يكون نوع حزمة DCCP أحد 'mask'. 'mask' هي قائمة مفصولة بفواصل لأنواع الحزم. أنواع الحزم هي: REQUEST RESPONSE DATA ACK DATAACK CLOSEREQ CLOSE RESET SYNC SYNCACK INVALID.
[!] --dccp-option number
يطابق إذا تم تعيين خيار DCCP.

devgroup

يطابق مجموعة جهاز الواجهة الواردة/الصادرة لحزمة.

[!] --src-group name
يطابق مجموعة جهاز الجهاز الوارد
[!] --dst-group name
يطابق مجموعة جهاز الجهاز الصادر

dscp

تطابق هذه الوحدة حقل DSCP ذو 6 بت داخل حقل TOS في رأس IP. حل DSCP محل TOS داخل IETF.

[!] --dscp value
يطابق قيمة رقمية (عشرية أو سداسية عشرية) في النطاق 0–63.
[!] --dscp-class class
يطابق فئة DiffServ. قد تكون هذه القيمة أيًا من فئات BE أو EF أو AFxx أو CSx. ثم يتم تحويلها إلى قيمتها الرقمية المقابلة.

dst (خاص بـ IPv6)

تطابق هذه الوحدة المعلمات في رأس خيارات الوجهة

[!] --dst-len length
الطول الكلي لهذا الرأس بالأوكتيتات.
النوع الرقمي للخيار وطول بيانات الخيار بالأوكتيت.

ecn

يتيح لك هذا مطابقة بتات ECN لرأس IPv4/IPv6 وTCP. ECN هي آلية الإخطار الصريح بالازدحام كما هو محدد في RFC3168

[!] --ecn-tcp-cwr
يطابق هذا إذا كانت بتة CWR (استلام نافذة الازدحام) لـ TCP ECN مضبوطة.
[!] --ecn-tcp-ece
يطابق هذا إذا كانت بتة ECE (صدى ECN) لـ TCP ECN مضبوطة.
[!] --ecn-ip-ect num
يطابق هذا ECT معين (نقل قابل لـ ECN) لـ IPv4/IPv6. يجب عليك تحديد رقم بين `0' و`3'.

esp

يطابق هذه الوحدة SPIs في رأس ESP لحزم IPsec.

[!] --espspi spi[:spi]

eui64 (خاص بـ IPv6)

تطابق هذه الوحدة جزء EUI-64 من عنوان IPv6 مهيأ آليًا بدون حالة. تقارن EUI-64 المستمد من عنوان MAC المصدر في إطار Ethernet مع البتات الـ64 السفلى من عنوان IPv6 المصدر. لكن بتة "Universal/Local" لا تُقارن. لا تطابق هذه الوحدة إطارات طبقة الوصلة الأخرى، وهي صالحة فقط في السلاسل PREROUTING وINPUT وFORWARD.

frag (خاص بـ IPv6)

تطابق هذه الوحدة المعاملات في رأس التجزئة.

[!] --fragid id[:id]
يطابق المُعرّف المعطى أو نطاقه.
[!] --fraglen length
لا يمكن استخدام هذا الخيار مع إصدار النواة 2.6.10 أو أحدث. طول رأس التجزئة ثابت وهذا الخيار لا معنى له.
يطابق إذا كانت الحقول المحجوزة مملوءة بالأصفار.
يطابق الجزء الأول.
يطابق إذا وُجدت أجزاء أخرى.
يطابق إذا كان هذا هو الجزء الأخير.

hashlimit

يستخدم hashlimit دلاء التجزئة للتعبير عن مطابقة تحديد المعدل (مثل مطابقة limit) لمجموعة من الاتصالات باستخدام قاعدة iptables واحدة. يمكن إجراء التجميع لكل مجموعة مضيف (عنوان المصدر و/أو الوجهة) و/أو لكل منفذ. يمنحك القدرة على التعبير عن "N حزمة لكل كمية زمنية لكل مجموعة" أو "N بايت في الثانية" (انظر أدناه لبعض الأمثلة).

خيار حد التجزئة (--hashlimit-upto، --hashlimit-above) و --hashlimit-name مطلوبان.

--hashlimit-upto الكمية[/second|/minute|/hour|/day]
يطابق إذا كان المعدل أقل من أو يساوي الكمية/الكمية الزمنية. يُحدد إما كرقم، مع لاحقة كمية زمنية اختيارية (المبدئي هو 3/ساعة)، أو كـ الكميةb/second (عدد البايتات في الثانية).
--hashlimit-above الكمية[/second|/minute|/hour|/day]
يطابق إذا كان المعدل أعلى من الكمية/الكمية الزمنية.
--hashlimit-burst الكمية
العدد الأقصى المبدئي للحزم للمطابقة: يُعاد شحن هذا العدد بواحد كل مرة لا يُبلغ فيها الحد المحدد أعلاه، حتى هذا العدد؛ المبدئي هو 5. عند طلب مطابقة معدل قائمة على البايت، يحدد هذا الخيار كمية البايتات التي يمكن أن تتجاوز المعدل المعطى. يجب استخدام هذا الخيار بحذر — إذا انتهت صلاحية الإدخال، تُعاد قيمة الاندفاع أيضًا.
--hashlimit-mode {srcip|srcport|dstip|dstport},...
قائمة مفصولة بفواصل من الكائنات التي يجب أخذها في الاعتبار. إذا لم يُعطَ خيار --hashlimit-mode، يعمل hashlimit مثل limit، ولكن بتكلفة القيام بصيانة التجزئة.
--hashlimit-srcmask البادئة
عند استخدام --hashlimit-mode srcip، ستُجمع جميع عناوين المصدر التي تُواجه وفقًا لطول البادئة المعطى وستخضع الشبكة الفرعية المنشأة هكذا لـ hashlimit. يجب أن تكون البادئة بين (شاملًا) 0 و32. لاحظ أن --hashlimit-srcmask 0 يفعل أساسًا نفس الشيء كعدم تحديد srcip لـ --hashlimit-mode، ولكنه أكثر تكلفة تقنيًا.
--hashlimit-dstmask البادئة
مثل --hashlimit-srcmask، لكن لعناوين الوجهة.
--hashlimit-name foo
الاسم للإدخال /proc/net/ipt_hashlimit/foo.
--hashlimit-htable-size buckets
عدد الجرافات في جدول التجزئة
--hashlimit-htable-max entries
الحد الأقصى للإدخالات في التجزئة.
--hashlimit-htable-expire msec
بعد كم ملي ثانية تنتهي صلاحية إدخالات التجزئة.
--hashlimit-htable-gcinterval msec
كم ملي ثانية بين فترات جمع القمامة.
--hashlimit-rate-match
صنف التدفق بدلاً من تحديد معدله. يعمل هذا كمطابقة صواب/خطأ حول ما إذا كان المعدل أعلى/أقل من رقم معين
--hashlimit-rate-interval sec
يمكن استخدامه مع --hashlimit-rate-match لتحديد الفاصل الزمني الذي يجب أخذ عينة المعدل فيه

أمثلة:

المطابقة على المضيف المصدر
"1000 حزمة في الثانية لكل مضيف في 192.168.0.0/16" => -s 192.168.0.0/16 --hashlimit-mode srcip --hashlimit-upto 1000/sec
المطابقة على منفذ المصدر
"100 حزمة في الثانية لكل خدمة من 192.168.1.1" => -s 192.168.1.1 --hashlimit-mode srcport --hashlimit-upto 100/sec
المطابقة على الشبكة الفرعية
"10000 packets per minute for every /28 subnet (groups of 8 addresses) in 10.0.0.0/8" => -s 10.0.0.0/8 --hashlimit-mask 28 --hashlimit-upto 10000/min
مطابقة البايتات في الثانية
"flows exceeding 512kbyte/s" => --hashlimit-mode srcip,dstip,srcport,dstport --hashlimit-above 512kb/s
مطابقة البايتات في الثانية
"hosts that exceed 512kbyte/s, but permit up to 1Megabytes without matching" --hashlimit-mode dstip --hashlimit-above 512kb/s --hashlimit-burst 1mb

hbh (خاص بـ IPv6)

تطابق هذه الوحدة المعاملات في رأس خيارات القفزة تلو القفزة

[!] --hbh-len الطول
الطول الكلي لهذا الرأس بالأوكتيتات.
النوع الرقمي للخيار وطول بيانات الخيار بالأوكتيت.

المساعد

تطابق هذه الوحدة الحزم المتعلقة بمساعد تتبع اتصال محدد.

[!] --helper السلسلة
تطابق الحزم المتعلقة بمساعد تتبع الاتصال المحدد.

يمكن أن تكون السلسلة "ftp" للحزم المتعلقة بجلسة FTP على المنفذ المبدئي. للمنافذ الأخرى، ألحق --portnr بالقيمة، مثل "ftp-2121".

تنطبق نفس القواعد على مساعدي تتبع الاتصال الآخرين.

hl (خاص بـ IPv6)

تطابق هذه الوحدة حقل حد القفزات في رأس IPv6.

[!] --hl-eq القيمة
تطابق إذا كان حد القفزات يساوي القيمة.
تطابق إذا كان حد القفزات أقل من القيمة.
يطابق إذا كان حد القفز أكبر من القيمة.

icmp (خاص بـ IPv4)

يمكن استخدام هذا الامتداد إذا تم تحديد `--protocol icmp`. يوفر الخيار التالي:

[!] --icmp-type {نوع[/رمز]|اسم_النوع}
يسمح هذا بتحديد نوع ICMP، والذي يمكن أن يكون نوع ICMP رقميًا، أو زوج نوع/رمز، أو أحد أسماء أنواع ICMP المعروضة بواسطة الأمر

iptables -p icmp -h

icmp6 (خاص بـ IPv6)

يمكن استخدام هذا الامتداد إذا تم تحديد `--protocol ipv6-icmp` أو `--protocol icmpv6`. يوفر الخيار التالي:

[!] --icmpv6-type نوع[/رمز]|اسم_النوع
يسمح هذا بتحديد نوع ICMPv6، والذي يمكن أن يكون نوع ICMPv6 رقميًا، أو نوع و رمز، أو أحد أسماء أنواع ICMPv6 المعروضة بواسطة الأمر

ip6tables -p ipv6-icmp -h

iprange

يطابق هذا نطاقًا عشوائيًا معينًا من عناوين IP.

[!] --src-range من[-إلى]
طابق عنوان IP المصدر في النطاق المحدد.
[!] --dst-range من[-إلى]
طابق عنوان IP الوجهة في النطاق المحدد.

ipv6header (خاص بـ IPv6)

يطابق هذه الوحدة رؤوس امتداد IPv6 و/أو رأس الطبقة العليا.

يطابق إذا كانت الحزمة تتضمن أيًا من الرؤوس المحددة مع --header.
[!] --header رأس[,رأس...]
يطابق الحزمة التي تتضمن تمامًا جميع الرؤوس المحددة. الرؤوس المغلفة برأس ESP خارج النطاق. أنواع الرأس الممكنة يمكن أن تكون:
رأس خيارات قفزة بقفزة
رأس خيارات الوجهة
رأس التوجيه
رأس التجزئة
رأس الاستيثاق
esp
رأس حمولة الأمان المغلفة
لا رأس تالي يطابق 59 في 'حقل الرأس التالي' لرأس IPv6 أو أي رؤوس امتداد IPv6
الذي يطابق أي رأس بروتوكول طبقة عليا. اسم بروتوكول من /etc/protocols وقيمة رقمية مسموح بها أيضًا. الرقم 255 يعادل prot.

ipvs

طابق خصائص اتصال IPVS.

[!] --ipvs
الحزمة تنتمي إلى اتصال IPVS
أي من الخيارات التالية يستلزم --ipvs (حتى لو كان منفيًا)
[!] --vproto protocol
بروتوكول VIP للمطابقة؛ بالرقم أو الاسم، مثل "tcp"
[!] --vaddr address[/mask]
عنوان VIP للمطابقة
[!] --vport port
منفذ VIP للمطابقة؛ بالرقم أو الاسم، مثل "http"
اتجاه تدفق الحزمة
[!] --vmethod {GATE|IPIP|MASQ}
طريقة إعادة التوجيه IPVS المستخدمة
[!] --vportctl port
منفذ VIP للاتصال المتحكم للمطابقة، مثل 21 لـ FTP

length

تطابق هذه الوحدة طول حمولة الطبقة 3 (مثل حزمة الطبقة 4) لحزمة مقابل قيمة محددة أو نطاق من القيم.

[!] --length length[:length]

limit

تطابق هذه الوحدة بمعدل محدود باستخدام مرشح دلو الرموز. ستطابق قاعدة تستخدم هذا الامتداد حتى الوصول إلى هذا الحد. يمكن استخدامها مع هدف LOG لتوفير تسجيل محدود، على سبيل المثال.

لا يدعم xt_limit النفي — ستحتاج إلى استخدام -m hashlimit ! --hashlimit rate في هذه الحالة مع حذف --hashlimit-mode.

--limit rate[/second|/minute|/hour|/day]
معدل المطابقة المتوسط الأقصى: محدد كرقم، مع لاحقة اختيارية `/second' أو `/minute' أو `/hour' أو `/day'؛ المبدئي هو 3/hour.
--limit-burst number
العدد المبدئي الأقصى للحزم المطابقة: يُعاد شحن هذا العدد بواحد كل مرة لا يُبلغ فيها الحد المحدد أعلاه، حتى هذا العدد؛ المبدئي هو 5.

mac

[!] --mac-source العنوان
يطابق عنوان MAC المصدر. يجب أن يكون بالصيغة XX:XX:XX:XX:XX:XX. لاحظ أن هذا منطقي فقط للحزم القادمة من جهاز إيثرنت والداخلة إلى السلاسل PREROUTING أو FORWARD أو INPUT.

علامة

يطابق هذا الوحدة حقل علامة netfilter المرتبط بحزمة (يمكن ضبطه باستخدام هدف MARK أدناه).

[!] --mark قيمة[/قناع]
يطابق الحزم بقيمة العلامة غير الموقعة المعطاة (إذا حُدد قناع، يُجرى AND منطقي مع القناع قبل المقارنة).

mh (خاص بـ IPv6)

يُحمّل هذا الامتداد إذا حُدد `--protocol ipv6-mh` أو `--protocol mh`. يوفر الخيار التالي:

[!] --mh-type النوع[:النوع]
يسمح هذا بتحديد نوع رأس التنقل (MH)، الذي يمكن أن يكون رقمي MH النوع، النوع أو أحد أسماء أنواع MH المعروضة بواسطة الأمر

ip6tables -p mh -h

multiport

يطابق هذا الوحدة مجموعة من منافذ المصدر أو الوجهة. يمكن تحديد حتى 15 منفذاً. نطاق المنفذ (منفذ:منفذ) يُحتسب كمنفذين. يمكن استخدامه فقط مع أحد البروتوكولات التالية: tcp، udp، udplite، dccp و sctp.

[!] --source-ports,--sports المنفذ[,المنفذ|,المنفذ:المنفذ]...
يطابق إذا كان منفذ المصدر أحد المنافذ المعطاة. العلامة --sports هي اسم مستعار مناسب لهذا الخيار. تُفصل المنافذ المتعددة أو نطاقات المنافذ باستخدام فاصلة، ويُحدد نطاق المنفذ باستخدام نقطتين. لذا 53,1024:65535 يطابق المنفذ 53 وكل المنافذ من 1024 حتى 65535.
[!] --destination-ports,--dports المنفذ[,المنفذ|,المنفذ:المنفذ]...
يطابق إذا كان منفذ الوجهة أحد المنافذ المعطاة. العلامة --dports هي اسم مستعار مناسب لهذا الخيار.
[!] --ports المنفذ[,المنفذ|,المنفذ:المنفذ]...
يطابق إذا كان أي من منافذ المصدر أو الوجهة مساوياً لأحد المنافذ المعطاة.

nfacct

يوفر مطابقة nfacct البنية التحتية المحاسبية الموسعة لـ iptables. يجب استخدام هذه المطابقة مع الأداة المستقلة في مساحة المستخدم nfacct(8)

الخيار الوحيد المتاح لهذه المطابقة هو التالي:

--nfacct-name name
يتيح لك هذا تحديد اسم الكائن الموجود الذي سيُستخدم لمحاسبة حركة المرور التي تطابقها مجموعة القواعد هذه.

لاستخدام هذا الامتداد، يجب إنشاء كائن محاسبة:

nfacct add http-traffic

ثم، يجب إرفاقه بكائن المحاسبة عبر iptables:

iptables -I INPUT -p tcp --sport 80 -m nfacct --nfacct-name http-traffic
iptables -I OUTPUT -p tcp --dport 80 -m nfacct --nfacct-name http-traffic

ثم، يمكنك التحقق من كمية حركة المرور التي تطابقها القواعد:

nfacct get http-traffic
{ pkts = 00000000000000000156, bytes = 00000000000000151786 } = http-traffic;

يمكنك الحصول على nfacct(8) من https://www.netfilter.org أو، بدلاً من ذلك، من مستودع git.netfilter.org.

osf

تقوم وحدة osf ببصمة نظام تشغيل سلبية. تقارن هذه الوحدة بعض البيانات (حجم النافذة، MSS، الخيارات وترتيبها، TTL، DF، وغيرها) من الحزم مع تعيين بت SYN.

[!] --genre string
طابق نوع نظام تشغيل باستخدام بصمة سلبية.
قم بإجراء فحوصات TTL إضافية على الحزمة لتحديد نظام التشغيل. يمكن أن تكون level إحدى القيم التالية:
0
مقارنة عنوان IP الحقيقي و TTL البصمة. يعمل هذا بشكل عام للشبكات المحلية.
1
تحقق مما إذا كان TTL لرأس IP أقل من TTL البصمة. يعمل للعناوين القابلة للتوجيه عالميًا.
2
لا تقارن TTL على الإطلاق.
سجل الأنواع المحددة في dmesg حتى لو لم تطابق النوع المطلوب. المستوى يمكن أن يكون إحدى القيم التالية:
0
سجل كل التوقيعات المتطابقة أو غير المعروفة
1
سجل الأول فقط
2
سجل كل التوقيعات المتطابقة المعروفة

قد تجد شيئًا كهذا في syslog:

Windows [2000:SP3:Windows XP Pro SP1, 2000 SP3]: 11.22.33.55:4024 -> 11.22.33.44:139 hops=3 Linux [2.5-2.6:] : 1.2.3.4:42624 -> 1.2.3.5:22 hops=4

بصمات نظام التشغيل قابلة للتحميل باستخدام برنامج nfnl_osf. لتحميل البصمات من ملف، استخدم:

nfnl_osf -f /usr/share/xtables/pf.os

لإزالتها مرة أخرى،

nfnl_osf -f /usr/share/xtables/pf.os -d

قاعدة بيانات البصمات يمكن تنزيلها من http://www.openbsd.org/cgi-bin/cvsweb/src/etc/pf.os .

المالك

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

[!] --uid-owner اسم_المستخدم
[!] --uid-owner معرف_المستخدم[-معرف_المستخدم]
يطابق إذا كان هيكل ملف مقبس الحزمة (إذا كان موجودًا) مملوكًا للمستخدم المعطى. يمكنك أيضًا تحديد UID رقمي، أو نطاق UID.
[!] --gid-owner اسم_المجموعة
[!] --gid-owner معرف_المجموعة[-معرف_المجموعة]
يطابق إذا كان هيكل ملف مقبس الحزمة مملوكًا للمجموعة المعطاة. يمكنك أيضًا تحديد GID رقمي، أو نطاق GID.
يتسبب في فحص المجموعة (المجموعات) المحددة مع --gid-owner أيضًا في المجموعات التكميلية لعملية.
[!] --socket-exists
يطابق إذا كانت الحزمة مرتبطة بمقبس.

physdev

تطابق هذه الوحدة على أجهزة الإدخال والإخراج لمنفذ الجسر التابعة لجهاز جسر. هذه الوحدة جزء من البنية التحتية التي تمكن جدار حماية IP للجسر الشفاف وهي مفيدة فقط لإصدارات النواة الأعلى من الإصدار 2.5.44.

[!] --physdev-in name
اسم منفذ جسر تُستقبل عبره حزمة (فقط للحزم الداخلة إلى السلاسل INPUT وFORWARD وPREROUTING). إذا انتهى اسم الواجهة بـ "+"، فإن أي واجهة تبدأ بهذا الاسم ستطابق. إذا لم تصل الحزمة عبر جهاز جسر، فلن تطابق هذه الحزمة هذا الخيار، ما لم يُستخدم '!'.
[!] --physdev-out name
اسم منفذ جسر ستُرسل عبره حزمة (للحزم المجسرة الداخلة إلى السلاسل FORWARD وPOSTROUTING). إذا انتهى اسم الواجهة بـ "+"، فإن أي واجهة تبدأ بهذا الاسم ستطابق.
[!] --physdev-is-in
يطابق إذا دخلت الحزمة عبر واجهة جسر.
[!] --physdev-is-out
يطابق إذا ستغادر الحزمة عبر واجهة جسر.
[!] --physdev-is-bridged
يطابق إذا كانت الحزمة تُجسر وبالتالي لا تُوجّه. هذا مفيد فقط في السلاسل FORWARD وPOSTROUTING.

pkttype

تطابق هذه الوحدة نوع حزمة طبقة الارتباط.

[!] --pkt-type {unicast|broadcast|multicast}

policy

تطابق هذه الوحدة السياسة المستخدمة من قبل IPsec لمعالجة حزمة.

يُستخدم لتحديد ما إذا كانت المطابقة للسياسة المستخدمة لفك التغليف أو السياسة التي ستُستخدم للتغليف. in صالح في السلاسل PREROUTING, INPUT و FORWARD، و out صالح في السلاسل POSTROUTING, OUTPUT و FORWARD.
يطابق إذا كانت الحزمة خاضعة لمعالجة IPsec. لا يمكن دمج --pol none مع --strict.
يختار ما إذا كانت المطابقة للسياسة الدقيقة أو المطابقة إذا تطابقت أي قاعدة من السياسة مع السياسة المعطاة.

لكل عنصر سياسة سيتم وصفه، يمكن استخدام خيار واحد أو أكثر من الخيارات التالية. عندما يكون --strict ساري المفعول، يجب استخدام خيار واحد على الأقل لكل عنصر.

[!] --reqid id
يطابق reqid لقاعدة السياسة. يمكن تحديد reqid باستخدام setkey(8) مع unique:id كمستوى.
[!] --spi spi
يطابق SPI لـ SA.
[!] --proto {ah|esp|ipcomp}
يطابق بروتوكول التغليف.
[!] --mode {tunnel|transport}
يطابق وضع التغليف.
[!] --tunnel-src addr[/mask]
يطابق عنوان نقطة النهاية المصدر لـ SA في وضع النفق. صالح فقط مع --mode tunnel.
[!] --tunnel-dst addr[/mask]
يطابق عنوان نقطة النهاية الوجهة لـ SA في وضع النفق. صالح فقط مع --mode tunnel.
ابدأ العنصر التالي في مواصفات السياسة. يمكن استخدامه فقط مع --strict.

quota

ينفذ حصص الشبكة عن طريق إنقاص عداد بايت مع كل حزمة. يطابق الشرط حتى يصل عداد البايت إلى الصفر. يُعكس السلوك مع النفي (أي لا يطابق الشرط حتى يصل عداد البايت إلى الصفر).

[!] --quota بايت
الحصة بالبايت.

مقدر المعدل

يمكن لمقدر المعدل المطابقة على المعدلات المقدرة كما تُجمع بواسطة هدف RATEEST. يدعم المطابقة على قيم bps/pps المطلقة، ومقارنة مقدرَي معدل، والمطابقة على الفرق بين مقدرَي معدل.

لفهم أفضل للخيارات المتاحة، هذه كل التركيبات الممكنة:

مطلق:
  • rateest عامل rateest-bps
  • rateest عامل rateest-pps
مطلق + دلتا:
  • (rateest ناقص rateest-bps1) عامل rateest-bps2
  • (rateest ناقص rateest-pps1) عامل rateest-pps2
نسبي:
  • rateest1 عامل rateest2 rateest-bps(بدون معدل!)
  • rateest1 عامل rateest2 rateest-pps(بدون معدل!)
نسبي + دلتا:
  • (rateest1 ناقص rateest-bps1) عامل (rateest2 ناقص rateest-bps2)
  • (rateest1 ناقص rateest-pps1) عامل (rateest2 ناقص rateest-pps2)
لكل مقدر (سواء في الوضع المطلق أو النسبي)، يُحسب الفرق بين معدل التدفق الذي يحدده المقدر والقيمة الثابتة المختارة مع خيارات BPS/PPS. إذا كان معدل التدفق أعلى من BPS/PPS المحدد، يُستخدم 0 بدلاً من قيمة سالبة. بعبارة أخرى، يُستخدم "max(0, rateest#_rate - rateest#_bps)".
[!] --rateest-lt
يطابق إذا كان المعدل أقل من المعدل/المقدر المعطى.
[!] --rateest-gt
يطابق إذا كان المعدل أكبر من المعدل/المقدر المعطى.
[!] --rateest-eq
يطابق إذا كان المعدل مساوياً للمعدل/المقدر المعطى.

في ما يُسمى "الوضع المطلق"، يُستخدم مقدر معدل واحد فقط ويُقارن بقيمة ثابتة، بينما في "الوضع النسبي"، يُقارن مقدرا معدل ببعضهما البعض.

اسم مقدر المعدل الواحد للوضع المطلق.
اسما مقدرَي المعدل للوضع النسبي.
قارن المقدر(ات) بالبايت أو الحزم في الثانية، وقارنها بالقيمة المختارة. انظر قائمة النقاط أعلاه لمعرفة أي خيار يُستخدم في أي حالة. يمكن استخدام لاحقة وحدة — المتاحة هي: bit, [kmgt]bit, [KMGT]ibit, Bps, [KMGT]Bps, [KMGT]iBps.

مثال: هذا ما يمكن استخدامه لتوجيه اتصالات البيانات الصادرة من خادم FTP عبر خطين بناءً على عرض النطاق الترددي المتاح وقت بدء اتصال البيانات:

# تقدير المعدلات الصادرة

iptables -t mangle -A POSTROUTING -o eth0 -j RATEEST --rateest-name eth0 --rateest-interval 250ms --rateest-ewma 0.5s

iptables -t mangle -A POSTROUTING -o ppp0 -j RATEEST --rateest-name ppp0 --rateest-interval 250ms --rateest-ewma 0.5s

# الوسم بناءً على عرض النطاق الترددي المتاح

iptables -t mangle -A balance -m conntrack --ctstate NEW -m helper --helper ftp -m rateest --rateest-delta --rateest1 eth0 --rateest-bps1 2.5mbit --rateest-gt --rateest2 ppp0 --rateest-bps2 2mbit -j CONNMARK --set-mark 1

iptables -t mangle -A balance -m conntrack --ctstate NEW -m helper --helper ftp -m rateest --rateest-delta --rateest1 ppp0 --rateest-bps1 2mbit --rateest-gt --rateest2 eth0 --rateest-bps2 2.5mbit -j CONNMARK --set-mark 2

iptables -t mangle -A balance -j CONNMARK --restore-mark

realm (خاص بـ IPv4)

يطابق عالم التوجيه. تُستخدم عوالم التوجيه في إعدادات التوجيه المعقدة التي تتضمن بروتوكولات توجيه ديناميكية مثل BGP.

[!] --realm قيمة[/قناع]
يطابق رقم عالم معين (وقناع اختياري). إذا لم يكن رقمًا، يمكن أن تكون القيمة عالمًا مسمى من /etc/iproute2/rt_realms (لا يمكن استخدام القناع في هذه الحالة). كل من القيمة والقناع هما عددان صحيحان غير موقعين بأربعة بايت ويمكن تحديدهما بالنظام العشري، أو السداسي عشري (بالبادئة "0x") أو الثماني (إذا أُعطي صفر بادئ).

recent

يسمح لك بإنشاء قائمة بعناوين IP ديناميكيًا ثم المطابقة ضد تلك القائمة بعدة طرق مختلفة.

على سبيل المثال، يمكنك إنشاء قائمة "أشرار" من الأشخاص الذين يحاولون الاتصال بالمنفذ 139 على جدار الحماية الخاص بك ثم إسقاط جميع الحزم المستقبلية منهم دون اعتبارهم.

--set و --rcheck و --update و --remove متنافية.

حدد القائمة لاستخدامها للأوامر. إذا لم يُعطَ اسم، فسيُستخدم DEFAULT.
[!] --set
سيُضيف عنوان المصدر للحزمة إلى القائمة. إذا كان عنوان المصدر موجودًا بالفعل في القائمة، فسيُحدّث الإدخال الحالي. سيعيد هذا دائمًا النجاح (أو الفشل إذا مُرر !).
مطابقة/حفظ عنوان المصدر لكل حزمة في جدول القائمة الحديثة. هذا هو المبدئي.
مطابقة/حفظ عنوان الوجهة لكل حزمة في جدول القائمة الحديثة.
قناع الشبكة الذي يُطبق على هذه القائمة الحديثة.
[!] --rcheck
تحقق مما إذا كان عنوان المصدر للحزمة موجودًا حاليًا في القائمة.
[!] --update
مثل --rcheck، باستثناء أنه يُحدّث الطابع الزمني لـ"آخر مشاهدة" إذا تطابق.
[!] --remove
تحقق مما إذا كان عنوان المصدر للحزمة موجودًا حاليًا في القائمة، وإذا كان كذلك، يُزال ذلك العنوان من القائمة وتُعيد القاعدة قيمة صواب. إذا لم يُعثر على العنوان، تُعاد قيمة خطأ.
يجب استخدام هذا الخيار مع أحد --rcheck أو --update. عند استخدامه، يُضيّق المطابقة لتحدث فقط عندما يكون العنوان في القائمة وشوهد خلال آخر عدد محدد من الثواني.
يمكن استخدام هذا الخيار فقط مع --seconds. عند استخدامه، يؤدي ذلك إلى تطهير الإدخالات الأقدم من آخر عدد محدد من الثواني.
يجب استخدام هذا الخيار مع أحد --rcheck أو --update. عند استخدامه، يُضيّق المطابقة لتحدث فقط عندما يكون العنوان في القائمة وتكون الحزم قد استُقبلت بقيمة أكبر من أو تساوي القيمة المعطاة. يمكن استخدام هذا الخيار مع --seconds لإنشاء مطابقة أضيق تتطلب عددًا معينًا من الزيارات ضمن إطار زمني محدد.
يمكن استخدام هذا الخيار فقط مع أحد --rcheck أو --update. عند استخدامه، يُضيّق المطابقة لتحدث فقط عندما يكون العنوان في القائمة ويتطابق TTL للحزمة الحالية مع تلك الخاصة بالحزمة التي أصابت قاعدة --set. قد يكون هذا مفيدًا إذا كانت لديك مشكلات مع أشخاص يزورون عنوان مصدرهم لتعطيل خدمتك عبر هذه الوحدة بمنع الآخرين من الوصول إلى موقعك عن طريق إرسال حزم مزيفة إليك.

أمثلة:

iptables -A FORWARD -m recent --name badguy --rcheck --seconds 60 -j DROP
iptables -A FORWARD -p tcp -i eth0 --dport 139 -m recent --name badguy --set -j DROP

/proc/net/xt_recent/* هي القوائم الحالية للعناوين والمعلومات حول كل مدخل من كل قائمة.

يمكن قراءة كل ملف في /proc/net/xt_recent/ لعرض القائمة الحالية أو كتابته باستخدام الأوامر التالية لتعديل القائمة:

لإضافة addr إلى القائمة DEFAULT
لإزالة addr من القائمة DEFAULT
لتفريغ القائمة DEFAULT (إزالة جميع المدخلات).

تقبل الوحدة نفسها معاملات، المبدئيات موضحة:

عدد العناوين المتذكرة لكل جدول.
عدد الحزم لكل عنوان متذكر. هذا المعامل مهمل منذ إصدار النواة 3.19 الذي بدأ بحساب حجم الجدول بناءً على المعامل --hitcount المعطى.
حجم جدول التجزئة. 0 يعني حسابه بناءً على ip_list_tot بتقريبه لأعلى إلى القوة التالية من اثنين (مع مبدئية ip_list_tot إلى 100، سيحسب ip_list_hash_size إلى 128 مبدئيًا).
أذونات ملفات /proc/net/xt_recent/*.
UID الرقمي لملكية ملفات /proc/net/xt_recent/*.
GID الرقمي لملكية ملفات /proc/net/xt_recent/*.

rpfilter

ينفذ اختبار مرشح المسار العكسي على حزمة. إذا أُرسل رد على الحزمة عبر نفس الواجهة التي وصلت منها الحزمة، فستطابق الحزمة. لاحظ أنه، على عكس rp_filter داخل النواة، لا تُعامل الحزم المحمية بواسطة IPSec بشكل خاص. ادمج هذه المطابقة مع مطابقة السياسة إذا أردت ذلك. أيضًا، الحزم الواصلة عبر واجهة الاسترجاع مسموح بها دائمًا. يمكن استخدام هذه المطابقة فقط في سلسلة PREROUTING لجدول raw أو mangle.

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

مثال لتسجيل وإسقاط الحزم الفاشلة في اختبار مرشح المسار العكسي:

iptables -t raw -N RPFILTER

iptables -t raw -A RPFILTER -m rpfilter -j RETURN

iptables -t raw -A RPFILTER -m limit --limit 10/minute -j NFLOG --nflog-prefix "rpfilter drop"

iptables -t raw -A RPFILTER -j DROP

iptables -t raw -A PREROUTING -j RPFILTER

مثال لإسقاط الحزم الفاشلة، بدون تسجيل:

iptables -t raw -A RPFILTER -m rpfilter --invert -j DROP

rt (خاص بـ IPv6)

طابق على رأس التوجيه IPv6

[!] --rt-type type
طابق النوع (رقمي).
[!] --rt-segsleft num[:num]
طابق حقل `القطاعات المتبقية' (نطاق).
[!] --rt-len length
طابق طول هذا الرأس.
طابق الحقل المحجوز أيضًا (type=0)
طابق عناوين type=0 (قائمة).
قائمة عناوين type=0 ليست قائمة صارمة.

sctp

تطابق هذه الوحدة رؤوس بروتوكول نقل التحكم في التدفق.

[!] --source-port,--sport منفذ[:منفذ]
[!] --destination-port,--dport منفذ[:منفذ]
[!] --chunk-types {all|any|only} chunktype[:flags] [...]
يشير حرف العلم بالأحرف الكبيرة إلى أن العلم يجب أن يطابق إذا كان مضبوطًا، وبالأحرف الصغيرة يشير إلى المطابقة إذا لم يكن مضبوطًا.

أنواع المطابقة:

طابق إذا كانت جميع أنواع القطع المعطاة موجودة وتطابق الأعلام.
طابق إذا كان أي من أنواع القطع المعطاة موجوداً مع الأعلام المعطاة.
فقط
طابق إذا كانت أنواع القطع المعطاة فقط موجودة مع الأعلام المعطاة ولا يوجد أي منها مفقود.

أنواع القطع: DATA INIT INIT_ACK SACK HEARTBEAT HEARTBEAT_ACK ABORT SHUTDOWN SHUTDOWN_ACK ERROR COOKIE_ECHO COOKIE_ACK ECN_ECNE ECN_CWR SHUTDOWN_COMPLETE I_DATA RE_CONFIG PAD ASCONF ASCONF_ACK FORWARD_TSN I_FORWARD_TSN

الأعلام المتاحة لنوع القطعة
DATA I U B E i u b e
I_DATA I U B E i u b e
ABORT T t
SHUTDOWN_COMPLETE T t

(الأحرف الصغيرة تعني أن العلم يجب أن يكون "مطفأً"، والأحرف الكبيرة تعني "مضاءً")

أمثلة:

iptables -A INPUT -p sctp --dport 80 -j DROP

iptables -A INPUT -p sctp --chunk-types any DATA,INIT -j DROP

iptables -A INPUT -p sctp --chunk-types any DATA:Be -j ACCEPT

مجموعة

تطابق هذه الوحدة مجموعات IP التي يمكن تعريفها بواسطة ipset(8).

[!] --match-set اسم_المجموعة علم[,علم]...
حيث الأعلام هي قائمة مفصولة بفواصل من مواصفات src و/أو dst ولا يمكن أن يكون هناك أكثر من ستة منها. وبالتالي الأمر

iptables -A FORWARD -m set --match-set test src,dst
سيطابق الحزم التي يمكن العثور فيها (إذا كان نوع المجموعة هو ipportmap) على زوج عنوان المصدر ومنفذ الوجهة في المجموعة المحددة. إذا كان نوع المجموعة المحددة أحادي البعد (مثلاً ipmap)، فسيطابق الأمر الحزم التي يمكن العثور على عنوان المصدر فيها في المجموعة المحددة.
إذا تم تحديد الخيار --return-nomatch وكان نوع المجموعة يدعم العلم nomatch، فإن المطابقة تُعكس: المطابقة مع عنصر مُعلّم بـ nomatch تُرجع true، بينما المطابقة مع عنصر عادي تُرجع false.
! --update-counters
إذا تم نفي العلم --update-counters، فإن عدادات الحزم والبايتات للعنصر المطابق في المجموعة لن تُحدّث. مبدئيًا، تُحدّث عدادات الحزم والبايتات.
! --update-subcounters
إذا تم نفي العلم --update-subcounters، فإن عدادات الحزم والبايتات للعنصر المطابق في المجموعة العضو من مجموعة من نوع قائمة لن تُحدّث. مبدئيًا، تُحدّث عدادات الحزم والبايتات.
[!] --packets-eq قيمة
إذا طابقت الحزمة عنصرًا في المجموعة، طابق فقط إذا طابق عداد حزم العنصر القيمة المعطاة أيضًا.
إذا طابقت الحزمة عنصرًا في المجموعة، طابق فقط إذا كان عداد حزم العنصر أقل من القيمة المعطاة أيضًا.
إذا طابقت الحزمة عنصرًا في المجموعة، طابق فقط إذا كان عداد حزم العنصر أكبر من القيمة المعطاة أيضًا.
[!] --bytes-eq قيمة
إذا طابقت الحزمة عنصرًا في المجموعة، طابق فقط إذا طابق عداد بايتات العنصر القيمة المعطاة أيضًا.
إذا طابقت الحزمة عنصرًا في المجموعة، طابق فقط إذا كان عداد بايتات العنصر أقل من القيمة المعطاة أيضًا.
إذا طابقت الحزمة عنصرًا في المجموعة، طابق فقط إذا كان عداد بايتات العنصر أكبر من القيمة المعطاة أيضًا.

يتم تجاهل الخيارات والأعلام المتعلقة بعدادات الحزم والبايتات عندما تم تعريف المجموعة بدون دعم العداد.

يمكن استبدال الخيار --match-set بـ --set إذا لم يتعارض ذلك مع خيار من الإضافات الأخرى.

استخدام -m set يتطلب توفير دعم ipset في النواة، وهو متاح للنوى القياسية منذ Linux 2.6.39.

socket

يطابق هذا إذا أمكن العثور على مقبس TCP/UDP مفتوح عن طريق إجراء بحث عن المقبس على الحزمة. يطابق إذا كان هناك مقبس استماع مرتبط بقيمة غير صفرية أو قائم (ربما بعنوان غير محلي). يتم البحث باستخدام مجموعة packet لحزم TCP/UDP، أو رأس TCP/UDP الأصلي embedded في حزمة خطأ ICMP/ICPMv6.

تجاهل المقابس غير الشفافة.
لا تتجاهل المقابس المرتبطة بعنوان 'any'. لن يقبل تطابق المقبس المستمعين المرتبطين بقيمة صفرية مبدئيًا، لأن الخدمات المحلية قد تعترض حركة المرور التي كان سيتم توجيهها بخلاف ذلك. لذلك، لهذا الخيار آثار أمنية عند استخدامه لمطابقة حركة المرور الموجهة لإعادة توجيه هذه الحزم إلى الجهاز المحلي باستخدام التوجيه السياسي. عند استخدام تطابق المقبس لتنفيذ وكلاء شفافين بالكامل مرتبطين بعناوين غير محلية، يُوصى باستخدام الخيار --transparent بدلاً من ذلك.

مثال (بافتراض أن الحزم ذات العلامة 1 تُسلم محليًا):

-t mangle -A PREROUTING -m socket --transparent -j MARK --set-mark 1
اضبط علامة الحزمة على علامة المقبس المطابق. يمكن دمجه مع الخيارين --transparent و--nowildcard لتقييد المقابس التي سيتم مطابقتها عند استعادة علامة الحزمة.

مثال: يفتح تطبيق مقبسين شفافين (IP_TRANSPARENT) ويضبط علامة عليهما باستخدام خيار المقبس SO_MARK. يمكننا تصفية الحزم المطابقة:

-t mangle -I PREROUTING -m socket --transparent --restore-skmark -j action
-t mangle -A action -m mark --mark 10 -j action2
-t mangle -A action -m mark --mark 11 -j action3

state

إضافة "state" هي مجموعة فرعية من وحدة "conntrack". تسمح "state" بالوصول إلى حالة تتبع الاتصال لهذه الحزمة.

[!] --state state
حيث state هي قائمة مفصولة بفواصل من حالات الاتصال للمطابقة. يتم التعرف فقط على مجموعة فرعية من الحالات التي تفهمها "conntrack": INVALID وESTABLISHED وNEW وRELATED أو UNTRACKED. لوصفها، انظر عنوان "conntrack" في دليل الصفحة هذا.

statistic

تطابق هذه الوحدة الحزم بناءً على شرط إحصائي معين. تدعم وضعين متميزين يمكن ضبطهما باستخدام الخيار --mode.

الخيارات المدعومة:

اضبط وضع المطابقة لقاعدة المطابقة، الأوضاع المدعومة هي random و nth.
[!] --probability p
اضبط احتمال مطابقة حزمة عشوائيًا. يعمل فقط مع وضع random. يجب أن يكون p بين 0.0 و 1.0. الدقة المدعومة هي بزيادات 1/2147483648.
[!] --every n
طابق حزمة واحدة كل n حزمة. يعمل فقط مع وضع nth (انظر أيضًا خيار --packet).
اضبط قيمة العداد الأولية (0 <= p <= n-1، المبدئي 0) لوضع nth.

سلسلة

يطابق هذا الوحدة سلسلة معينة باستخدام استراتيجية مطابقة نمط. يتطلب نواة لينكس >= 2.6.14.

اختر استراتيجية مطابقة النمط. (bm = Boyer-Moore، kmp = Knuth-Pratt-Morris)
اضبط الإزاحة التي يبدأ منها البحث عن أي تطابق. إذا لم يُمرر، المبدئي هو 0.
اضبط الإزاحة التي يجب المسح حتىها. أي، البايت offset (العد من 0) هو آخر بايت يُمسح والموضع الأقصى لآخر حرف في pattern. إذا لم يُمرر، المبدئي هو حجم الحزمة.
[!] --string pattern
يطابق النمط المعطى.
[!] --hex-string pattern
يطابق النمط المعطى بترميز سداسي عشري.
تجاهل حالة الأحرف عند البحث.
أمثلة:
# يمكن استخدام نمط السلسلة للأحرف النصية البسيطة.
iptables -A INPUT -p tcp --dport 80 -m string --algo bm --string 'GET /index.html' -j LOG
# يمكن استخدام نمط السلسلة السداسية للأحرف غير القابلة للطباعة، مثل |0D 0A| أو |0D0A|.
iptables -p udp --dport 53 -m string --algo bm --from 40 --to 57 --hex-string '|03|www|09|netfilter|03|org|00|'

ملاحظة: نظرًا لأن Boyer-Moore (BM) يُجري عمليات بحث عن التطابقات من اليمين إلى اليسار وقد يُخزّن النواة حزمة في عدة كتل غير متجاورة، فمن الممكن أن تكون المطابقة موزعة على عدة كتل، وفي هذه الحالة لن تجدها هذه الخوارزمية.

إذا كنت ترغب في ضمان عدم حدوث مثل هذا الأمر أبدًا، فاستخدم خوارزمية Knuth-Pratt-Morris (KMP) بدلاً من ذلك. في الختام، اختر خوارزمية البحث عن السلسلة المناسبة وفقًا لحالة الاستخدام الخاصة بك.

على سبيل المثال، إذا كنت تستخدم الوحدة للتصفية أو NIDS أو أي غرض مشابه يركز على الأمان، فاختر KMP. من ناحية أخرى، إذا كنت تهتم حقًا بالأداء — على سبيل المثال، تُصنف الحزم لتطبيق سياسات جودة الخدمة (QoS) — ولا تمانع في فقدان التطابقات المحتملة الموزعة على عدة أجزاء، فاختر BM.

tcp

يمكن استخدام هذه الامتدادات إذا تم تحديد `--protocol tcp`. توفر الخيارات التالية:

[!] --source-port,--sport منفذ[:منفذ]
تحديد منفذ المصدر أو نطاق المنافذ. يمكن أن يكون اسم خدمة أو رقم منفذ. يمكن أيضًا تحديد نطاق شامل باستخدام التنسيق first:last. إذا تم حذف المنفذ الأول، يُفترض "0"؛ إذا تم حذف الأخير، يُفترض "65535". العلامة --sport هي اسم مستعار مناسب لهذا الخيار.
[!] --destination-port,--dport منفذ[:منفذ]
تحديد منفذ الوجهة أو نطاق المنافذ. العلامة --dport هي اسم مستعار مناسب لهذا الخيار.
[!] --tcp-flags mask comp
المطابقة عندما تكون أعلام TCP كما هو محدد. الوسيطة الأولى mask هي الأعلام التي يجب فحصها، مكتوبة كقائمة مفصولة بفواصل، والوسيطة الثانية comp هي قائمة مفصولة بفواصل من الأعلام التي يجب تعيينها. الأعلام هي: SYN ACK FIN RST URG PSH ALL NONE. وبالتالي الأمر

iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN
سيتطابق فقط مع الحزم التي تحتوي على علم SYN مضبوطًا، وأعلام ACK وFIN وRST غير مضبوطة.
[!] --syn
تطابق فقط حزم TCP مع تعيين بت SYN ومسح بتات ACK وRST وFIN. تُستخدم هذه الحزم لطلب بدء اتصال TCP؛ على سبيل المثال، حظر مثل هذه الحزم القادمة إلى واجهة سيمنع اتصالات TCP الواردة، لكن اتصالات TCP الصادرة لن تتأثر. هذا مكافئ لـ --tcp-flags SYN,RST,ACK,FIN SYN. إذا سبقت العلامة "!" الخيار "--syn"، يُعكس معنى الخيار.
[!] --tcp-option number
المطابقة إذا تم تعيين خيار TCP.

tcpmss

يطابق هذا حقل MSS (الحجم الأقصى للقطعة) لرأس TCP. يمكنك استخدام هذا فقط على حزم TCP SYN أو SYN/ACK، حيث أن MSS يتم التفاوض عليه فقط أثناء المصافحة TCP عند بدء الاتصال.

[!] --mss قيمة[:قيمة]
يطابق قيمة أو نطاق MSS معين لـ TCP. إذا تم تحديد نطاق، يجب أن تكون القيمة الثانية أكبر من أو تساوي القيمة الأولى.

time

يطابق هذا إذا كان وقت/تاريخ وصول الحزمة ضمن نطاق معين. جميع الخيارات اختيارية، ولكن يتم دمجها بعملية AND عند تحديدها. جميع الأوقات تُفسر كـ UTC بشكل مبدئي.

يطابق فقط خلال الوقت المحدد، والذي يجب أن يكون بترميز ISO 8601 "T". النطاق الزمني الممكن هو 1970-01-01T00:00:00 إلى 2038-01-19T04:17:07.
إذا لم يتم تحديد --datestart أو --datestop، فسيتم المبدئي إلى 1970-01-01 و 2038-01-19 على التوالي.
يطابق فقط خلال الوقت النهاري المحدد. النطاق الزمني الممكن هو 00:00:00 إلى 23:59:59. الأصفار البادئة مسموح بها (مثل "06:03") ويتم تفسيرها بشكل صحيح كأساس-10.
[!] --monthdays يوم[,يوم...]
يطابق فقط في الأيام المحددة من الشهر. القيم الممكنة هي 1 إلى 31. لاحظ أن تحديد 31 لن يطابق بالطبع الأشهر التي لا تحتوي على يوم 31؛ نفس الشيء ينطبق على فبراير الذي يحتوي على 28 أو 29 يومًا.
[!] --weekdays يوم[,يوم...]
يطابق فقط في أيام الأسبوع المحددة. القيم الممكنة هي Mon، Tue، Wed، Thu، Fri، Sat، Sun، أو القيم من 1 إلى 7 على التوالي. يمكنك أيضًا استخدام متغيرات مكونة من حرفين (Mo، Tu، إلخ).
عندما تكون --timestop أصغر من قيمة --timestart، يطابق هذا كفترة زمنية واحدة بدلاً من فترات زمنية منفصلة. انظر الأمثلة.
استخدم المنطقة الزمنية للنواة بدلاً من UTC لتحديد ما إذا كانت الحزمة تفي باللوائح الزمنية.

حول المناطق الزمنية للنواة: يحتفظ لينكس بوقت النظام بصيغة UTC، ويفعل ذلك دائمًا. عند الإقلاع، يتم تهيئة وقت النظام من مصدر زمني مرجعي. حيث لا يحتوي هذا المصدر الزمني على معلومات المنطقة الزمنية، مثل ساعة RTC CMOS x86، سيتم افتراض UTC. إذا كان المصدر الزمني ليس بصيغة UTC، يجب على مساحة المستخدم توفير وقت النظام الصحيح والمنطقة الزمنية للنواة بمجرد حصولها على المعلومات.

الوقت المحلي هو ميزة فوق وقت النظام (المستقل عن المنطقة الزمنية). لكل عملية فكرتها الخاصة عن الوقت المحلي، المحدد عبر متغير البيئة TZ. للنواة أيضًا متغير إزاحة المنطقة الزمنية الخاص بها. يحدد متغير بيئة المستخدم TZ كيفية عرض وقت النظام المعتمد على UTC، مثلًا عند تشغيل date(1)، أو ما تراه على ساعة سطح المكتب. قد يتحلل سلسلة TZ إلى إزاحات مختلفة في تواريخ مختلفة، وهو ما يُمكن القفز الزمني الآلي في مساحة المستخدم عند تغيير التوقيت الصيفي. يُستخدم متغير إزاحة المنطقة الزمنية للنواة عندما تحتاج للتحويل بين مصادر غير UTC، مثل أنظمة ملفات FAT، إلى UTC (لأن الأخير هو ما يستخدمه باقي النظام).

التحذير بشأن المنطقة الزمنية للنواة هو أن توزيعات لينكس قد تتجاهل تعيين المنطقة الزمنية للنواة، وبدلًا من ذلك تعين وقت النظام فقط. حتى لو قامت توزيعة معينة بتعيين المنطقة الزمنية عند الإقلاع، فإنها عادة لا تُبقي إزاحة المنطقة الزمنية للنواة — والتي تتغير مع التوقيت الصيفي — محدثة. لن يلمس ntpd المنطقة الزمنية للنواة، لذا تشغيله لن يحل المشكلة. وبناءً عليه، قد يواجه المرء منطقة زمنية دائمًا +0000، أو منطقة خاطئة نصف العام. ولهذا، يُثبط بشدة استخدام --kerneltz.

أمثلة. للمطابقة في عطلات نهاية الأسبوع، استخدم:

-m time --weekdays Sa,Su

أو، للمطابقة (مرة واحدة) في كتلة عطلة وطنية:

-m time --datestart 2007-12-24 --datestop 2007-12-27

بما أن وقت الإيقاف شامل فعليًا، ستحتاج إلى وقت الإيقاف التالي لعدم مطابقة الثانية الأولى من اليوم الجديد:

-m time --datestart 2007-01-01T17:00 --datestop 2007-01-01T23:59:59

خلال ساعة الغداء:

-m time --timestart 12:30 --timestop 13:30

الجمعة الرابعة في الشهر:

-m time --weekdays Fr --monthdays 22,23,24,25,26,27,28

(لاحظ أن هذا يستغل خاصية رياضية معينة. ليس من الممكن قول "الخميس الرابع أو الجمعة الرابعة" في قاعدة واحدة. لكنه ممكن مع قواعد متعددة.)

المطابقة عبر الأيام قد لا تفعل ما هو متوقع. على سبيل المثال،

-m time --weekdays Mo --timestart 23:00 --timestop 01:00 سيطابق الاثنين، لمدة ساعة من منتصف الليل إلى 1 صباحًا، ثم مرة أخرى لمدة ساعة أخرى من 23:00 فصاعدًا. إذا كان هذا غير مرغوب، مثلًا إذا كنت تريد 'مطابقة لمدة ساعتين من الاثنين 23:00 فصاعدًا'، تحتاج أيضًا إلى تحديد الخيار --contiguous في المثال أعلاه.

tos

تطابق هذه الوحدة حقل نوع الخدمة ذو 8 بت في رأس IPv4 (أي بما في ذلك بتات "الأسبقية") أو حقل الأولوية (أيضًا 8 بت) في رأس IPv6.

[!] --tos قيمة[/قناع]
يطابق الحزم بقيمة علامة TOS المعطاة. إذا تم تحديد قناع، يتم إجراء عملية AND منطقية مع علامة TOS قبل المقارنة.
[!] --tos رمز
يمكنك تحديد اسم رمزي عند استخدام مطابقة tos لـ IPv4. يمكن الحصول على قائمة أسماء TOS المعترف بها باستدعاء iptables مع -m tos -h. لاحظ أن هذا يستلزم قناعًا بقيمة 0x3F، أي جميع البتات باستثناء بتات ECN.

ttl (خاص بـ IPv4)

تطابق هذه الوحدة حقل وقت الحياة في رأس IP.

[!] --ttl-eq ttl
تطابق قيمة TTL المعطاة.
تطابق إذا كانت TTL أكبر من قيمة TTL المعطاة.
تطابق إذا كانت TTL أقل من قيمة TTL المعطاة.

u32

تختبر U32 ما إذا كانت الكميات المستخرجة من حزمة حتى 4 بايتات لها قيم محددة. مواصفات ما يُستخرج عامة بما يكفي لإيجاد بيانات عند إزاحات معينة من رؤوس TCP أو حمولاتها.

[!] --u32 اختبارات
الوسيطة تعادل برنامجًا بلغة صغيرة موصوفة أدناه.
اختبارات := موقع "=" قيمة | اختبارات "&&" موقع "=" قيمة
قيمة := نطاق | قيمة "," نطاق
نطاق := رقم | رقم ":" رقم

رقم واحد، n، يُفسر مثل n:n. n:m يُفسر كنطاق الأرقام >=n و <=m.

موقع := رقم | موقع عامل رقم
عامل := "&" | "<<" | ">>" | "@"

العوامل & و << و >> و && تعني نفس المعنى في C. = هو في الواقع عامل انتماء مجموعة وبناء القيمة يصف مجموعة. العامل @ هو ما يسمح بالانتقال إلى الرأس التالي ويُوصف بمزيد من التفصيل أدناه.

توجد حاليًا بعض الحدود الاصطناعية في التنفيذ على حجم الاختبارات:

*
لا يزيد عن 10 من "=" (و 9 من "&&") في وسيط u32
*
لا يزيد عن 10 نطاقات (و 9 فواصل) لكل قيمة
*
لا يزيد عن 10 أرقام (و 9 عوامل تشغيل) لكل موقع

لوصف معنى الموقع، تخيل الآلة التالية التي تفسره. هناك ثلاثة سجلات:

A من النوع char *، مبدئيًا عنوان رأس IP
B و C عددان صحيحان غير موقعين 32 بت، مبدئيًا صفر

التعليمات هي:

رقم
B = رقم;
C = (*(A+B)<<24) + (*(A+B+1)<<16) + (*(A+B+2)<<8) + *(A+B+3)
&رقم
C = C & رقم
<< رقم
C = C << رقم
>> رقم
C = C >> رقم
@رقم
A = A + C; ثم نفذ التعليمات رقم

أي وصول للذاكرة خارج [skb->data,skb->end] يتسبب في فشل المطابقة. وإلا فإن نتيجة الحساب هي القيمة النهائية لـ C.

المسافات البيضاء مسموح بها ولكنها غير مطلوبة في الاختبارات. ومع ذلك، فإن الأحرف التي تظهر هناك قد تتطلب اقتباس الصدفة، لذا من الجيد وضع الوسائط بين علامتي اقتباس.

مثال:

مطابقة حزم IP ذات الطول الإجمالي >= 256
يحتوي رأس IP على حقل الطول الإجمالي في البايتات 2–3.
--u32 "0 & 0xFFFF = 0x100:0xFFFF"
قراءة البايتات 0–3
ثم إجراء عملية AND مع 0xFFFF (لإعطاء البايتات 2–3)، واختبار ما إذا كان ذلك ضمن النطاق [0x100:0xFFFF]

مثال: (أكثر واقعية، وبالتالي أكثر تعقيداً)

مطابقة حزم ICMP ذات النوع icmp 0
الاختبار الأول بأنها حزمة ICMP، صحيح إذا وفقط إذا كان البايت 9 (البروتوكول) = 1
--u32 "6 & 0xFF = 1 && ...
قراءة البايتات 6–9، استخدام & لتجاهل البايتات 6–8 ومقارنة النتيجة بـ 1. الاختبار التالي بأنها ليست جزءاً. (إذا كانت كذلك، فقد تكون جزءاً من حزمة كهذه لكن لا يمكننا الجزم دائماً.) ملاحظة: هذا الاختبار ضروري عموماً إذا أردت مطابقة أي شيء يتجاوز رأس IP. آخر 6 بتات من البايت 6 وكل البايت 7 تكون 0 إذا وفقط إذا كانت هذه حزمة كاملة (وليست جزءاً). بدلاً من ذلك، يمكنك السماح بالأجزاء الأولى باختبار آخر 5 بتات فقط من البايت 6.
... 4 & 0x3FFF = 0 && ...
الاختبار الأخير: البايت الأول بعد رأس IP (النوع) هو 0. هنا يجب استخدام بناء الجملة @. طول رأس IP (IHL) بكلمات 32 بت يُخزّن في النصف الأيمن من البايت 0 من رأس IP نفسه.
... 0 >> 22 & 0x3C @ 0 >> 24 = 0"
الـ 0 الأولى تعني قراءة البايتات 0–3، >>22 تعني إزاحة ذلك 22 بتاً لليمين. إزاحة 24 بتاً ستعطي البايت الأول، لذا 22 بتاً فقط هي أربعة أضعاف ذلك بالإضافة إلى بضع بتات إضافية. &3C ثم تزيل البتتين الإضافيتين على اليمين وأول أربع بتات من البايت الأول. على سبيل المثال، إذا كان IHL=5، فإن رأس IP طوله 20 (4 × 5) بايت. في هذه الحالة، البايتات 0–1 هي (بالثنائي) xxxx0101 yyzzzzzz، >>22 تعطي القيمة ذات 10 بتات xxxx0101yy و &3C تعطي 010100. @ تعني استخدام هذا الرقم كإزاحة جديدة في الحزمة، وقراءة أربعة بايتات تبدأ من هناك. هذه هي أول 4 بايتات من حمولة ICMP، والتي البايت 0 منها هو نوع ICMP. لذلك، نقوم ببساطة بإزاحة القيمة 24 بتاً لليمين لتجاهل كل شيء عدا البايت الأول ومقارنة النتيجة بـ 0.

مثال:

البايتات 8–12 من حمولة TCP هي أي من 1، 2، 5 أو 8
أولاً نختبر أن الحزمة هي حزمة tcp (مشابهة لـ ICMP).
--u32 "6 & 0xFF = 6 && ...
ثم، نختبر أنها ليست جزءاً (نفس ما سبق).
... 0 >> 22 & 0x3C @ 12 >> 26 & 0x3C @ 8 = 1,2,5,8"
0>>22&3C كما سبق يحسب عدد البايتات في رأس IP. @ يجعل هذا الإزاحة الجديدة في الحزمة، وهي بداية رأس TCP. طول رأس TCP (مرة أخرى بكلمات 32 بت) هو النصف الأيسر من البايت 12 من رأس TCP. 12>>26&3C يحسب هذا الطول بالبايتات (مشابهاً لرأس IP سابقاً). "@" يجعل هذا الإزاحة الجديدة، وهي بداية حمولة TCP. أخيراً، 8 تقرأ البايتات 8–12 من الحمولة و = تتحقق مما إذا كانت النتيجة هي أي من 1، 2، 5 أو 8.

udp

يمكن استخدام هذه الإضافات إذا تم تحديد `--protocol udp`. توفر الخيارات التالية:

[!] --source-port,--sport منفذ[:منفذ]
تحديد منفذ المصدر أو نطاق المنافذ. راجع وصف خيار --source-port لإضافة TCP للتفاصيل.
[!] --destination-port,--dport منفذ[:منفذ]
تحديد منفذ الوجهة أو نطاق المنافذ. راجع وصف خيار --destination-port لإضافة TCP للتفاصيل.

إضافات الهدف

يمكن لـ iptables استخدام وحدات الهدف الموسعة: التالية مضمنة في التوزيعة القياسية.

التدقيق

ينشئ هذا الهدف سجلات تدقيق للحزم التي تصل إلى الهدف. يمكن استخدامه لتسجيل الحزم المقبولة والمحذوفة والمرفوضة. راجع auditd(8) للتفاصيل الإضافية.

تعيين نوع سجل التدقيق. بدءًا من linux-4.12، لم يعد لهذا الخيار تأثير على رسائل التدقيق المُنشأة. لا يزال مقبولاً من قبل iptables لأسباب التوافق، لكنه يُتجاهل.

مثال:

iptables -N AUDIT_DROP
iptables -A AUDIT_DROP -j AUDIT
iptables -A AUDIT_DROP -j DROP

المجموع الاختباري

يعمل هذا الهدف بشكل انتقائي حول التطبيقات المعطلة/القديمة. يمكن استخدامه فقط في جدول mangle.

حساب وملء المجموع الاختباري في حزمة تفتقر إلى مجموع اختباري. هذا مفيد بشكل خاص إذا كنت بحاجة إلى التعامل مع التطبيقات القديمة مثل عملاء dhcp، التي لا تعمل بشكل جيد مع تفريغ المجموع الاختباري، لكنك لا تريد تعطيل تفريغ المجموع الاختباري في جهازك.

التصنيف

تتيح لك هذه الوحدة تعيين قيمة skb->priority (وبالتالي تصنيف الحزمة إلى فئة CBQ محددة).

تعيين قيمة الفئة الرئيسية والثانوية. تُفسر القيم دائمًا على أنها سداسية عشرية حتى لو لم تُعط بادئة 0x.

CLUSTERIP (خاص بـ IPv4)

تتيح لك هذه الوحدة تكوين مجموعة بسيطة من العقد التي تشارك عنوان IP و MAC معينين دون وجود موازن تحميل صريح أمامها. يتم توزيع الاتصالات بشكل ثابت بين العقد في هذه المجموعة.

يرجى ملاحظة أن هدف CLUSTERIP يُعتبر مهملاً لصالح مطابقة cluster الأكثر مرونة وغير المقتصرة على IPv4.

أنشئ ClusterIP جديدًا. يجب عليك دائمًا تعيين هذا في القاعدة الأولى لـ ClusterIP معين.
حدد وضع التجزئة. يجب أن يكون واحدًا من sourceip أو sourceip-sourceport أو sourceip-sourceport-destport.
حدد عنوان MAC لـ ClusterIP. يجب أن يكون عنوان بث متعدد على طبقة الوصلة
عدد العقد الإجمالي داخل هذه المجموعة.
رقم العقدة المحلية داخل هذه المجموعة.
حدد البذرة العشوائية المستخدمة لتهيئة التجزئة.

CONNMARK

تضبط هذه الوحدة قيمة علامة netfilter المرتبطة باتصال. العلامة بعرض 32 بت.

صفر البتات المعطاة بواسطة mask وقم بعملية XOR لـ value في ctmark.
انسخ علامة الحزمة (nfmark) إلى علامة الاتصال (ctmark) باستخدام الأقنعة المعطاة. يتم تحديد قيمة nfmark الجديدة كما يلي:
ctmark = (ctmark & ~ctmask) ^ (nfmark & nfmask)
أي أن ctmask يحدد البتات المراد مسحها و nfmask يحدد بتات nfmark المراد XORها في ctmark. القيمة المبدئية لـ ctmask و nfmask هي 0xFFFFFFFF.
انسخ علامة الاتصال (ctmark) إلى علامة الحزمة (nfmark) باستخدام الأقنعة المعطاة. تُحدد قيمة ctmark الجديدة كالتالي:
nfmark = (nfmark & ~nfmask) ^ (ctmark & ctmask);
أي أن nfmask يحدد البتات المراد مسحها و ctmask يحدد بتات ctmark المراد XORها في nfmark. القيمة المبدئية لـ ctmask و nfmask هي 0xFFFFFFFF.
--restore-mark صالح فقط في جدول mangle.

المختصرات التالية متاحة لـ --set-xmark:

قم بعملية AND ثنائية للـ ctmark مع بتات. (مختصر لـ --set-xmark 0/بتات_مقلوبة، حيث بتات_مقلوبة هي النفي الثنائي لـ بتات.)
قم بعملية OR ثنائية للـ ctmark مع بتات. (مختصر لـ --set-xmark بتات/بتات.)
قم بعملية XOR ثنائية للـ ctmark مع بتات. (مختصر لـ --set-xmark بتات/0.)
اضبط علامة الاتصال. إذا تم تحديد قناع، فسيتم تعديل البتات المحددة في القناع فقط.
انسخ nfmark إلى ctmark. إذا تم تحديد قناع، فسيتم نسخ تلك البتات فقط.
انسخ ctmark إلى nfmark. إذا تم تحديد قناع، فسيتم نسخ تلك البتات فقط. هذا صالح فقط في جدول mangle.

CONNSECMARK

تنسخ هذه الوحدة العلامات الأمنية من الحزم إلى الاتصالات (إذا كانت غير موسومة)، ومن الاتصالات عائدة إلى الحزم (أيضًا فقط إذا كانت غير موسومة). تُستخدم عادةً مع SECMARK، وهي صالحة في جدول security (للتوافق العكسي مع النوى القديمة، فهي صالحة أيضًا في جدول mangle).

إذا كانت الحزمة تحمل علامة أمنية، انسخها إلى الاتصال إذا لم يكن الاتصال موسومًا.
إذا لم تكن الحزمة تحمل علامة أمنية، وكان الاتصال يحملها، فانسخ العلامة الأمنية من الاتصال إلى الحزمة.

CT

يحدد هدف CT معاملات لحزمة أو اتصالها المرتبط. يرفق الهدف إدخال تتبع اتصال "قالب" بالحزمة، والذي يُستخدم بعد ذلك بواسطة نواة conntrack عند تهيئة إدخال ct جديد. وبالتالي، هذا الهدف صالح فقط في جدول "raw".

يعطل تتبع الاتصال لهذه الحزمة.
استخدم المساعد المُعرّف بواسطة name للاتصال. هذا أكثر مرونة من تحميل وحدات مساعد conntrack بمنافذ محددة مسبقًا.
قم فقط بتوليد أحداث conntrack المحددة لهذا الاتصال. أنواع الأحداث الممكنة هي: new, related, destroy, reply, assured, protoinfo, helper, mark (يشير هذا إلى ctmark، وليس nfmark), natseqinfo, secmark (ctsecmark).
قم فقط بتوليد أحداث التوقع المحددة لهذا الاتصال. أنواع الأحداث الممكنة هي: new.
بالنسبة لحركة المرور القادمة من الاتجاه الأصلي، خصص هذه الحزمة للمنطقة id واجعل عمليات البحث تتم فقط في تلك المنطقة. إذا تم استخدام mark بدلاً من id، فتُشتق المنطقة من nfmark للحزمة.
بالنسبة لحركة المرور القادمة من اتجاه الرد، خصص هذه الحزمة للمنطقة id واجعل عمليات البحث تتم فقط في تلك المنطقة. إذا تم استخدام mark بدلاً من id، فتُشتق المنطقة من nfmark للحزمة.
خصص هذه الحزمة للمنطقة id واجعل عمليات البحث تتم فقط في تلك المنطقة. إذا تم استخدام mark بدلاً من id، فتُشتق المنطقة من nfmark للحزمة. افتراضيًا، الحزم لها منطقة 0. ينطبق هذا الخيار على كلا الاتجاهين.
استخدم سياسة المهلة المحددة بواسطة name للاتصال. يوفر هذا تعريفًا أكثر مرونة لسياسة المهلة مقارنة بقيم المهلة العامة المتاحة في /proc/sys/net/netfilter/nf_conntrack_*_timeout_*.

DNAT

يكون هذا الهدف صالحًا فقط في جدول nat، في سلاسل PREROUTING وOUTPUT، والسلاسل المعرفة من قبل المستخدم والتي تُستدعى فقط من تلك السلاسل. يحدد أن عنوان وجهة الحزمة يجب تعديله (وستُشوّه جميع الحزم المستقبلية في هذا الاتصال أيضًا)، ويجب التوقف عن فحص القواعد. يأخذ الخيارات التالية:

والذي يمكنه تحديد عنوان IP وجهة واحد جديد، أو نطاق شامل لعناوين IP. اختياريًا نطاق منفذ، إذا كانت القاعدة تحدد أيضًا أحد البروتوكولات التالية: tcp، udp، dccp أو sctp. إذا لم يُحدد نطاق منفذ، فلن يُعدّل منفذ الوجهة أبدًا. إذا لم يُحدد عنوان IP، فسيُعدّل منفذ الوجهة فقط. إذا أُعطي baseport، يُستخدم الفرق بين منفذ الوجهة الأصلي وقيمته كإزاحة في نطاق منفذ التعيين. يسمح هذا بإنشاء نطاقات تعيين منفذ منقولة وهو متاح منذ إصدار النواة 4.18. لمنفذ واحد أو baseport، يمكن استخدام اسم خدمة كما هو مدرج في /etc/services. إذا كان ipaddr عنوان IPv4 استرجاعي (أي 127.0.0.0/8) فيجب ضبط "net.ipv4.conf.*.route_localnet" sysctl لواجهة الإدخال على 1. وإلا ستُسقط الحزم بواسطة كود التوجيه كـ "martians".
عشوائية تعيين منفذ المصدر (النواة >= 2.6.22).
يعطي العميل نفس عنوان المصدر/الوجهة لكل اتصال. يحل هذا محل هدف SAME. دعم التعيينات المستمرة متاح منذ 2.6.29-rc2.
دعم IPv6 متاح منذ نوى لينكس >= 3.7.

DNPT (خاص بـ IPv6)

يوفر ترجمة بادئة شبكة IPv6 إلى IPv6 للوجهة بدون حالة (كما هو موصوف في RFC 6296).

يجب استخدام هذا الهدف في جدول mangle، وليس في جدول nat. يأخذ الخيارات التالية:

اضبط بادئة المصدر التي تريد ترجمتها والطول
اضبط بادئة الوجهة التي تريد استخدامها في الترجمة والطول

يجب استخدام هدف SNPT لإلغاء الترجمة. مثال:

ip6tables -t mangle -I POSTROUTING -s fd00::/64 ! -o vboxnet0 -j SNPT --src-pfx fd00::/64 --dst-pfx 2001:e20:2000:40f::/64
ip6tables -t mangle -I PREROUTING -i wlan0 -d 2001:e20:2000:40f::/64 -j DNPT --src-pfx 2001:e20:2000:40f::/64 --dst-pfx fd00::/64

قد تحتاج إلى تمكين وكيل الجوار IPv6:

sysctl -w net.ipv6.conf.all.proxy_ndp=1

يجب أيضًا استخدام الهدف NOTRACK لتعطيل تتبع الاتصال للتدفقات المترجمة.

DSCP

يغير هذا الهدف قيمة بتات DSCP داخل رأس TOS لحزمة IPv4. نظرًا لأن هذا يتلاعب بحزمة، يمكن استخدامه فقط في جدول mangle.

اضبط حقل DSCP على قيمة رقمية (يمكن أن تكون عشرية أو سداسية عشرية)
اضبط حقل DSCP على فئة DiffServ.

ECN (خاص بـ IPv4)

يعمل هذا الهدف بشكل انتقائي حول الثقوب السوداء المعروفة لـ ECN. يمكن استخدامه فقط في جدول mangle.

--ecn-tcp-remove
أزل جميع بتات ECN من رأس TCP. بالطبع، يمكن استخدامه فقط بالتزامن مع -p tcp.

HL (خاص بـ IPv6)

يُستخدم هذا لتعديل حقل حد القفز في رأس IPv6. حقل حد القفز مشابه لما يُعرف بقيمة TTL في IPv4. يمكن أن يكون ضبط أو زيادة حقل حد القفز خطيرًا جدًا، لذا يجب تجنبه بأي ثمن. هذا الهدف صالح فقط في جدول mangle.

لا تقم أبدًا بضبط أو زيادة القيمة على الحزم التي تغادر شبكتك المحلية!

اضبط حد القفز على `قيمة'.
إنقاص حد القفز بمقدار `القيمة` مرة.
زيادة حد القفز بمقدار `القيمة` مرة.

HMARK

مثل MARK، أي تعيين علامة جدار الحماية (fwmark)، لكن العلامة تُحسب من تجزئة مُحدد الحزمة عند الاختيار. يجب عليك أيضًا تحديد نطاق العلامة، واختياريًا، الإزاحة للبدء منها. يتم فحص رسائل خطأ ICMP واستخدامها لحساب التجزئة.

الخيارات الموجودة هي:

أعضاء الصف المحتملون هم: src بمعنى عنوان المصدر (عنوان IPv4، IPv6)، dst بمعنى عنوان الوجهة (عنوان IPv4، IPv6)، sport بمعنى منفذ المصدر (TCP، UDP، UDPlite، SCTP، DCCP)، dport بمعنى منفذ الوجهة (TCP، UDP، UDPlite، SCTP، DCCP)، spi بمعنى مؤشر معلمة الأمان (AH، ESP)، وct بمعنى استخدام صف التتبع (conntrack) بدلاً من محددات الحزمة.
المعامل لحساب التجزئة (لتحديد نطاق العلامات الممكنة)
الإزاحة لبدء العلامات منها.
للاستخدام المتقدم، بدلاً من استخدام --hmark-tuple، يمكنك تحديد
البادئات والأقنعة:
قناع عنوان المصدر بترميز CIDR.
قناع عنوان الوجهة بترميز CIDR.
قناع منفذ مصدر 16 بت بالنظام الست عشري.
قناع منفذ وجهة 16 بت بالنظام الست عشري.
حقل 32 بت مع قناع spi.
حقل 8 بت مع رقم بروتوكول الطبقة 4.
قيمة عشوائية مخصصة 32 بت لتغذية حساب التجزئة.

أمثلة:

iptables -t mangle -A PREROUTING -m conntrack --ctstate NEW
-j HMARK --hmark-tuple ct,src,dst,proto --hmark-offset 10000 --hmark-mod 10 --hmark-rnd 0xfeedcafe

iptables -t mangle -A PREROUTING -j HMARK --hmark-offset 10000 --hmark-tuple src,dst,proto --hmark-mod 10 --hmark-rnd 0xdeafbeef

IDLETIMER

يمكن استخدام هذا الهدف لتحديد متى تكون الواجهات خاملة لفترة زمنية معينة. تُعرّف المؤقتات بوسوم وتُنشأ عند تعيين قاعدة بوسم جديد. تأخذ القواعد أيضًا قيمة مهلة (بالثواني) كخيار. إذا استخدمت أكثر من قاعدة نفس وسم المؤقت، يُعاد تشغيل المؤقت كلما أصابت أي من القواعد. يُنشأ إدخال واحد لكل مؤقت في sysfs. تحتوي هذه السمة على الوقت المتبقي لانتهاء المؤقت. توجد السمات تحت فئة xt_idletimer:

/sys/class/xt_idletimer/timers/<وسم>

عند انتهاء المؤقت، تُرسل وحدة الهدف إشعار sysfs إلى مساحة المستخدم، والتي يمكنها بعد ذلك تحديد ما يجب فعله (مثل قطع الاتصال لتوفير الطاقة).

هذا هو الوقت بالثواني الذي سيُشغّل الإشعار.
هذا معرّف فريد للمؤقت. الحد الأقصى لطول سلسلة الوسم هو 27 حرفًا.

LED

يُنشئ هذا مشغل LED يمكن إرفاقه بأضواء مؤشرات النظام، لإصدار وميض أو إضاءتها عند مرور حزم معينة عبر النظام. قد يكون أحد الأمثلة هو إضاءة LED لبضع دقائق في كل مرة يتم فيها إنشاء اتصال SSH بالجهاز المحلي. تتحكم الخيارات التالية في سلوك المشغل:

هذا هو الاسم المُعطى لمشغل LED. سيتم إضافة البادئة "netfilter-" إلى الاسم الفعلي للمشغل.
يُشير هذا إلى المدة (بالمللي ثانية) التي يجب أن يظل فيها LED مضاءً عند وصول حزمة قبل إطفائه مرة أخرى. المبدئي هو 0 (وميض بأسرع ما يمكن). يمكن إعطاء القيمة الخاصة inf لترك LED مضاءً بشكل دائم بمجرد تنشيطه. (في هذه الحالة، يجب فصل المشغل يدويًا وإعادة توصيله بجهاز LED لإطفائه مرة أخرى.)
اجعل LED يومض دائمًا عند وصول الحزمة، حتى لو كان LED مضاءً بالفعل. يسمح هذا بالإخطار بحزم جديدة حتى مع قيم تأخير طويلة (والتي قد تؤدي بخلاف ذلك إلى إطالة صامتة لوقت التأخير.)
مثال:
إنشاء مشغل LED لحركة مرور SSH الواردة:
iptables -A INPUT -p tcp --dport 22 -j LED --led-trigger-id ssh
ثم إرفاق المشغل الجديد بـ LED:
echo netfilter-ssh >/sys/class/leds/اسم_led/trigger

LOG

تشغيل تسجيل النواة للحزم المتطابقة. عند تعيين هذا الخيار لقاعدة، ستطبع نواة لينكس بعض المعلومات عن جميع الحزم المتطابقة (مثل معظم حقول رأس IP/IPv6) عبر سجل النواة (حيث يمكن قراءتها باستخدام dmesg(1) أو قراءتها في syslog).

هذا "هدف غير منهي"، أي يستمر اجتياز القاعدة في القاعدة التالية. لذا إذا أردت تسجيل الحزم التي ترفضها، استخدم قاعدتين منفصلتين بنفس معايير المطابقة، الأولى تستخدم الهدف LOG ثم DROP (أو REJECT).

مستوى التسجيل، والذي يمكن أن يكون رقميًا (خاصًا بالنظام) أو ذاكريًا. القيم الممكنة هي (بترتيب تنازلي للأولوية): emerg، alert، crit، error، warning، notice، info أو debug.
أسبق رسائل السجل بالبادئة المحددة؛ يصل طولها إلى 29 حرفًا، ومفيدة لتمييز الرسائل في السجلات.
سجل أرقام تسلسل TCP. هذا يشكل خطرًا أمنيًا إذا كان السجل قابلاً للقراءة من قبل المستخدمين.
سجل الخيارات من رأس حزمة TCP.
سجل الخيارات من رأس حزمة IP/IPv6.
سجل معرف المستخدم للعملية التي أنشأت الحزمة.
سجل عناوين MAC والبروتوكول.

MARK

يُستخدم هذا الهدف لتعيين قيمة علامة Netfilter المرتبطة بالحزمة. يمكن، على سبيل المثال، استخدامه مع التوجيه المعتمد على fwmark (يتطلب iproute2). إذا كنت تخطط للقيام بذلك، لاحظ أن العلامة يجب تعيينها إما في سلسلة PREROUTING أو OUTPUT من جدول mangle للتأثير على التوجيه. حقل العلامة عرضه 32 بت.

يُصفّر البتات المعطاة بواسطة mask ويُجري XOR لـ value في علامة الحزمة ("nfmark"). إذا تم حذف mask، يُفترض 0xFFFFFFFF.
يُصفّر البتات المعطاة بواسطة mask ويُجري OR لـ value في علامة الحزمة. إذا تم حذف mask، يُفترض 0xFFFFFFFF.

الذاكرات المساعدة التالية متوفرة:

قم بعملية AND ثنائية لـ nfmark مع bits. (ذاكرة مساعدة لـ --set-xmark 0/invbits، حيث invbits هو النفي الثنائي لـ bits.)
قم بعملية OR ثنائية لـ nfmark مع bits. (ذاكرة مساعدة لـ --set-xmark bits/bits.)
قم بعملية XOR ثنائية لـ nfmark مع bits. (ذاكرة مساعدة لـ --set-xmark bits/0.)

MASQUERADE

هذا الهدف صالح فقط في جدول nat، في سلسلة POSTROUTING. يجب استخدامه فقط مع اتصالات IP المعينة ديناميكيًا (الطلب الهاتفي): إذا كان لديك عنوان IP ثابت، يجب استخدام هدف SNAT. التمويه يعادل تحديد تعيين لعنوان IP للواجهة التي تخرج منها الحزمة، ولكن له أيضًا تأثير أن الاتصالات تُنسى تُنسى عندما تنقطع الواجهة. هذا هو السلوك الصحيح عندما لا يحتمل أن يكون للطلب الهاتفي التالي نفس عنوان الواجهة (وبالتالي تُفقد أي اتصالات قائمة على أي حال).

يحدد هذا نطاقًا من منافذ المصدر لاستخدامها، متجاوزًا الاستدلال الافتراضي لاختيار منفذ المصدر لـ SNAT (انظر أعلاه). هذا صالح فقط إذا كانت القاعدة تحدد أيضًا أحد البروتوكولات التالية: tcp أو udp أو dccp أو sctp.
عشوائية تعيين منفذ المصدر (النواة >= 2.6.21). منذ النواة 5.0، --random مطابق لـ --random-fully.
تعيين منفذ المصدر بعشوائية كاملة (النواة >= 3.13).
دعم IPv6 متاح منذ نوى لينكس >= 3.7.

NETMAP

يسمح لك هذا الهدف بتعيين شبكة كاملة من العناوين بشكل ثابت على شبكة أخرى من العناوين. يمكن استخدامه فقط من القواعد في جدول nat.

عنوان الشبكة المراد التعيين إليه. سيتم بناء العنوان الناتج بالطريقة التالية: جميع البتات 'الواحدة' في القناع تُملأ من `العنوان` الجديد. جميع البتات التي تكون صفرًا في القناع تُملأ من العنوان الأصلي.
دعم IPv6 متاح منذ نوى لينكس >= 3.7.

NFLOG

يوفر هذا هدف تسجيل الحزم المتطابقة. عند تعيين هذا الهدف لقاعدة، ستمرر نواة لينكس الحزمة إلى الواجهة الخلفية للتسجيل المحملة لتسجيل الحزمة. يُستخدم هذا عادةً مع nfnetlink_log كواجهة خلفية للتسجيل، والتي سترسل الحزمة عبر مقبس netlink إلى مجموعة البث المتعدد المحددة. يمكن لعملية أو أكثر في مساحة المستخدم الاشتراك في المجموعة لاستقبال الحزم. مثل LOG، هذا هدف غير منتهي، أي يستمر اجتياز القاعدة إلى القاعدة التالية.

مجموعة netlink (0–2^16-1) التي تُرسل إليها الحزم (تنطبق فقط على nfnetlink_log). القيمة المبدئية هي 0.
سلسلة بادئة لتضمينها في رسالة السجل، بطول يصل إلى 64 حرفًا، مفيدة لتمييز الرسائل في السجلات.
لم يعمل هذا الخيار مطلقًا، استخدم --nflog-size بدلاً من ذلك
عدد البايتات المراد نسخها إلى مساحة المستخدم (تنطبق فقط على nfnetlink_log). قد تحدد مثيلات nfnetlink_log نطاقها الخاص، ويتجاوز هذا الخيار ذلك.
عدد الحزم المراد وضعها في قائمة الانتظار داخل النواة قبل إرسالها إلى مساحة المستخدم (تنطبق فقط على nfnetlink_log). تؤدي القيم الأعلى إلى حمل أقل لكل حزمة، ولكنها تزيد التأخير حتى تصل الحزم إلى مساحة المستخدم. القيمة المبدئية هي 1.

NFQUEUE

يُمرر هذا الهدف الحزمة إلى مساحة المستخدم باستخدام معالج nfnetlink_queue. توضع الحزمة في قائمة الانتظار المُحددة برقم قائمة انتظار 16-بت. يمكن لمساحة المستخدم فحص الحزمة وتعديلها إذا رغبت. يجب على مساحة المستخدم بعد ذلك إسقاط الحزمة أو إعادة حقنها في النواة. يُرجى مراجعة libnetfilter_queue للتفاصيل. أُضيف nfnetlink_queue في لينكس 2.6.14. أُضيف خيار queue-balance في لينكس 2.6.31، و queue-bypass في 2.6.39.

يُحدد هذا رقم قائمة الانتظار المراد استخدامها. أرقام قوائم الانتظار الصالحة هي من 0 إلى 65535. القيمة المبدئية هي 0.
يُحدد هذا نطاقًا من قوائم الانتظار لاستخدامها. تُوزن الحزم بعد ذلك عبر قوائم الانتظار المُعطاة. هذا مفيد للأنظمة متعددة النوى: ابدأ مثيلات متعددة من برنامج مساحة المستخدم على قوائم الانتظار x, x+1, .. x+n واستخدم "--queue-balance x:x+n". توضع الحزم المنتمية لنفس الاتصال في نفس nfqueue. بسبب تفاصيل التنفيذ، قيمة نطاق أقل من 0 تُحدد قيمة النطاق الأعلى إلى 65534، أي يمكن للمرء الموازنة فقط بين 65535 قائمة انتظار على الأكثر.
مبدئيًا، إذا لم يكن هناك برنامج مساحة مستخدم يستمع على NFQUEUE، فتُسقط جميع الحزم التي ستُوضع في قائمة الانتظار. عند استخدام هذا الخيار، تتصرف قاعدة NFQUEUE مثل ACCEPT بدلاً من ذلك، وتنتقل الحزمة إلى الجدول التالي.
متاح بدءًا من نواة لينكس 3.10. عند استخدامه مع --queue-balance، سيستخدم هذا معرف وحدة المعالجة المركزية كمؤشر لتعيين الحزم إلى قوائم الانتظار. الفكرة هي أنه يمكنك تحسين الأداء إذا كان هناك قائمة انتظار لكل وحدة معالجة مركزية. يتطلب هذا تحديد --queue-balance.

NOTRACK

يُعطل هذا الامتداد تتبع الاتصال لجميع الحزم المطابقة لتلك القاعدة. يُعادل -j CT --notrack. مثل CT، يمكن استخدام NOTRACK فقط في جدول raw.

RATEEST

يجمع هدف RATEEST الإحصائيات، ويُجري حساب تقدير المعدل، ويحفظ النتائج للتقييم لاحقًا باستخدام مطابقة rateest.

يُحصي الحزم المطابقة في المجموعة المُشار إليها بواسطة اسم، والتي يمكن اختيارها بحرية.
فاصل قياس المعدل، بالثواني أو الميلي ثانية أو الميكرو ثانية.
ثابت زمني لمتوسط قياس المعدل.

REDIRECT

هذا الهدف صالح فقط في جدول nat، وفي سلاسل PREROUTING وOUTPUT، والسلاسل المعرفة من قبل المستخدم والتي تُستدعى فقط من تلك السلاسل. يقوم بإعادة توجيه الحزمة إلى الجهاز نفسه عن طريق تغيير IP الوجهة إلى العنوان الرئيسي للواجهة الواردة (يتم تعيين الحزم المولدة محليًا إلى عنوان المضيف المحلي، 127.0.0.1 لـ IPv4 و::1 لـ IPv6، ويتم إسقاط الحزم التي تصل على واجهات ليس لها عنوان IP مكون).

يحدد هذا منفذ وجهة أو نطاق من المنافذ لاستخدامها: بدون هذا، لا يتم تغيير منفذ الوجهة أبدًا. هذا صالح فقط إذا كانت القاعدة تحدد أيضًا أحد البروتوكولات التالية: tcp، udp، dccp أو sctp. لمنفذ واحد، يمكن استخدام اسم خدمة كما هو مدرج في /etc/services.
عشوائية تعيين منفذ المصدر (النواة >= 2.6.22).
دعم IPv6 متاح بدءًا من نوى Linux >= 3.7.

REJECT (خاص بـ IPv6)

يُستخدم هذا لإرسال حزمة خطأ ردًا على الحزمة المطابقة: وإلا فهو مكافئ لـ DROP لذا فهو هدف منتهي، ينهي اجتياز القاعدة. هذا الهدف صالح فقط في سلاسل INPUT وFORWARD وOUTPUT، والسلاسل المعرفة من قبل المستخدم والتي تُستدعى فقط من تلك السلاسل. الخيار التالي يتحكم في طبيعة حزمة الخطأ المرتجعة:

يمكن أن يكون النوع المعطى icmp6-no-route، no-route، icmp6-adm-prohibited، adm-prohibited، icmp6-addr-unreachable، addr-unreach، أو icmp6-port-unreachable، والتي تُرجع رسالة خطأ ICMPv6 المناسبة (icmp6-port-unreachable هو المبدئي). أخيرًا، يمكن استخدام الخيار tcp-reset على القواعد التي تطابق بروتوكول TCP فقط: هذا يتسبب في إرسال حزمة TCP RST مرة أخرى. هذا مفيد بشكل أساسي لحظر استقصاءات ident (113/tcp) التي تحدث بشكل متكرر عند إرسال البريد إلى مضيفات بريد معطلة (والتي لن تقبل بريدك بخلاف ذلك). يمكن استخدام tcp-reset فقط مع إصدارات النواة 2.6.14 أو أحدث.

تحذير: لا ينبغي لك تطبيق هدف REJECT بشكل عشوائي على الحزم التي يتم تصنيف حالة اتصالها على أنها INVALID؛ بدلاً من ذلك، يجب عليك فقط إسقاط هذه الحزم.

ضع في اعتبارك مضيف مصدر يرسل حزمة P، مع تعرض P لتأخير كبير على طول مسارها بحيث يصدر المضيف المصدر إعادة إرسال، P_2، مع نجاح P_2 في الوصول إلى وجهتها وتقديم حالة الاتصال بشكل طبيعي. من المعقول أن تعتبر P المتأخرة غير مرتبطة بأي إدخال تتبع اتصال. إنشاء استجابة رفض لحزمة مصنفة بهذه الطريقة سينهي الاتصال السليم.

لذا، بدلاً من:

-A INPUT ... -j REJECT

فكر في استخدام:

-A INPUT ... -m conntrack --ctstate INVALID -j DROP
-A INPUT ... -j REJECT

REJECT (خاص بـ IPv4)

يُستخدم هذا لإرسال حزمة خطأ ردًا على الحزمة المطابقة: وإلا فهو مكافئ لـ DROP لذا فهو هدف منتهي، ينهي اجتياز القاعدة. هذا الهدف صالح فقط في سلاسل INPUT وFORWARD وOUTPUT، والسلاسل المعرفة من قبل المستخدم والتي تُستدعى فقط من تلك السلاسل. الخيار التالي يتحكم في طبيعة حزمة الخطأ المرتجعة:

يمكن أن يكون النوع المعطى icmp-net-unreachable، icmp-host-unreachable، icmp-port-unreachable، icmp-proto-unreachable، icmp-net-prohibited، icmp-host-prohibited، أو icmp-admin-prohibited (*)، والتي تُرجع رسالة خطأ ICMP المناسبة (icmp-port-unreachable هو المبدئي). يمكن استخدام الخيار tcp-reset على القواعد التي تطابق بروتوكول TCP فقط: هذا يتسبب في إرسال حزمة TCP RST مرة أخرى. هذا مفيد بشكل أساسي لحظر استقصاءات ident (113/tcp) التي تحدث بشكل متكرر عند إرسال البريد إلى مضيفات بريد معطلة (والتي لن تقبل بريدك بخلاف ذلك).
(*) استخدام icmp-admin-prohibited مع نوى لا تدعمه سيؤدي إلى إسقاط عادي بدلاً من REJECT

تحذير: لا ينبغي لك تطبيق هدف REJECT بشكل عشوائي على الحزم التي يتم تصنيف حالة اتصالها على أنها INVALID؛ بدلاً من ذلك، يجب عليك فقط إسقاط هذه الحزم.

ضع في اعتبارك مضيف مصدر يرسل حزمة P، مع تعرض P لتأخير كبير على طول مسارها بحيث يصدر المضيف المصدر إعادة إرسال، P_2، مع نجاح P_2 في الوصول إلى وجهتها وتقديم حالة الاتصال بشكل طبيعي. من المعقول أن تعتبر P المتأخرة غير مرتبطة بأي إدخال تتبع اتصال. إنشاء استجابة رفض لحزمة مصنفة بهذه الطريقة سينهي الاتصال السليم.

لذا، بدلاً من:

-A INPUT ... -j REJECT

فكر في استخدام:

-A INPUT ... -m conntrack --ctstate INVALID -j DROP
-A INPUT ... -j REJECT

SECMARK

يُستخدم هذا لتعيين قيمة علامة الأمان المرتبطة بالحزمة لاستخدامها من قبل أنظمة فرعية للأمان مثل SELinux. إنه صالح في جدول security (للتوافق مع الإصدارات الأقدم من النواة، فهو صالح أيضًا في جدول mangle). العلامة بعرض 32 بت.

SET

تضيف هذه الوحدة و/أو تحذف مدخلات من مجموعات IP التي يمكن تعريفها بواسطة ipset(8).

أضف عنوان/منافذ الحزمة إلى المجموعة
احذف عنوان/منافذ الحزمة من المجموعة
[--map-mark] [--map-prio] [--map-queue] خصص خصائص الحزمة (علامة جدار الحماية، أولوية tc، قائمة انتظار الأجهزة)
حيث علم(الأعلام) هي مواصفات src و/أو dst ولا يمكن أن يتجاوز عددها ستة.
عند إضافة مدخل، قيمة المهلة المستخدمة بدلاً من القيمة المبدئية من تعريف المجموعة
عند إضافة مدخل إذا كان موجودًا بالفعل، أعد تعيين قيمة المهلة إلى القيمة المحددة أو إلى القيمة المبدئية من تعريف المجموعة
يجب إنشاء اسم المجموعة مع خيار --skbinfo --map-mark خصص علامة جدار الحماية للحزمة بالبحث عن القيمة في المجموعة --map-prio خصص أولوية التحكم في المرور للحزمة بالبحث عن القيمة في المجموعة --map-queue خصص قائمة انتظار بطاقة الشبكة للحزمة بالبحث عن القيمة في المجموعة
يمكن استخدام خيار --map-set من جدول mangle فقط. يمكن استخدام العلمين --map-prio و --map-queue في سلاسل OUTPUT و FORWARD و POSTROUTING.

يتطلب استخدام -j SET توفير دعم ipset في النواة، وهو متاح للنوى القياسية منذ Linux 2.6.39.

SNAT

يكون هذا الهدف صالحًا فقط في جدول nat، في سلاسل POSTROUTING و INPUT، والسلاسل المعرفة من قبل المستخدم والتي تُستدعى فقط من تلك السلاسل. يحدد أن عنوان المصدر للحزمة يجب تعديله (وستُشوه جميع الحزم المستقبلية في هذا الاتصال أيضًا)، ويجب التوقف عن فحص القواعد. يأخذ الخيارات التالية:

يمكنه تحديد عنوان IP مصدر واحد جديد، أو نطاق شامل من عناوين IP. اختياريًا نطاق منافذ، إذا كانت القاعدة تحدد أيضًا أحد البروتوكولات التالية: tcp أو udp أو dccp أو sctp. إذا لم يُحدد نطاق منافذ، فسيتم تعيين منافذ المصدر الأقل من 512 إلى منافذ أخرى أقل من 512: تلك بين 512 و 1023 شاملة سيتم تعيينها إلى منافذ أقل من 1024، وسيتم تعيين المنافذ الأخرى إلى 1024 أو أعلى. حيثما أمكن، لن يحدث أي تغيير في المنفذ.
عشوائية تعيين المنفذ المصدر عبر خوارزمية تعتمد على التجزئة (النواة >= 2.6.21).
عشوائية كاملة لتعيين المنفذ المصدر عبر مولد أرقام عشوائية زائفة (PRNG) (النواة >= 3.14).
يعطي العميل نفس عنوان المصدر/الوجهة لكل اتصال. يحل هذا محل هدف SAME. دعم التعيينات المستمرة متاح منذ 2.6.29-rc2.

النوى الأقدم من 2.6.36-rc1 لا تملك القدرة على SNAT في سلسلة INPUT.

دعم IPv6 متاح منذ نوى لينكس >= 3.7.

SNPT (خاص بـ IPv6)

يوفر ترجمة بادئة شبكة IPv6 إلى IPv6 بدون حالة (كما هو موصوف في RFC 6296).

يجب استخدام هذا الهدف في جدول mangle، وليس في جدول nat. يأخذ الخيارات التالية:

اضبط بادئة المصدر التي تريد ترجمتها والطول
اضبط بادئة الوجهة التي تريد استخدامها في الترجمة والطول

يجب استخدام هدف DNPT لعكس الترجمة. مثال:

ip6tables -t mangle -I POSTROUTING -s fd00::/64 ! -o vboxnet0 -j SNPT --src-pfx fd00::/64 --dst-pfx 2001:e20:2000:40f::/64
ip6tables -t mangle -I PREROUTING -i wlan0 -d 2001:e20:2000:40f::/64 -j DNPT --src-pfx 2001:e20:2000:40f::/64 --dst-pfx fd00::/64

قد تحتاج إلى تمكين وكيل الجوار IPv6:

sysctl -w net.ipv6.conf.all.proxy_ndp=1

يجب أيضًا استخدام الهدف NOTRACK لتعطيل تتبع الاتصال للتدفقات المترجمة.

SYNPROXY

يعالج هذا الهدف مصافحة TCP ثلاثية الاتجاهات بالتوازي في سياق netfilter لحماية النظام المحلي أو الخلفي. يتطلب هذا الهدف تتبع الاتصال لأن أرقام التسلسل تحتاج إلى الترجمة. تحسنت قدرة النواة على امتصاص هجوم SYNFLOOD بشكل كبير بدءًا من Linux 4.4، لذا لم يعد هذا الهدف ضروريًا لحماية خوادم Linux.

الحد الأقصى لحجم القطعة المُعلَن للعملاء. يجب أن يتطابق هذا مع النظام الخلفي.
مقياس النافذة المُعلَن للعملاء. يجب أن يتطابق هذا مع النظام الخلفي.
تمرير خيار الإقرار الانتقائي للعميل إلى النظام الخلفي (سيُعطّل إذا لم يكن موجودًا).
تمرير خيار الطابع الزمني للعميل إلى النظام الخلفي (سيُعطّل إذا لم يكن موجودًا، وهو ضروري أيضًا للإقرار الانتقائي وتوسيع النافذة).

مثال:

تحديد خيارات TCP المستخدمة من قبل النظام الخلفي، من نظام خارجي

tcpdump -pni eth0 -c 1 'tcp[tcpflags] == (tcp-syn|tcp-ack)'
port 80 &
telnet 192.0.2.42 80
18:57:24.693307 IP 192.0.2.42.80 > 192.0.2.43.48757:
الأعلام [S.]، التسلسل 360414582، الإقرار 788841994، النافذة 14480،
الخيارات [mss 1460,sackOK،
TS val 1409056151 ecr 9690221،
nop,wscale 9]،
الطول 0

أوقف وضع tcp_loose، بحيث يعلّم conntrack الحزم خارج التدفق كحالة INVALID.

echo 0 > /proc/sys/net/netfilter/nf_conntrack_tcp_loose

اجعل حزم SYN غير متتبعة

iptables -t raw -A PREROUTING -i eth0 -p tcp --dport 80
--syn -j CT --notrack

التقط حالات UNTRACKED (حزم SYN) وINVALID (حزم ACK للمصافحة الثلاثية) وأرسلها إلى SYNPROXY. ستستجيب هذه القاعدة لحزم SYN بحزم SYN+ACK مع ملفات تعريف الارتباط المتزامنة، وتنشئ حالة ESTABLISHED لاستجابة العميل الصالحة (حزم ACK للمصافحة الثلاثية)، وتتجاهل ملفات تعريف الارتباط غير الصحيحة. تركيبات الأعلام غير المتوقعة أثناء المصافحة الثلاثية لن تتطابق وستستمر (مثل SYN+FIN، SYN+ACK).

iptables -A INPUT -i eth0 -p tcp --dport 80
-m state --state UNTRACKED,INVALID -j SYNPROXY
--sack-perm --timestamp --mss 1460 --wscale 9

أسقط الحزم غير الصالحة، ستكون هذه حزمًا خارج التدفق لم تُطابق بواسطة SYNPROXY.

iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state INVALID -j DROP

TCPMSS

يغير هذا الهدف قيمة MSS لحزم TCP SYN، للتحكم في الحجم الأقصى لذلك الاتصال (عادةً ما يحدها إلى MTU لواجهة الخروج ناقص 40 لـ IPv4 أو 60 لـ IPv6، على التوالي). بالطبع، يمكن استخدامه فقط مع -p tcp.

يُستخدم هذا الهدف للتغلب على مزودي خدمة الإنترنت أو الخوادم عديمة العقل إجراميًا التي تحجب حزم "ICMP Fragmentation Needed" أو "ICMPv6 Packet Too Big". أعراض هذه المشكلة هي أن كل شيء يعمل بشكل جيد من جدار الحماية/الموجه Linux الخاص بك، لكن الأجهزة خلفه لا يمكنها أبدًا تبادل الحزم الكبيرة:

1.
تتصل متصفحات الويب، ثم تتعطل دون استلام بيانات.
2.
يعمل البريد الصغير بشكل جيد، لكن رسائل البريد الكبيرة تتعطل.
3.
يعمل ssh بشكل جيد، لكن scp يتعطل بعد المصافحة الأولية.

الحل البديل: فعّل هذا الخيار وأضف قاعدة إلى تكوين جدار الحماية الخاص بك مثل:


iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN
-j TCPMSS --clamp-mss-to-pmtu
يضبط خيار MSS صراحةً إلى القيمة المحددة. إذا كان MSS للحزمة أقل بالفعل من القيمة، فلن يتم زيادته (بدءًا من Linux 2.6.25) لتجنب المزيد من المشكلات مع المضيفين الذين يعتمدون على MSS صحيح.
يضبط قيمة MSS آليًا إلى (path_MTU - 40 لـ IPv4؛ -60 لـ IPv6). قد لا يعمل هذا كما هو مطلوب حيث توجد مسارات غير متماثلة مع MTU مسار مختلف — يستخدم النواة MTU المسار الذي ستستخدمه لإرسال الحزم من نفسها إلى عناوين IP المصدر والوجهة. قبل Linux 2.6.25، تم اعتبار MTU المسار إلى عنوان IP الوجهة فقط بواسطة هذا الخيار؛ النوى اللاحقة تعتبر أيضًا MTU المسار إلى عنوان IP المصدر.

هذه الخيارات متعارضة.

TCPOPTSTRIP

سيقوم هذا الهدف بإزالة خيارات TCP من حزمة TCP. (سيستبدلها فعليًا بـ NO-OPs.) على هذا النحو، ستحتاج إلى إضافة معاملات -p tcp.

يزيل الخيار (الخيارات) المحددة. يمكن تحديد الخيارات برقم خيار TCP أو باسم رمزي. يمكن الحصول على قائمة الخيارات المعترف بها عن طريق استدعاء iptables مع -j TCPOPTSTRIP -h.

TEE

سيقوم هدف TEE باستنساخ حزمة وإعادة توجيه هذه النسخة إلى جهاز آخر على مقطع الشبكة المحلي. بمعنى آخر، يجب أن يكون nexthop هو الهدف، أو ستحتاج إلى تكوين nexthop لإعادة توجيهها أكثر إذا رغبت في ذلك.

أرسل الحزمة المستنسخة إلى المضيف الذي يمكن الوصول إليه في عنوان IP المحدد. استخدام 0.0.0.0 (لحزم IPv4) أو :: (IPv6) غير صالح.

لإعادة توجيه كل حركة المرور الواردة على eth0 إلى صندوق تسجيل طبقة الشبكة:

-t mangle -A PREROUTING -i eth0 -j TEE --gateway 2001:db8::1

TOS

يضبط هذه الوحدة حقل نوع الخدمة في رأس IPv4 (بما في ذلك بتات "الأولوية") أو حقل الأولوية في رأس IPv6. لاحظ أن TOS يشارك نفس البتات مثل DSCP و ECN. هدف TOS صالح فقط في جدول mangle.

يصفّر البتات المعطاة بواسطة القناع (انظر الملاحظة أدناه) ويقوم بعملية XOR لـ القيمة في حقل TOS/الأولوية. إذا تم حذف القناع، يُفترض 0xFF.
يمكنك تحديد اسم رمزي عند استخدام هدف TOS لـ IPv4. هذا يعني قناعًا بقيمة 0xFF (انظر الملاحظة أدناه). يمكن الحصول على قائمة أسماء TOS المعترف بها عن طريق استدعاء iptables مع -j TOS -h.

الذاكرات المساعدة التالية متوفرة:

إجراء عملية AND ثنائية لقيمة TOS مع بتات. (ذاكرة مساعدة لـ --set-tos 0/بتات_معكوسة، حيث بتات_معكوسة هي النفي الثنائي لـ بتات. انظر الملاحظة أدناه.)
إجراء عملية OR ثنائية لقيمة TOS مع بتات. (ذاكرة مساعدة لـ --set-tos بتات/بتات. انظر الملاحظة أدناه.)
إجراء عملية XOR ثنائية لقيمة TOS مع بتات. (ذاكرة مساعدة لـ --set-tos بتات/0. انظر الملاحظة أدناه.)

ملاحظة: في نوى لينكس حتى الإصدار 2.6.38 وما بعده، باستثناء الإصدارات طويلة الأمد 2.6.32 (>=.42)، و2.6.33 (>=.15)، و2.6.35 (>=.14)، يوجد خطأ حيث لا يعمل تشويه TOS لـ IPv6 كما هو موثق ويختلف عن إصدار IPv4. يشير قناع TOS إلى البتات التي يرغب المرء في تصفيرها، لذا يجب عكسه قبل تطبيقه على حقل TOS الأصلي. ومع ذلك، تتجاهل النوى المذكورة أعلاه العكس مما يعطل --set-tos وذاكراته المساعدة.

TPROXY

هذا الهدف صالح فقط في جدول mangle، في سلسلة PREROUTING والسلاسل المعرفة من قبل المستخدم والتي تُستدعى فقط من هذه السلسلة. يعيد توجيه الحزمة إلى مقبس محلي دون تغيير رأس الحزمة بأي شكل. يمكنه أيضًا تغيير قيمة العلامة التي يمكن استخدامها بعد ذلك في قواعد التوجيه المتقدمة. يقبل ثلاثة خيارات:

يحدد هذا منفذ وجهة لاستخدامه. هو خيار مطلوب، يعني 0 أن منفذ الوجهة الجديد هو نفسه الأصلي. هذا صالح فقط إذا كانت القاعدة تحدد أيضًا -p tcp أو -p udp.
يحدد هذا عنوان وجهة لاستخدامه. بشكل مبدئي، العنوان هو عنوان IP للواجهة الواردة. هذا صالح فقط إذا كانت القاعدة تحدد أيضًا -p tcp أو -p udp.
يضع علامات على الحزم بالقيمة/القناع المعطى. يمكن استخدام قيمة fwmark المحددة هنا بواسطة التوجيه المتقدم. (مطلوب لعمل الوكيل الشفاف: وإلا سيتم إعادة توجيه هذه الحزم، وهو ما ربما لا تريده.)

TRACE

يضع هذا الهدف علامات على الحزم بحيث يسجل النواة كل قاعدة تطابق الحزم أثناء مرورها عبر الجداول والسلاسل والقواعد. يمكن استخدامه فقط في جدول raw.

مع iptables-legacy، يجب تحميل خلفية تسجيل، مثل ip(6)t_LOG أو nfnetlink_log، لكي يكون هذا مرئيًا. تُسجل الحزم ببادئة السلسلة: "TRACE: tablename:chainname:type:rulenum " حيث يمكن أن يكون النوع "rule" لقاعدة عادية، و"return" لقاعدة ضمنية في نهاية سلسلة معرفة من قبل المستخدم، و"policy" لسياسة السلاسل المضمنة.

مع iptables-nft، يُترجم الهدف إلى تعبير meta nftrace الخاص بـ nftables. وبالتالي، ترسل النواة أحداث التتبع عبر netlink إلى مساحة المستخدم حيث يمكن عرضها باستخدام أمر xtables-monitor --trace. للتفاصيل، راجع xtables-monitor(8).

TTL (خاص بـ IPv4)

يُستخدم هذا لتعديل حقل رأس TTL في IPv4. يحدد حقل TTL عدد القفزات (الموجهات) التي يمكن للحزمة عبورها حتى يتجاوز وقت بقائها.

قد يكون ضبط أو زيادة حقل TTL خطيرًا جدًا، لذا يجب تجنبه بأي ثمن. هذا الهدف صالح فقط في جدول mangle.

لا تقم أبدًا بضبط أو زيادة القيمة على الحزم التي تغادر شبكتك المحلية!

يضبط قيمة TTL إلى `قيمة'.
يقلل قيمة TTL بمقدار `قيمة' مرة.
يزيد قيمة TTL بمقدار `قيمة' مرة.

ULOG (خاص بـ IPv4)

هذا هو السلف القديم الخاص بـ IPv4 فقط لهدف NFLOG. يوفر تسجيل الحزم المتطابقة في مساحة المستخدم. عند ضبط هذا الهدف لقاعدة، سيقوم نواة لينكس بإرسال هذه الحزمة متعددة الإرسال عبر مقبس netlink. يمكن لعملية أو أكثر في مساحة المستخدم الاشتراك في مجموعات متعددة الإرسال المختلفة واستلام الحزم. مثل LOG، هذا هو "هدف غير منهي"، أي يستمر اجتياز القاعدة في القاعدة التالية.

يحدد هذا مجموعة netlink (1–32) التي تُرسل إليها الحزمة. القيمة المبدئية هي 1.
يسبق رسائل السجل بالبادئة المحددة؛ بطول يصل إلى 32 حرفًا، ومفيد لتمييز الرسائل في السجلات.
عدد البايتات التي تُنسخ إلى مساحة المستخدم. قيمة 0 تنسخ دائمًا الحزمة بأكملها، بغض النظر عن حجمها. المبدئي هو 0.
عدد الحزم التي تُصطف داخل النواة. ضبط هذه القيمة على، مثلاً، 10 يُراكم عشر حزم داخل النواة وينقلها كرسالة netlink متعددة الأجزاء إلى مساحة المستخدم. المبدئي هو 1 (للتوافق مع الإصدارات السابقة).

ترجمة

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

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

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

iptables 1.8.13