iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.3:8080
|
المكوّن
|
الوصف
|
|---|---|
-t nat
|
اعمل في جدول
nat...
|
-A PREROUTING
|
... مُلحِقاً القاعدة التالية بسلسلة التوجيه المسبق
(PREROUTING) الخاصة بها.
|
-i eth1
|
عالج الحزم الوافدة على الواجهة الشبكية
eth1...
|
-p tcp
|
... التي تستخدم بروتوكول
tcp (TCP/IP)
|
--dport 80
|
... والمخصصة للمنفذ المحلي
80.
|
-j DNAT
|
تخط إلى الهدف
DNAT...
|
--to-destination
192.168.1.3:8080
|
... وغير عنوان الوجهة إلى
192.168.1.3 ومنفذ الوجهة إلى 8080.
|
PREROUTING، INPUT، FORWARD، POSTROUTING وOUTPUT. تُلحَق السلاسل المدمجة بنقاط الإرساء، حيث يمكنك إضافة مجموعة من القواعد لكل نقطة إرساء. بينما تسمح كل قاعدة بتعديل دفق الحزم أو مراقبته.
(PREROUTING) لجدول NAT"، مما يولد الانطباع بأن السلاسل تنتمي للجداول. لكن السلاسل والجداول ليست مرتبطة ببعضها البعض إلا بشكل جزئي، ولا أحد منها "ينتمي" في الحقيقة للآخر. تشكل السلاسل نقاط الإرساء في دفق الحزم، بينما تمثل الجداول أنماط المعالجة التي يمكن تطبيقها. الشكل 1.1, “دفق الحزم الشبكية ونقاط الإرساء لترجمة عناوين الشبكة” إلى الشكل 1.3, “دفق الحزم الشبكية ونقاط الإرساء للتبديل” يوضح كافة التراكيب الجائزة، والترتيب الذي تتواجد فيه عند تدفق الحزم عبر النظام.
nat.
filter.
mangle.
|
نقطة الإرساء
|
تسمح لك بمعالجة الحزم...
|
|---|---|
FORWARD
|
... التي تمر عبر بوابة، داخلةً في إحدى الواجهات وخارجةَ مباشرة عبر أخرى.
|
INPUT
|
... مباشرة قبل تسليمها للعملية المحلية.
|
OUTPUT
|
... مباشرة بعد توليدها من قِبَل عملية محلية.
|
POSTROUTING
|
... مباشرة قبل مغادرتها للواجهة الشبكية.
|
PREROUTING
|
... فور وصولها من واجهة شبكية (بعد حذف أي حزم ناتجة عن تواجد الواجهة في النمط المختلط [promiscuous mode]، وبعد التحقق من المجاميع الاختبارية).
|
NF_IP_FORWARD، {IN,OUT}NF_IP_LOCAL_ وNF_IP_{PRE,POST}_ROUTING.
(OUTPUT) لأن سلسلة التوجيه اللاحق (POSTROUTING) غير مرتبطة بجدول التصفية filter.
filter (تصفية)،mangle (تبديل)وnat (ترجمة العناوين). كل جدول مهيئ مسبقاً بسلاسل ملائمة لواحدة أو أكثر من نقاط الإرساء الموصوفة في الجدول 1.2, “نقاط الإرساء” والمعروضة في الشكل 1.1, “دفق الحزم الشبكية ونقاط الإرساء لترجمة عناوين الشبكة” إلى الشكل 1.3, “دفق الحزم الشبكية ونقاط الإرساء للتبديل”. الجداول الثلاثة المدمجة موصوفة في الجدول 1.3, “الجداول المُدمَجة”.
|
الجدول
|
الوصف
|
|---|---|
nat
|
يُستَخدَمُ مع تعقب الاتصال لإعادة توجيه الاتصالات بغرض ترجمة عناوين الشبكة؛ يرتكز عادة على عناوين المصدر أو الهدف. سلاسله المدمجة هي كالتالي:
OUTPUT، POSTROUTING وPREROUTING.
|
filter (تصفية)
|
يستخدم لضبط السياسات المتعلقة بنوع الحركة المسموح لها بالدخول إلى الحاسوب والخروج منه أو المرور عبره. إذا لم تذكر أي جدول آخر بشكل صريح، فإن iptables سيستخدم السلاسل المتواجدة في هذا الجدول بشكل تلقائي. السلاسل المدمجة في هذا الجدول هي كالتالي:
FORWARD، INPUT وOUTPUT.
|
mangle (تبديل)
|
يُستَخدم للتعديل المتخصص للحزم، مثل حذف بعض خيارات بروتوكول الإنترنت (كما هو الشأن بالنسبة لامتداد الهدف
IPV4OPTSSTRIP). السلاسل المدمجة في هذا الجدول هي كالتالي: FORWARD، INPUT، OUTPUT، POSTROUTING وPREROUTING.
|
iptables، فإن الجدول الافتراضي سيكون هو جدول filter.
ACCEPT [اقبل] وDROP [احذف] قابلان للاستعمال كسياسة للسلاسل المدمجة، والهدف الافتراضي هو ACCEPT. تتوفر كل السلاسل المحددة من قبل المستخدم على سياسة ضمنية غير قابلة للتغيير من نوع RETURN [رجوع].
RETURN لإحدى السلاسل المُحدَّدة من قبل المستخدم، يمكنك إضافة قاعدة تطبق على كافة الحزم لنهاية السلسلة مع الهدف الذي تريده. يمكنك استخدام سياسة الحذف (DROP) للحالات التي قد ترتكب فيها خطأ في قاعدتك "العامة"، أو لتصفية حركة المرور عند إجراء أي تعديلات على القاعدة المذكورة (من خلال إلغائها وإضافتها من جديد مع التغييرات الحديثة).
|
الجدول
|
السلسلة
|
|---|---|
mangle
|
PREROUTING – توجيه مسبق
|
nat
|
PREROUTING – توجيه مسبق
|
mangle
|
FORWARD – تمرير
|
filter
|
FORWARD – تمرير
|
mangle
|
POSTROUTING – توجيه لاحق
|
nat
|
POSTROUTING – توجيه لاحق
|
|
الجدول
|
السلسلة
|
|---|---|
mangle
|
PREROUTING – توجيه مسبق
|
nat
|
PREROUTING – توجيه مسبق
|
mangle
|
INPUT – دخل
|
filter
|
INPUT – دخل
|
|
الجدول
|
السلسلة
|
|---|---|
mangle
|
OUTPUT – خرج
|
nat
|
OUTPUT – خرج
|
filter
|
OUTPUT – خرج
|
mangle
|
POSTROUTING – توجيه لاحق
|
nat
|
POSTROUTING – توجيه لاحق
|
|
الجدول
|
السلسلة
|
|---|---|
mangle
|
OUTPUT – خرج
|
nat
|
OUTPUT – خرج
|
filter
|
OUTPUT – خرج
|
filter
|
INPUT – دخل
|
mangle
|
INPUT – دخل
|
(FORWARD) في جدول filter بواسطة الأمر الآتي:
iptables -t filter -A FORWARD
أو --match لإبلاغ iptables بأنك تريد استخدام إحدى هذه الامتدادات).
mac على عناوين MAC إيثرنت.
|
الهدف
|
الوصف
|
|---|---|
ACCEPT
|
دع الحزمة تمر إلى مرحلة المعالجة الموالية. توقف عن اجتياز السلسلة الحالية وابدأ عند الخطوة الموالية المبينة في الشكل 1.1, “دفق الحزم الشبكية ونقاط الإرساء لترجمة عناوين الشبكة” إلى الشكل 1.3, “دفق الحزم الشبكية ونقاط الإرساء للتبديل” (والجدول 1.4, “انسياب الحزمة من واجهة شبكية إلى الأخرى (تمرير – forwarding)” إلى الجدول 1.7, “انسياب الحزمة من عملية محلية إلى عملية محلية أخرى (local)”).
|
DROP
|
أوقف معالجة الحزمة بشكل كامل. لا تطبق أي قواعد ولا سلاسل أو جداول أخرى. استخدم امتداد الهدف
REJECT إذا كنت تريد توجيه رد للمُرسِل.
|
QUEUE
|
أرسل الحزمة إلى مساحة المستخدم (أي الكود الذي لا يتواجد في النواة). للحصول على المزيد من المعلومات بهذا الشأن، راجع صفحة دليل libipq.
|
RETURN
|
انطلاقاً من القاعدة المتواجدة في سلسلةٍ مُحدَّدة من قبل المستخدم، أوقف معالجة هذه السلسلة، ثم استأنف اجتياز السلسلة المُنادِيَة عند القاعدة الموالية لتلك التي كانت هذه السلسلة هدفاً لها. انطلاقاً من القاعدة المتواجدة في سلسلة مُحدَّدة من قبل المستخدم، أوقف معالجة الحزمة وطبق سياسة السلسلة عليها. انظر الفقرة السابقة قسم 1.1.2.2, “السلاسل” للحصول على المزيد من المعلومات حول سياسات السلاسل.
|
chkconfig --list iptables
chkconfig --levels 345 iptables on
service iptables start
service iptables stop
|
المسار
|
الغرض
|
|---|---|
|
/etc/sysctl.conf
|
يتضمن إعدادات التهيئة التي تُطبق خلال الإقلاع بدليل /proc/sys. فعلى سبيل المثال، يمكنك ضبط /proc/sys/net/ipv4/ip_forward على القيمة
1 خلال الإقلاع عبر إضافة الإدخال net.ipv4.ip_forward = 1 إلى هذا الملف.
|
|
/proc/net/ip_conntrack
|
ينسخ محتوى بِنَى تعقب الاتصال عند قراءتك لها.
|
|
/proc/sys/net/ipv4/ip_conntrack_max
|
يتحكم في حجم جدول تعقب الاتصال بالنواة. تحسب القيمة الافتراضية بالارتكاز على كمية ذاكرة الوصول العشوائي في حاسوبك. قد تحتاج للرفع من قدر هذه الذاكرة في حالة توصلك بأخطاء من نوع "
ip_conntrack: table full, dropping packet" في ملفات السجلات. انظر أيضاً الإدخال /etc/sysctl.conf في هذا الجدول.
|
|
/proc/sys/net/ipv4/ip_forward
|
يجب عليك ضبط هذه القيمة على
1 إذا أردت أن يتصرف المضيف كبوابة (لتمرير الحزم عبر الشبكات المتصلة بواجهاته البينية). انظر أيضاً الإدخال /etc/sysctl.conf في هذا الجدول.
|
uname -r، والذي سيصدر رسالة كهذه:
2.4.20–20.9 |
uname -a (انظر صفحة دليل uname لمعرفة المزيد عن هذا الأمر). استخدام هذه المعلومات سيمكنك من تحديد ملف الإعدادات الأكثر ملاءمة لإنشاء النواة الجديدة في ملف كالآتي (سوف نستخدم i636 في هذا المثال): /usr/src/linux-2.4.20-20.9/configs/kernel-2.4.20-i686.config.
*_CONFIG_IP_NF.
CONFIG_PACKET (اتصال مباشر مع الواجهات الشبكية)
CONFIG_NETFILTER (دعم النواة الأساسي المشترط من قبل iptables)
CONFIG_IP_NF_CONNTRACK (ضروري لترجمة عناوين الشبكة والتنكر)
CONFIG_IP_NF_FILTER (لإضافة جدول filter)
CONFIG_IP_NF_IPTABLES (الدعم الأساسي لأداة iptables الخاصة بمساحة المستخدم)
CONFIG_IP_NF_MANGLE (لإضافة جدول mangle)
CONFIG_IP_NF_NAT (لإضافة جدول nat)
CONFIG_IP_NF_COMPAT_IPCHAINS
CONFIG_IP_NF_COMPAT_IPFWADM
conntrack.
|
الحالة
|
الوصف
|
|---|---|
ESTABLISHED
|
الاتصال رأى سلفاً حُزماً تمر بالاتجاهين. انظر أيضاً الحالة
SEEN_REPLY.
|
INVALID
|
الحزمة لا تنتمي لأي اتصال من الاتصالات المتعقبة.
|
NEW
|
الحزمة بصدد إطلاق اتصال جديد أو تنتمي لاتصال لم ير بعد أي حزم تمر بالاتجاهين.
|
RELATED
|
الحزمة بصدد إطلاق اتصال جديد، لكن الاتصال الجديد مرتبط باتصال قائم (مثل اتصال نقل البيانات ببروتوكول FTP).
|
conntrack التطابقي (الخيار --ctstatus).
helper.
|
البروتوكول
| |
|---|---|
|
ip_conntrack_amanda
|
بروتوكول Amanda للنسخ الاحتياطي (يتطلب خيار إعداد النواة
CONFIG_IP_NF_AMANDA)
|
|
ip_conntrack_ftp
|
بروتوكول FTP لنقل الملفات (يتطلب خيار إعداد النواة
CONFIG_IP_NF_FTP)
|
|
ip_conntrack_irc
|
المحادثة المنقولة بالإنترنت (تتطلب خيار إعداد النواة
CONFIG_IP_NF_IRC)
|
|
ip_conntrack_tftp
|
بروتوكول نقل الملفات المبسط (يتطلب خيار إعداد النواة
CONFIG_IP_NF_TFTP).
|
eth0 للشبكة الداخلية وeth1 للاتصال بالإنترنت)، فإن النواة ستراقب عدد الحزم والبايتات المتبادلة مع العالم الخارجي.
iptables -A FORWARD -i eth1 iptables -A FORWARD -o eth1 iptables -A INPUT -i eth1 iptables -A OUTPUT -o eth1
iptables -L -v المعلومات الآتية (لاحظ التعدادات المرتبطة بكل من INPUT وOUTPUT؛ تشير القيم المخالفة للصفر إلى مرور حزم عبر السلاسل خلال عرض الإحصاءات):
Chain INPUT (policy ACCEPT 27 packets, 1728 bytes) pkts bytes target prot opt in out source destination 3 192 all -- eth1 any anywhere anywhere Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 all -- eth1 any anywhere anywhere 0 0 all -- any eth1 anywhere anywhere Chain OUTPUT (policy ACCEPT 21 packets, 2744 bytes) pkts bytes target prot opt in out source destination 3 192 all -- any eth1 anywhere anywhere
-c، -n، -t و-x في الجدول 1.14, “أدوات مساعدة”، وتلك المتعلقة بالخيارات -L و-Z في الجدول 1.15, “خيارات متنوعة في iptables” لمعرفة المزيد عن الخيارات الصالحة لتطبيقات التعداد في iptables.
nat المدمج قد صمم خصيصاً للاستخدام في التطبيقات الخاصة بترجمة عناوين الشبكة.
|
الوحدة المساعدة
|
البروتوكول
|
|---|---|
|
ip_nat_amanda
|
بروتوكول Amanda للنسخ الاحتياطي (يتطلب خيار إعداد النواة
CONFIG_IP_NF_NAT_AMANDA)
|
|
ip_nat_ftp
|
بروتوكول FTP لنقل الملفات (يتطلب خيار إعداد النواة
CONFIG_IP_NF_NAT_FTP)
|
|
ip_nat_irc
|
المحادثة المنقولة بالإنترنت (تتطلب خيار إعداد النواة
CONFIG_IP_NF_NAT_IRC)
|
|
ip_nat_snmp_basic
|
بروتوكول إدارة الشبكات البسيط (يتطلب خيار إعداد النواة
CONFIG_IP_NF_NAT_SNMP_BASIC)
|
|
ip_nat_tftp
|
بروتوكول نقل الملفات المبسط (يتطلب خيار إعداد النواة
CONFIG_IP_NF_NAT_TFTP).
|
ACCEPT. احرص على وضع هذه القواعد قبل كافة قواعد NAT الأخرى.
iptables -t nat -i eth1 ... -j ACCEPT
POSTROUTING بجدول nat.
SNAT للحالات التي تملك فيها البوابة عنوان IP ثابت، بينما يخصص امتداد الهدف MASQUERADE للحالات التي تتوفر فيها البوابة على عنوان IP ديناميكي. ويوفر امتداد الهدف MASQUERADE تقنيات إضافية لمعالجة الحالات التي قد تخرج فيها الواجهة الشبكية عن الخط قبل عودتها بعنوان مختلف. تقتضي هذه التقنيات إجراء عمليات إضافية، مما ينعكس على أداء المُعالِج. إذا كنت تملك عنوان IP ثابت، فعليك باستخدام امتداد الهدف SNAT.
eth1 من خلال إضافة قاعدة بسيطة لسلسلة التوجيه اللاحق (POSTROUTING) بجدول nat:
iptables -t nat -A POSTROUTING -o eth1 -j SNAT
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
PREROUTING بجدول nat.
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.3:8080
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8888
iplimit، limit وrecent أو امتدادات تطابقية أخرى).
|
الأدوات
|
الوصف
|
|---|---|
|
أداة لتحليل البروتوكولات الشبكية.
| |
|
ماسح أمني نائيّ.
| |
|
مُخطِّط للشبكات.
| |
|
فحص ومراقبة الحركة عبر الشبكة.
| |
|
إرسال حزم ICMP ECHO_REQUEST إلى مضيفات معينة.
| |
|
التقاط ونسخ الحزم
| |
|
عرض المسار المتبع من قبل الحزم للوصول إلى مضيف معين.
|