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

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

UNSPEC
    عنوان غير محدد (أي 0.0.0.0)

UNICAST
    عنوان أحادي

LOCAL
    عنوان محلي

BROADCAST
    عنوان بث

ANYCAST
    حبة أي كاست

MULTICAST
    عنوان بث متعدد

BLACKHOLE
    عنوان ثقب أسود

UNREACHABLE
    عنوان غير قابل للوصول

PROHIBIT
    عنوان محظور

THROW
    FIXME

NAT FIXME

XRESOLVE

[!] --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
    الطول الكلي لهذا الرأس بالأوكتيتات.

--ahres
    تطابق إذا كان الحقل المحجوز مملوءًا بصفر.

  ah (خاص بـ IPv4)
تطابق هذه الوحدة SPIs في رأس الاستيثاق لحزم IPsec.

[!] --ahspi spi[:spi]

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

--object-pinned path
    مرر مسارًا إلى كائن 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

--bytecode code
    مرر تنسيق كود البايت 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-total-nodes \fIعدد
    يضبط عدد العُقد الكلي في العنقود.

[!] --cluster-local-node \fIعدد
    يضبط معرف رقم العقدة المحلية.

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

--cluster-hash-seed \fIقيمة
    يضبط قيمة البذرة لتجزئة 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 حرفًا) إلى أي قاعدة.

--comment تعليق

مثال:
    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 فقط. يُستخدم "!" لمطابقة الحزم التي لا تقع ضمن النطاق.

--connbytes-dir {original|reply|both}
    أي الحزم يجب أخذها في الاعتبار

--connbytes-mode {packets|bytes|avgpkt}
    ما إذا كان يجب التحقق من كمية الحزم، أو عدد البايتات المنقولة، أو متوسط الحجم (بالبايت) لجميع الحزم المستلمة حتى الآن. لاحظ أنه عند استخدام "both" مع "avgpkt"، وتدفق البيانات (بشكل رئيسي) في اتجاه واحد فقط (مثل HTTP)، سيكون متوسط حجم الحزمة حوالي نصف حزم البيانات الفعلية.

مثال:
    iptables .. -m connbytes --connbytes 10000:100000 --connbytes-dir both --connbytes-mode bytes ...

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

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

--set
    إذا لم يتم تعيين التسمية على الاتصال، فقم بتعيينها. لاحظ أن تعيين تسمية قد يفشل. وذلك لأن النواة تخصص منطقة تخزين تسمية التتبع (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 الوقت[:الوقت]
    طابق العمر المتبقي بالثواني مع القيمة المعطاة أو نطاق القيم (شامل)

--ctdir {ORIGINAL|REPLY}
    طابق الحزم المتدفقة في الاتجاه المحدد. إذا لم تُحدد هذه العلامة على الإطلاق، تُطابق الحزم في كلا الاتجاهين.

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

INVALID
    الحزمة غير مرتبطة بأي اتصال معروف.

NEW بدأت الحزمة اتصالاً جديداً أو ارتبطت باتصال لم يشهد حزماً في كلا الاتجاهين.

ESTABLISHED
    الحزمة مرتبطة باتصال شهد حزماً في كلا الاتجاهين.

RELATED
    تبدأ الحزمة اتصالاً جديداً، لكنها مرتبطة باتصال موجود، مثل نقل بيانات FTP أو خطأ ICMP.

UNTRACKED
    الحزمة غير متعقبة على الإطلاق، ويحدث هذا إذا ألغيت تعقبها صراحة باستخدام -j CT --notrack في الجدول الخام.

SNAT
    حالة افتراضية، تُطابق إذا اختلف عنوان المصدر الأصلي عن وجهة الرد.

DNAT
    حالة افتراضية، تُطابق إذا اختلفت الوجهة الأصلية عن مصدر الرد.

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

NONE
    لا شيء مما يلي.

EXPECTED
    هذا اتصال متوقع (أي أن مساعد تتبع الاتصال قام بإعداده).

SEEN_REPLY
    رأى تتبع الاتصال حزمًا في كلا الاتجاهين.

ASSURED
    يجب ألا ينتهي إدخال تتبع الاتصال مبكرًا أبدًا.

مؤكد
    تم تأكيد الاتصال: غادرت الحزمة الأصلية الصندوق.

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

[!] --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
    الطول الكلي لهذا الرأس بالأوكتيتات.

--dst-opts type[:length][,type[: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 أو أحدث. طول رأس التجزئة ثابت وهذا الخيار لا معنى له.

--fragres
    يطابق إذا كانت الحقول المحجوزة مملوءة بالأصفار.

--fragfirst
    يطابق الجزء الأول.

--fragmore
    يطابق إذا وُجدت أجزاء أخرى.

--fraglast
    يطابق إذا كان هذا هو الجزء الأخير.

  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 الطول
    الطول الكلي لهذا الرأس بالأوكتيتات.

--hbh-opts النوع[:الطول][,النوع[:الطول]...]
    النوع الرقمي للخيار وطول بيانات الخيار بالأوكتيت.

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

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

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

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

  hl (خاص بـ IPv6)
تطابق هذه الوحدة حقل حد القفزات في رأس IPv6.

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

--hl-lt القيمة
    تطابق إذا كان حد القفزات أقل من القيمة.

--hl-gt قيمة
    يطابق إذا كان حد القفز أكبر من القيمة.

  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 و/أو رأس الطبقة العليا.

--soft
    يطابق إذا كانت الحزمة تتضمن أيًا من الرؤوس المحددة مع --header.

[!] --header رأس[,رأس...]
    يطابق الحزمة التي تتضمن تمامًا جميع الرؤوس المحددة. الرؤوس المغلفة برأس ESP خارج النطاق. أنواع الرأس الممكنة يمكن أن تكون:

hop|hop-by-hop
    رأس خيارات قفزة بقفزة

dst رأس خيارات الوجهة

route
    رأس التوجيه

frag
    رأس التجزئة

auth
    رأس الاستيثاق

esp رأس حمولة الأمان المغلفة

none
    لا رأس تالي يطابق 59 في 'حقل الرأس التالي' لرأس IPv6 أو أي رؤوس امتداد IPv6

prot
    الذي يطابق أي رأس بروتوكول طبقة عليا. اسم بروتوكول من /etc/protocols وقيمة رقمية مسموح بها أيضًا. الرقم 255 يعادل prot.

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

[!] --ipvs
    الحزمة تنتمي إلى اتصال IPVS

أي من الخيارات التالية يستلزم --ipvs (حتى لو كان منفيًا)

[!] --vproto protocol
    بروتوكول VIP للمطابقة؛ بالرقم أو الاسم، مثل "tcp"

[!] --vaddr address[/mask]
    عنوان VIP للمطابقة

[!] --vport port
    منفذ VIP للمطابقة؛ بالرقم أو الاسم، مثل "http"

--vdir {ORIGINAL|REPLY}
    اتجاه تدفق الحزمة

[!] --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
    قم بإجراء فحوصات TTL إضافية على الحزمة لتحديد نظام التشغيل. يمكن أن تكون level إحدى القيم التالية:

    0   مقارنة عنوان IP الحقيقي و TTL البصمة. يعمل هذا بشكل عام للشبكات المحلية.

    1   تحقق مما إذا كان TTL لرأس IP أقل من TTL البصمة. يعمل للعناوين القابلة للتوجيه عالميًا.

    2   لا تقارن TTL على الإطلاق.

--log المستوى
    سجل الأنواع المحددة في 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.

--suppl-groups
    يتسبب في فحص المجموعة (المجموعات) المحددة مع --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 لمعالجة حزمة.

--dir {in|out}
    يُستخدم لتحديد ما إذا كانت المطابقة للسياسة المستخدمة لفك التغليف أو السياسة التي ستُستخدم للتغليف. in صالح في السلاسل PREROUTING, INPUT و FORWARD، و out صالح في السلاسل POSTROUTING, OUTPUT و FORWARD.

--pol {none|ipsec}
    يطابق إذا كانت الحزمة خاضعة لمعالجة IPsec. لا يمكن دمج --pol none مع --strict.

--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.

--next
    ابدأ العنصر التالي في مواصفات السياسة. يمكن استخدامه فقط مع --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)

--rateest-delta
    لكل مقدر (سواء في الوضع المطلق أو النسبي)، يُحسب الفرق بين معدل التدفق الذي يحدده المقدر والقيمة الثابتة المختارة مع خيارات BPS/PPS. إذا كان معدل التدفق أعلى من BPS/PPS المحدد، يُستخدم 0 بدلاً من قيمة سالبة. بعبارة أخرى، يُستخدم "max(0, rateest#_rate - rateest#_bps)".

[!] --rateest-lt
    يطابق إذا كان المعدل أقل من المعدل/المقدر المعطى.

[!] --rateest-gt
    يطابق إذا كان المعدل أكبر من المعدل/المقدر المعطى.

[!] --rateest-eq
    يطابق إذا كان المعدل مساوياً للمعدل/المقدر المعطى.

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

--rateest الاسم
    اسم مقدر المعدل الواحد للوضع المطلق.

--rateest1 الاسم

--rateest2 الاسم
    اسما مقدرَي المعدل للوضع النسبي.

--rateest-bps [القيمة]

--rateest-pps [القيمة]

--rateest-bps1 [القيمة]

--rateest-bps2 [القيمة]

--rateest-pps1 [القيمة]

--rateest-pps2 [القيمة]
    قارن المقدر(ات) بالبايت أو الحزم في الثانية، وقارنها بالقيمة المختارة. انظر قائمة النقاط أعلاه لمعرفة أي خيار يُستخدم في أي حالة. يمكن استخدام لاحقة وحدة — المتاحة هي: 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 متنافية.

--name اسم
    حدد القائمة لاستخدامها للأوامر. إذا لم يُعطَ اسم، فسيُستخدم DEFAULT.

[!] --set
    سيُضيف عنوان المصدر للحزمة إلى القائمة. إذا كان عنوان المصدر موجودًا بالفعل في القائمة، فسيُحدّث الإدخال الحالي. سيعيد هذا دائمًا النجاح (أو الفشل إذا مُرر !).

--rsource
    مطابقة/حفظ عنوان المصدر لكل حزمة في جدول القائمة الحديثة. هذا هو المبدئي.

--rdest
    مطابقة/حفظ عنوان الوجهة لكل حزمة في جدول القائمة الحديثة.

--mask netmask
    قناع الشبكة الذي يُطبق على هذه القائمة الحديثة.

[!] --rcheck
    تحقق مما إذا كان عنوان المصدر للحزمة موجودًا حاليًا في القائمة.

[!] --update
    مثل --rcheck، باستثناء أنه يُحدّث الطابع الزمني لـ"آخر مشاهدة" إذا تطابق.

[!] --remove
    تحقق مما إذا كان عنوان المصدر للحزمة موجودًا حاليًا في القائمة، وإذا كان كذلك، يُزال ذلك العنوان من القائمة وتُعيد القاعدة قيمة صواب. إذا لم يُعثر على العنوان، تُعاد قيمة خطأ.

--seconds seconds
    يجب استخدام هذا الخيار مع أحد --rcheck أو --update. عند استخدامه، يُضيّق المطابقة لتحدث فقط عندما يكون العنوان في القائمة وشوهد خلال آخر عدد محدد من الثواني.

--reap
    يمكن استخدام هذا الخيار فقط مع --seconds. عند استخدامه، يؤدي ذلك إلى تطهير الإدخالات الأقدم من آخر عدد محدد من الثواني.

--hitcount hits
    يجب استخدام هذا الخيار مع أحد --rcheck أو --update. عند استخدامه، يُضيّق المطابقة لتحدث فقط عندما يكون العنوان في القائمة وتكون الحزم قد استُقبلت بقيمة أكبر من أو تساوي القيمة المعطاة. يمكن استخدام هذا الخيار مع --seconds لإنشاء مطابقة أضيق تتطلب عددًا معينًا من الزيارات ضمن إطار زمني محدد.

--rttl
    يمكن استخدام هذا الخيار فقط مع أحد --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/ لعرض القائمة الحالية أو كتابته باستخدام الأوامر التالية لتعديل القائمة:

echo +addr >/proc/net/xt_recent/DEFAULT
    لإضافة addr إلى القائمة DEFAULT

echo -addr >/proc/net/xt_recent/DEFAULT
    لإزالة addr من القائمة DEFAULT

echo / >/proc/net/xt_recent/DEFAULT
    لتفريغ القائمة DEFAULT (إزالة جميع المدخلات).

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

ip_list_tot=100
    عدد العناوين المتذكرة لكل جدول.

ip_pkt_list_tot=0
    عدد الحزم لكل عنوان متذكر. هذا المعامل مهمل منذ إصدار النواة 3.19 الذي بدأ بحساب حجم الجدول بناءً على المعامل --hitcount المعطى.

ip_list_hash_size=0
    حجم جدول التجزئة. 0 يعني حسابه بناءً على ip_list_tot بتقريبه لأعلى إلى القوة التالية من اثنين (مع مبدئية ip_list_tot إلى 100، سيحسب ip_list_hash_size إلى 128 مبدئيًا).

ip_list_perms=0644
    أذونات ملفات /proc/net/xt_recent/*.

ip_list_uid=0
    UID الرقمي لملكية ملفات /proc/net/xt_recent/*.

ip_list_gid=0
    GID الرقمي لملكية ملفات /proc/net/xt_recent/*.

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

--loose
    يُستخدم لتحديد أن اختبار مرشح المسار العكسي يجب أن يطابق حتى لو لم يكن جهاز الإخراج المحدد هو المتوقع.

--validmark
    استخدم أيضًا قيمة nfmark للحزم عند إجراء بحث مسار المسار العكسي.

--accept-local
    سيسمح هذا بالحزم الواصلة من الشبكة بعنوان مصدر مُخصص أيضًا للجهاز المحلي.

--invert
    سيعكس هذا معنى المطابقة. بدلاً من مطابقة الحزم التي اجتازت اختبار مرشح المسار العكسي، تطابق تلك التي فشلت فيه.

مثال لتسجيل وإسقاط الحزم الفاشلة في اختبار مرشح المسار العكسي: 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
    طابق طول هذا الرأس.

--rt-0-res
    طابق الحقل المحجوز أيضًا (type=0)

--rt-0-addrs addr[,addr...]
    طابق عناوين type=0 (قائمة).

--rt-0-not-strict
    قائمة عناوين type=0 ليست قائمة صارمة.

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

[!] --source-port,--sport منفذ[:منفذ]

[!] --destination-port,--dport منفذ[:منفذ]

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

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

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

فقط طابق إذا كانت أنواع القطع المعطاة فقط موجودة مع الأعلام المعطاة ولا يوجد أي منها مفقود. أنواع القطع: 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
    إذا تم تحديد الخيار --return-nomatch وكان نوع المجموعة يدعم العلم nomatch، فإن المطابقة تُعكس: المطابقة مع عنصر مُعلّم بـ nomatch تُرجع true، بينما المطابقة مع عنصر عادي تُرجع false.

! --update-counters
    إذا تم نفي العلم --update-counters، فإن عدادات الحزم والبايتات للعنصر المطابق في المجموعة لن تُحدّث. مبدئيًا، تُحدّث عدادات الحزم والبايتات.

! --update-subcounters
    إذا تم نفي العلم --update-subcounters، فإن عدادات الحزم والبايتات للعنصر المطابق في المجموعة العضو من مجموعة من نوع قائمة لن تُحدّث. مبدئيًا، تُحدّث عدادات الحزم والبايتات.

[!] --packets-eq قيمة
    إذا طابقت الحزمة عنصرًا في المجموعة، طابق فقط إذا طابق عداد حزم العنصر القيمة المعطاة أيضًا.

--packets-lt قيمة
    إذا طابقت الحزمة عنصرًا في المجموعة، طابق فقط إذا كان عداد حزم العنصر أقل من القيمة المعطاة أيضًا.

--packets-gt قيمة
    إذا طابقت الحزمة عنصرًا في المجموعة، طابق فقط إذا كان عداد حزم العنصر أكبر من القيمة المعطاة أيضًا.

[!] --bytes-eq قيمة
    إذا طابقت الحزمة عنصرًا في المجموعة، طابق فقط إذا طابق عداد بايتات العنصر القيمة المعطاة أيضًا.

--bytes-lt قيمة
    إذا طابقت الحزمة عنصرًا في المجموعة، طابق فقط إذا كان عداد بايتات العنصر أقل من القيمة المعطاة أيضًا.

--bytes-gt قيمة
    إذا طابقت الحزمة عنصرًا في المجموعة، طابق فقط إذا كان عداد بايتات العنصر أكبر من القيمة المعطاة أيضًا.

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

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

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

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

--transparent
    تجاهل المقابس غير الشفافة.

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

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

    -t mangle -A PREROUTING -m socket --transparent -j MARK --set-mark 1

--restore-skmark
    اضبط علامة الحزمة على علامة المقبس المطابق. يمكن دمجه مع الخيارين --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.

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

--mode الطور
    اضبط وضع المطابقة لقاعدة المطابقة، الأوضاع المدعومة هي random و nth.

[!] --probability p
    اضبط احتمال مطابقة حزمة عشوائيًا. يعمل فقط مع وضع random. يجب أن يكون p بين 0.0 و 1.0. الدقة المدعومة هي بزيادات 1/2147483648.

[!] --every n
    طابق حزمة واحدة كل n حزمة. يعمل فقط مع وضع nth (انظر أيضًا خيار --packet).

--packet p
    اضبط قيمة العداد الأولية (0 <= p <= n-1، المبدئي 0) لوضع nth.

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

--algo {bm|kmp}
    اختر استراتيجية مطابقة النمط. (bm = Boyer-Moore، kmp = Knuth-Pratt-Morris)

--from offset
    اضبط الإزاحة التي يبدأ منها البحث عن أي تطابق. إذا لم يُمرر، المبدئي هو 0.

--to offset
    اضبط الإزاحة التي يجب المسح حتىها. أي، البايت offset (العد من 0) هو آخر بايت يُمسح والموضع الأقصى لآخر حرف في pattern. إذا لم يُمرر، المبدئي هو حجم الحزمة.

[!] --string pattern
    يطابق النمط المعطى.

[!] --hex-string pattern
    يطابق النمط المعطى بترميز سداسي عشري.

--icase
    تجاهل حالة الأحرف عند البحث.

أمثلة:

    # يمكن استخدام نمط السلسلة للأحرف النصية البسيطة.
    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 بشكل مبدئي.

--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]

--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
    يطابق فقط خلال الوقت المحدد، والذي يجب أن يكون بترميز ISO 8601 "T". النطاق الزمني الممكن هو 1970-01-01T00:00:00 إلى 2038-01-19T04:17:07.

    إذا لم يتم تحديد --datestart أو --datestop، فسيتم المبدئي إلى 1970-01-01 و 2038-01-19 على التوالي.

--timestart ساعة:دقيقة[:ثانية]

--timestop ساعة:دقيقة[:ثانية]
    يطابق فقط خلال الوقت النهاري المحدد. النطاق الزمني الممكن هو 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، إلخ).

--contiguous
    عندما تكون --timestop أصغر من قيمة --timestart، يطابق هذا كفترة زمنية واحدة بدلاً من فترات زمنية منفصلة. انظر الأمثلة.

--kerneltz
    استخدم المنطقة الزمنية للنواة بدلاً من 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-gt ttl
    تطابق إذا كانت TTL أكبر من قيمة TTL المعطاة.

--ttl-lt 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) للتفاصيل الإضافية.

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

مثال:

    iptables -N AUDIT_DROP

    iptables -A AUDIT_DROP -j AUDIT

    iptables -A AUDIT_DROP -j DROP

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

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

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

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

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

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

--new
    أنشئ ClusterIP جديدًا. يجب عليك دائمًا تعيين هذا في القاعدة الأولى لـ ClusterIP معين.

--hashmode mode
    حدد وضع التجزئة. يجب أن يكون واحدًا من sourceip أو sourceip-sourceport أو sourceip-sourceport-destport.

--clustermac mac
    حدد عنوان MAC لـ ClusterIP. يجب أن يكون عنوان بث متعدد على طبقة الوصلة

--total-nodes num
    عدد العقد الإجمالي داخل هذه المجموعة.

--local-node num
    رقم العقدة المحلية داخل هذه المجموعة.

--hash-init rnd
    حدد البذرة العشوائية المستخدمة لتهيئة التجزئة.

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

--set-xmark value[/mask]
    صفر البتات المعطاة بواسطة mask وقم بعملية XOR لـ value في ctmark.

--save-mark [--nfmask nfmask] [--ctmask ctmask]
    انسخ علامة الحزمة (nfmark) إلى علامة الاتصال (ctmark) باستخدام الأقنعة المعطاة. يتم تحديد قيمة nfmark الجديدة كما يلي:

    ctmark = (ctmark & ~ctmask) ^ (nfmark & nfmask)

    أي أن ctmask يحدد البتات المراد مسحها و nfmask يحدد بتات nfmark المراد XORها في ctmark. القيمة المبدئية لـ ctmask و nfmask هي 0xFFFFFFFF.

--restore-mark [--nfmask nfmask] [--ctmask ctmask]
    انسخ علامة الاتصال (ctmark) إلى علامة الحزمة (nfmark) باستخدام الأقنعة المعطاة. تُحدد قيمة ctmark الجديدة كالتالي:

    nfmark = (nfmark & ~nfmask) ^ (ctmark & ctmask);

    أي أن nfmask يحدد البتات المراد مسحها و ctmask يحدد بتات ctmark المراد XORها في nfmark. القيمة المبدئية لـ ctmask و nfmask هي 0xFFFFFFFF.

    --restore-mark صالح فقط في جدول mangle.

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

--and-mark بتات
    قم بعملية AND ثنائية للـ ctmark مع بتات. (مختصر لـ --set-xmark 0/بتات_مقلوبة، حيث بتات_مقلوبة هي النفي الثنائي لـ بتات.)

--or-mark بتات
    قم بعملية OR ثنائية للـ ctmark مع بتات. (مختصر لـ --set-xmark بتات/بتات.)

--xor-mark بتات
    قم بعملية XOR ثنائية للـ ctmark مع بتات. (مختصر لـ --set-xmark بتات/0.)

--set-mark قيمة[/قناع]
    اضبط علامة الاتصال. إذا تم تحديد قناع، فسيتم تعديل البتات المحددة في القناع فقط.

--save-mark [--mask قناع]
    انسخ nfmark إلى ctmark. إذا تم تحديد قناع، فسيتم نسخ تلك البتات فقط.

--restore-mark [--mask قناع]
    انسخ ctmark إلى nfmark. إذا تم تحديد قناع، فسيتم نسخ تلك البتات فقط. هذا صالح فقط في جدول mangle.

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

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

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

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

--notrack
    يعطل تتبع الاتصال لهذه الحزمة.

--helper name
    استخدم المساعد المُعرّف بواسطة name للاتصال. هذا أكثر مرونة من تحميل وحدات مساعد conntrack بمنافذ محددة مسبقًا.

--ctevents event[,...]
    قم فقط بتوليد أحداث conntrack المحددة لهذا الاتصال. أنواع الأحداث الممكنة هي: new, related, destroy, reply, assured, protoinfo, helper, mark (يشير هذا إلى ctmark، وليس nfmark), natseqinfo, secmark (ctsecmark).

--expevents event[,...]
    قم فقط بتوليد أحداث التوقع المحددة لهذا الاتصال. أنواع الأحداث الممكنة هي: new.

--zone-orig {id|mark}
    بالنسبة لحركة المرور القادمة من الاتجاه الأصلي، خصص هذه الحزمة للمنطقة id واجعل عمليات البحث تتم فقط في تلك المنطقة. إذا تم استخدام mark بدلاً من id، فتُشتق المنطقة من nfmark للحزمة.

--zone-reply {id|mark}
    بالنسبة لحركة المرور القادمة من اتجاه الرد، خصص هذه الحزمة للمنطقة id واجعل عمليات البحث تتم فقط في تلك المنطقة. إذا تم استخدام mark بدلاً من id، فتُشتق المنطقة من nfmark للحزمة.

--zone {id|mark}
    خصص هذه الحزمة للمنطقة id واجعل عمليات البحث تتم فقط في تلك المنطقة. إذا تم استخدام mark بدلاً من id، فتُشتق المنطقة من nfmark للحزمة. افتراضيًا، الحزم لها منطقة 0. ينطبق هذا الخيار على كلا الاتجاهين.

--timeout name
    استخدم سياسة المهلة المحددة بواسطة name للاتصال. يوفر هذا تعريفًا أكثر مرونة لسياسة المهلة مقارنة بقيم المهلة العامة المتاحة في /proc/sys/net/netfilter/nf_conntrack_*_timeout_*.

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

--to-destination [ipaddr[-ipaddr]][:port[-port[/baseport]]]
    والذي يمكنه تحديد عنوان 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".

--random
    عشوائية تعيين منفذ المصدر (النواة >= 2.6.22).

--persistent
    يعطي العميل نفس عنوان المصدر/الوجهة لكل اتصال. يحل هذا محل هدف SAME. دعم التعيينات المستمرة متاح منذ 2.6.29-rc2.

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

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

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

--src-pfx [prefix/length]
    اضبط بادئة المصدر التي تريد ترجمتها والطول

--dst-pfx [prefix/length]
    اضبط بادئة الوجهة التي تريد استخدامها في الترجمة والطول

يجب استخدام هدف 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.

--set-dscp قيمة
    اضبط حقل DSCP على قيمة رقمية (يمكن أن تكون عشرية أو سداسية عشرية)

--set-dscp-class فئة
    اضبط حقل DSCP على فئة DiffServ.

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

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

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

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

--hl-set قيمة
    اضبط حد القفز على `قيمة'.

--hl-dec قيمة
    إنقاص حد القفز بمقدار `القيمة` مرة.

--hl-inc القيمة
    زيادة حد القفز بمقدار `القيمة` مرة.

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

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

--hmark-tuple الصف
    أعضاء الصف المحتملون هم: src بمعنى عنوان المصدر (عنوان IPv4، IPv6)، dst بمعنى عنوان الوجهة (عنوان IPv4، IPv6)، sport بمعنى منفذ المصدر (TCP، UDP، UDPlite، SCTP، DCCP)، dport بمعنى منفذ الوجهة (TCP، UDP، UDPlite، SCTP، DCCP)، spi بمعنى مؤشر معلمة الأمان (AH، ESP)، وct بمعنى استخدام صف التتبع (conntrack) بدلاً من محددات الحزمة.

--hmark-mod القيمة (يجب أن تكون > 0)
    المعامل لحساب التجزئة (لتحديد نطاق العلامات الممكنة)

--hmark-offset القيمة
    الإزاحة لبدء العلامات منها.

للاستخدام المتقدم، بدلاً من استخدام --hmark-tuple، يمكنك تحديد
    البادئات والأقنعة:

--hmark-src-prefix cidr
    قناع عنوان المصدر بترميز CIDR.

--hmark-dst-prefix cidr
    قناع عنوان الوجهة بترميز CIDR.

--hmark-sport-mask القيمة
    قناع منفذ مصدر 16 بت بالنظام الست عشري.

--hmark-dport-mask قيمة
    قناع منفذ وجهة 16 بت بالنظام الست عشري.

--hmark-spi-mask قيمة
    حقل 32 بت مع قناع spi.

--hmark-proto-mask قيمة
    حقل 8 بت مع رقم بروتوكول الطبقة 4.

--hmark-rnd قيمة
    قيمة عشوائية مخصصة 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 إلى مساحة المستخدم، والتي يمكنها بعد ذلك تحديد ما يجب فعله (مثل قطع الاتصال لتوفير الطاقة).

--timeout مقدار
    هذا هو الوقت بالثواني الذي سيُشغّل الإشعار.

--label سلسلة
    هذا معرّف فريد للمؤقت. الحد الأقصى لطول سلسلة الوسم هو 27 حرفًا.

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

--led-trigger-id الاسم
    هذا هو الاسم المُعطى لمشغل LED. سيتم إضافة البادئة "netfilter-" إلى الاسم الفعلي للمشغل.

--led-delay مللي ثانية
    يُشير هذا إلى المدة (بالمللي ثانية) التي يجب أن يظل فيها LED مضاءً عند وصول حزمة قبل إطفائه مرة أخرى. المبدئي هو 0 (وميض بأسرع ما يمكن). يمكن إعطاء القيمة الخاصة inf لترك LED مضاءً بشكل دائم بمجرد تنشيطه. (في هذه الحالة، يجب فصل المشغل يدويًا وإعادة توصيله بجهاز LED لإطفائه مرة أخرى.)

--led-always-blink
    اجعل 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).

--log-level المستوى
    مستوى التسجيل، والذي يمكن أن يكون رقميًا (خاصًا بالنظام) أو ذاكريًا. القيم الممكنة هي (بترتيب تنازلي للأولوية): emerg، alert، crit، error، warning، notice، info أو debug.

--log-prefix البادئة
    أسبق رسائل السجل بالبادئة المحددة؛ يصل طولها إلى 29 حرفًا، ومفيدة لتمييز الرسائل في السجلات.

--log-tcp-sequence
    سجل أرقام تسلسل TCP. هذا يشكل خطرًا أمنيًا إذا كان السجل قابلاً للقراءة من قبل المستخدمين.

--log-tcp-options
    سجل الخيارات من رأس حزمة TCP.

--log-ip-options
    سجل الخيارات من رأس حزمة IP/IPv6.

--log-uid
    سجل معرف المستخدم للعملية التي أنشأت الحزمة.

--log-macdecode
    سجل عناوين MAC والبروتوكول.

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

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

--set-mark قيمة[/قناع]
    يُصفّر البتات المعطاة بواسطة mask ويُجري OR لـ value في علامة الحزمة. إذا تم حذف mask، يُفترض 0xFFFFFFFF.

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

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

--or-mark بتات
    قم بعملية OR ثنائية لـ nfmark مع bits. (ذاكرة مساعدة لـ --set-xmark bits/bits.)

--xor-mark بتات
    قم بعملية XOR ثنائية لـ nfmark مع bits. (ذاكرة مساعدة لـ --set-xmark bits/0.)

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

--to-ports port[-port]
    يحدد هذا نطاقًا من منافذ المصدر لاستخدامها، متجاوزًا الاستدلال الافتراضي لاختيار منفذ المصدر لـ SNAT (انظر أعلاه). هذا صالح فقط إذا كانت القاعدة تحدد أيضًا أحد البروتوكولات التالية: tcp أو udp أو dccp أو sctp.

--random
    عشوائية تعيين منفذ المصدر (النواة >= 2.6.21). منذ النواة 5.0، --random مطابق لـ --random-fully.

--random-fully
    تعيين منفذ المصدر بعشوائية كاملة (النواة >= 3.13).

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

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

--to address[/mask]
    عنوان الشبكة المراد التعيين إليه. سيتم بناء العنوان الناتج بالطريقة التالية: جميع البتات 'الواحدة' في القناع تُملأ من `العنوان` الجديد. جميع البتات التي تكون صفرًا في القناع تُملأ من العنوان الأصلي.

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

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

--nflog-group nlgroup
    مجموعة netlink (0–2^16-1) التي تُرسل إليها الحزم (تنطبق فقط على nfnetlink_log). القيمة المبدئية هي 0.

--nflog-prefix prefix
    سلسلة بادئة لتضمينها في رسالة السجل، بطول يصل إلى 64 حرفًا، مفيدة لتمييز الرسائل في السجلات.

--nflog-range size
    لم يعمل هذا الخيار مطلقًا، استخدم --nflog-size بدلاً من ذلك

--nflog-size size
    عدد البايتات المراد نسخها إلى مساحة المستخدم (تنطبق فقط على nfnetlink_log). قد تحدد مثيلات nfnetlink_log نطاقها الخاص، ويتجاوز هذا الخيار ذلك.

--nflog-threshold size
    عدد الحزم المراد وضعها في قائمة الانتظار داخل النواة قبل إرسالها إلى مساحة المستخدم (تنطبق فقط على nfnetlink_log). تؤدي القيم الأعلى إلى حمل أقل لكل حزمة، ولكنها تزيد التأخير حتى تصل الحزم إلى مساحة المستخدم. القيمة المبدئية هي 1.

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

--queue-num قيمة
    يُحدد هذا رقم قائمة الانتظار المراد استخدامها. أرقام قوائم الانتظار الصالحة هي من 0 إلى 65535. القيمة المبدئية هي 0.

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

--queue-bypass
    مبدئيًا، إذا لم يكن هناك برنامج مساحة مستخدم يستمع على NFQUEUE، فتُسقط جميع الحزم التي ستُوضع في قائمة الانتظار. عند استخدام هذا الخيار، تتصرف قاعدة NFQUEUE مثل ACCEPT بدلاً من ذلك، وتنتقل الحزمة إلى الجدول التالي.

--queue-cpu-fanout
    متاح بدءًا من نواة لينكس 3.10. عند استخدامه مع --queue-balance، سيستخدم هذا معرف وحدة المعالجة المركزية كمؤشر لتعيين الحزم إلى قوائم الانتظار. الفكرة هي أنه يمكنك تحسين الأداء إذا كان هناك قائمة انتظار لكل وحدة معالجة مركزية. يتطلب هذا تحديد --queue-balance.

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

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

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

--rateest-interval مقدار{s|ms|us}
    فاصل قياس المعدل، بالثواني أو الميلي ثانية أو الميكرو ثانية.

--rateest-ewmalog قيمة
    ثابت زمني لمتوسط قياس المعدل.

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

--to-ports port[-port]
    يحدد هذا منفذ وجهة أو نطاق من المنافذ لاستخدامها: بدون هذا، لا يتم تغيير منفذ الوجهة أبدًا. هذا صالح فقط إذا كانت القاعدة تحدد أيضًا أحد البروتوكولات التالية: tcp، udp، dccp أو sctp. لمنفذ واحد، يمكن استخدام اسم خدمة كما هو مدرج في /etc/services.

--random
    عشوائية تعيين منفذ المصدر (النواة >= 2.6.22).

دعم IPv6 متاح بدءًا من نوى Linux >= 3.7.

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

--reject-with type
    يمكن أن يكون النوع المعطى 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، والسلاسل المعرفة من قبل المستخدم والتي تُستدعى فقط من تلك السلاسل. الخيار التالي يتحكم في طبيعة حزمة الخطأ المرتجعة:

--reject-with type
    يمكن أن يكون النوع المعطى 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 بت.

--selctx security_context

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

--add-set اسم_المجموعة علم[,علم...]
    أضف عنوان/منافذ الحزمة إلى المجموعة

--del-set اسم_المجموعة علم[,علم...]
    احذف عنوان/منافذ الحزمة من المجموعة

--map-set اسم_المجموعة علم[,علم...]
    [--map-mark] [--map-prio] [--map-queue] خصص خصائص الحزمة (علامة جدار الحماية، أولوية tc، قائمة انتظار الأجهزة)

    حيث علم(الأعلام) هي مواصفات src و/أو dst ولا يمكن أن يتجاوز عددها ستة.

--timeout قيمة
    عند إضافة مدخل، قيمة المهلة المستخدمة بدلاً من القيمة المبدئية من تعريف المجموعة

--exist
    عند إضافة مدخل إذا كان موجودًا بالفعل، أعد تعيين قيمة المهلة إلى القيمة المحددة أو إلى القيمة المبدئية من تعريف المجموعة

--map-set اسم_المجموعة
    يجب إنشاء اسم المجموعة مع خيار --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، والسلاسل المعرفة من قبل المستخدم والتي تُستدعى فقط من تلك السلاسل. يحدد أن عنوان المصدر للحزمة يجب تعديله (وستُشوه جميع الحزم المستقبلية في هذا الاتصال أيضًا)، ويجب التوقف عن فحص القواعد. يأخذ الخيارات التالية:

--to-source [عنوان_IP[-عنوان_IP]][:منفذ[-منفذ]]
    يمكنه تحديد عنوان IP مصدر واحد جديد، أو نطاق شامل من عناوين IP. اختياريًا نطاق منافذ، إذا كانت القاعدة تحدد أيضًا أحد البروتوكولات التالية: tcp أو udp أو dccp أو sctp. إذا لم يُحدد نطاق منافذ، فسيتم تعيين منافذ المصدر الأقل من 512 إلى منافذ أخرى أقل من 512: تلك بين 512 و 1023 شاملة سيتم تعيينها إلى منافذ أقل من 1024، وسيتم تعيين المنافذ الأخرى إلى 1024 أو أعلى. حيثما أمكن، لن يحدث أي تغيير في المنفذ.

--random
    عشوائية تعيين المنفذ المصدر عبر خوارزمية تعتمد على التجزئة (النواة >= 2.6.21).

--random-fully
    عشوائية كاملة لتعيين المنفذ المصدر عبر مولد أرقام عشوائية زائفة (PRNG) (النواة >= 3.14).

--persistent
    يعطي العميل نفس عنوان المصدر/الوجهة لكل اتصال. يحل هذا محل هدف SAME. دعم التعيينات المستمرة متاح منذ 2.6.29-rc2.

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

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

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

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

--src-pfx [prefix/length]
    اضبط بادئة المصدر التي تريد ترجمتها والطول

--dst-pfx [prefix/length]
    اضبط بادئة الوجهة التي تريد استخدامها في الترجمة والطول

يجب استخدام هدف 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.

--mss الحد الأقصى لحجم القطعة
    الحد الأقصى لحجم القطعة المُعلَن للعملاء. يجب أن يتطابق هذا مع النظام الخلفي.

--wscale مقياس النافذة
    مقياس النافذة المُعلَن للعملاء. يجب أن يتطابق هذا مع النظام الخلفي.

--sack-perm
    تمرير خيار الإقرار الانتقائي للعميل إلى النظام الخلفي (سيُعطّل إذا لم يكن موجودًا).

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

مثال:

تحديد خيارات 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

--set-mss قيمة
    يضبط خيار MSS صراحةً إلى القيمة المحددة. إذا كان MSS للحزمة أقل بالفعل من القيمة، فلن يتم زيادته (بدءًا من Linux 2.6.25) لتجنب المزيد من المشكلات مع المضيفين الذين يعتمدون على MSS صحيح.

--clamp-mss-to-pmtu
    يضبط قيمة 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.

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

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

--gateway عنوان_ip
    أرسل الحزمة المستنسخة إلى المضيف الذي يمكن الوصول إليه في عنوان 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.

--set-tos قيمة[/قناع]
    يصفّر البتات المعطاة بواسطة القناع (انظر الملاحظة أدناه) ويقوم بعملية XOR لـ القيمة في حقل TOS/الأولوية. إذا تم حذف القناع، يُفترض 0xFF.

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

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

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

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

--xor-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 والسلاسل المعرفة من قبل المستخدم والتي تُستدعى فقط من هذه السلسلة. يعيد توجيه الحزمة إلى مقبس محلي دون تغيير رأس الحزمة بأي شكل. يمكنه أيضًا تغيير قيمة العلامة التي يمكن استخدامها بعد ذلك في قواعد التوجيه المتقدمة. يقبل ثلاثة خيارات:

--on-port منفذ
    يحدد هذا منفذ وجهة لاستخدامه. هو خيار مطلوب، يعني 0 أن منفذ الوجهة الجديد هو نفسه الأصلي. هذا صالح فقط إذا كانت القاعدة تحدد أيضًا -p tcp أو -p udp.

--on-ip عنوان
    يحدد هذا عنوان وجهة لاستخدامه. بشكل مبدئي، العنوان هو عنوان IP للواجهة الواردة. هذا صالح فقط إذا كانت القاعدة تحدد أيضًا -p tcp أو -p udp.

--tproxy-mark قيمة[/قناع]
    يضع علامات على الحزم بالقيمة/القناع المعطى. يمكن استخدام قيمة 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-set قيمة
    يضبط قيمة TTL إلى `قيمة'.

--ttl-dec قيمة
    يقلل قيمة TTL بمقدار `قيمة' مرة.

--ttl-inc قيمة
    يزيد قيمة TTL بمقدار `قيمة' مرة.

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

--ulog-nlgroup مجموعة_nl
    يحدد هذا مجموعة netlink (1–32) التي تُرسل إليها الحزمة. القيمة المبدئية هي 1.

--ulog-prefix بادئة
    يسبق رسائل السجل بالبادئة المحددة؛ بطول يصل إلى 32 حرفًا، ومفيد لتمييز الرسائل في السجلات.

--ulog-cprange حجم
    عدد البايتات التي تُنسخ إلى مساحة المستخدم. قيمة 0 تنسخ دائمًا الحزمة بأكملها، بغض النظر عن حجمها. المبدئي هو 0.

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

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

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

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