الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Iproute2 For Controlling Tcp/ip Networking&traffic Control On Linux

بدأه برق في 29 يوليو 2008 · 8 رد · 2,340 مشاهدة · في نظام تشغيل Unix & Linux
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

iproute2 عبارة عن مجموعة من البرامج للتحكم في TCP/IP networking ، وأيضا للتحكم في traffic ، طبعا هذه الأداة خاصة فقط لنظام linux ، لأنها مرتبطة بأشياء في kernel .

ومن خلالها أيضا تستطيع أن تتحكم في QoS ، وسنتكلم لاحقا إن شاء الله تعالى عن معنى QoS حيث أنه يوجد خلل في فهمها.

كان في السابق ولا يزال برنامج اسمه ifconfig و route ، كانا يقومان بالمهمات الخاصة بعملية networking ، ولكن يوجد فيهما قصور تم تفاديه من خلال iproute2 .

لإنزال الحزمة ، اذهب للرابط: http://developer.osdl.org/dev/iproute2/download

وعند فك الضغط ، قم بعمل make ثم make install .

يمكن إنزال حزمة rpm أو deb الخاص بها كذلك.

غالبا ستكون هذه الحزمة موجودة في distribution التي تعمل عليها.

أرجو من الإخوة الأعضاء عدم إضافة أي تعليق ، يسمح فقط بالردود التي فيها تصحيح لخطأ ورد في الشرح ، أو سؤال ، أو طلب توضيح .

كما أرجو عدم تفعيل التوقيع .

1

System Engineer

Red Hat Certified Engineer

Red Hat Certificate Number

805010381752078

#2

السلام عليكم

بسم الله الرحمن الرحيم

(الجزء الأول)

طبعا لا يخفى علينا أن commands في نظام linux ما هي إلا برامج ، وكل command هو برنامج مستقل عن أي برنامج آخر ، حيث أن كل command عبارة عن برنامج يقوم بشئ واحد فقط ولكن بكفاءة عالية ، وهذه أحد أهم مبادئ وفلسفة linux.

فالحزمة iproute2 تتكون من البرامج أو commands التالية:

/sbin/cbq
/sbin/ifcfg
/sbin/ip
/sbin/rtmon
/sbin/tc
/usr/sbin/arpd
/usr/sbin/lnstat
/usr/sbin/nstat
/usr/sbin/rtacct
/usr/sbin/ss

طبعا هناك ملفات libraries ,configuration files, man , documentations ، طبعا نتجت من عملية compilation للحزمة ، وتأتي هذه الملفات في الحزم rpm,deb,..etc جاهزة

إن شاء الله ، سيتم شرح كل command ، ويجب التنويه أنه لن يتم شرح أي جزء من الشبكات بشكل مسهب ، ولكن سيتم التلميح إذا اقتضى الأمر ، لأن هذه commands موجهة للـ system administrators ، أما بالنسبة للمستخدم العادي ، فهناك برامج ذات واجهة رسومية تسهل له التعامل مع هذه commands، ولكن طبعا لن توجد بها كل options الخاص ب command ، حيث أنه تقوم بوضع default value .

مما لا شك فيه أن system software مكتوبة بلغة++C/C و غالبا ما تكون مكتوبة بـ C ، لذا فأي برنامج له argument والتي يتم تخزينها في argv[] array ، هذا بالنسبة للغتي ++C/C ، أما لو سننظر لها من منظور unix,linux ، فإن كل command له options و arguments .

تنبيه : أي برنامج مكتوب بلغة++C/C ، يحتوي على الأقل على argument واحد أو أكثر ، يتم تخزينهم في []char *argv ، الذي هو عبارة عن أحد argument الدالة الرئيسية main ،و اسم البرنامج نفسه يمكن أن تشير إليه بالتالي:

argv[0]

وباقي arguments ،ستبدأ من [argv[1 ، ثم [argv[2 وهكذا.

لذا فإن اسم command وأي شيء آخر يتبعه سواء كان options,argument ، فهو بالنسبة للبرنامج المكتوب بلغة ++C/C مجرد arguments ، (اختلاف في طرق التسمية فقط )

قبل أن أبدأ سأشرح كيف يمكن قراءة command manual ، حيث أنه من أهم الأشياء بالنسبة لـsystem administrator ، لأن commands كثيرة و options أكثر ، ولا يمكن حفظ كل هذه الأشياء ، بالإضافة أن حفظهم ليس له معنى ولا يميز أحد عن آخر ، لأنها دائمة التغير ويمكن أن تلغى ويظهر أشياء جديدة.

فمثلا : سنأخذ الأمر ip كمثال لشرح كيف يمكن قراءة command manual ، ثم سأبدأ في شرح ip بعد ذلك إن شاء الله.

لو كتبت man ip ، في command line سيظهر لك من ضمن المخرجات السطر التالي:

ip [ OPTIONS ] OBJECT { COMMAND | help }

حيث أن ip هو اسم البرنامج أو command ، والذي بين [] معناه أنه يمكن أن تضع مكانه قيمة ما ،(ويمكن أن لا تضع شيئا، فهذا شيء اختياري) ، ومجموعة هذه القيم لها اسم OPTIONS ، فهنا ستقوم بإزالة [OPTIONS] وتضع مكانها أي قيمة تريد ، طبعا القيم ستجدها في نفس command manual ، أما لو وجدت argument بدون أي رموز حوله ، مثل OBJECT في هذه الحالة ، فهذا يعني أنه يجب أن تضع مكانها قيمة ما ، ولو لم تضع سينتج خطأ.

أما لو وجدت argument بين {} ،فهذا معناه أنه يجب أن تختار بين احداها ، ففي هذه الحالة إما أن تختار COMMAND أو تختار help .

لو وجدت أي argument مكتوب بـ uppercase ، فهذا معناه أنه يجب أن تحل محله القيمة التي يدل هو عليها ، فمثلا: كلمة OBJECT ، وحسب ما هو مكتوب في manual ، فهي تدل على التالي:

 OBJECT := { link | addr | route | rule | neigh | tunnel | maddr | mroute | monitor }

فهذا يعني أنه يجب أن تستبدل OBJECT بأي قيمة من القيم المذكورة.

وكذلك بالنسبة لـ OPTIONS,COMMAND ، فكلاهما يحتويان على قيم ، تجدهم في manual أيضا.

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

تم تعديل هذه المشاركة بواسطة برق في 30 يوليو 2008 في 11:59

1

System Engineer

Red Hat Certified Engineer

Red Hat Certificate Number

805010381752078

#3

(الجزء الثاني)

ip command syantax
ip [ OPTIONS ] OBJECT [ COMMAND [ ARGUMENTS ]]

أولا : OPTIONS

-هي اختيارية ، لأنها بين [] .

-تحتوي على القيم التالية:

V,--Version-

يبين رقم الإصدار .

s,-stats,-statistics-

تبين معلومات أكثر أثناء تنفيذ command ، كمعلومات عن device أو function values ، وسيتم توضيح ذلك أكثر أثناء الشرح.

{f, -family {inet, inet6, link-

هنا يتم تحديد protocol family ، ولو لم يتم تحديده ، فإنه يتم التخمين من خلال باقي arguments .

يدل inet على IP4 و inet6 على IP6 ، و link تدل على أنه لا يوجد protocol محدد.

o,-oneline-

يضع مخرجات الأمر في سطر واحد ، و يستخدم العلامة \ ، للفصل بين السطور.

نفذ الأمر التالي:

ip link

ip -o link

لاحظ الفرق.

r,-resolve-

يظهر DNS name بدلا من ip address ، من خلال استخدام name resolver .

ثانيا: OBJECTS

link

تحدد من خلاله network device سواء كان physical مثل eth,ppp أو logical مثل loop device .

address

تحدد عائلة ip address هل هو ip4 أم ip 6 ؟

neighbour

تربط من خلالها بين ipو mac address للأجهزة الذين يشتركون في physical link واحدة. يمكن أن تسميه ARP table .

route

تنشيء من خلاله static routing table .

rule

هذا OBJECT رائع جدا ، تحدد من خلاله طرق اختيار المسار (route ) ، ولا أريد أن أقول مميزاته الآن.

maddress

يتعامل مع multicast mac address ، سيتم شرح هذا الجزء بالتفصيل من وجهة نظر networking إن شاء الله.

mroute

يختص بـ multicast routing

tunnel

لعمل encapsulating للpacket في ip packet ، ثم نقلها باستخدام ip infrastructure .

-----------------------------------------------------

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

وأرحب بأي تعديل أو توضيح أو سؤال.

وإن شاء الله تعالى سنستمر.

تم تعديل هذه المشاركة بواسطة برق في 31 يوليو 2008 في 20:21

1

System Engineer

Red Hat Certified Engineer

Red Hat Certificate Number

805010381752078

#4

(الجزء الثالث)

ip link

-من خلاله تقوم بعمل configuration للـ network device (بمعنى أوضح network card ) الخاص بك.

-مجموعة COMMAND الخاصة به هي :set,show .

ip link set

-هذا هو الشكل العام لهذاCOMMAND

ip link set DEVICE { up | down | arp { on | off } |

			   promisc { on | off } |

			   allmulti { on | off } |

			   dynamic { on | off } |

			   multicast { on | off } |

			   txqueuelen PACKETS |

			   name NEWNAME |

			   address LLADDR | broadcast LLADDR |

			   mtu MTU }

ARGUMENTS الخاصة به هي :

dev NAME

-تحدد من خلاله network device ، مثلا : eth0,eth1,ppp0 وهكذا.

up/down (علامة / : معناها أن تستخدم إحدى القيمتين ، up أو down )

-تقوم من خلاله بتشغيل أو ايقاف network device

arp on / arp off

-تستطيع تشغيل أو إيقاف arp cache .

-لا تقوم بهذه العملية إلا و network device في حالة down ، وإلا سيحدث خطأ.

multicast on / multicast off

-تستطيع من خلاله أن تقبل أو ترفض multicast packets .

-لمزيد من المعلومات عن multicast ،

http://tldp.org/HOWTO/Multicast-HOWTO.html

-أرجو إذا كان هناك أي سؤال حول multicast فلا تتردد في سؤاله.

name NAME

-لتغيير اسم device ،مثلا من eth0 إلى eth1

txqueuelen NUMBER / txqlen NUMBER

-تغير حجم transmit queue للـ device ، حيث أن transmit queue هو المكان الذي تتواجد فيه packets بعد المعالجة من خلال kernel و قبل الخروج من network device .

mtu NUMBER

-نحدد من خلاله أكبر حجم ممكن للـ packet ، وإلا سيتم عمل fragmentation لها.

address LLADDRESS

-تحدد mac address الخاص بـ network device .

broadcast LLADDRESS/brd LLADDRESS

تحدد link layer address لعملية broadcasting .

Peer LLADDRESS

تحدد peer address في حالة استخدام POINTTOPOINT interface .

promisc on/promisc off

-هذه الخاصية تستطيع من خلالها أن تجعل network device يلتقط أي packet من link ، ويعطيها للـ kernel ، وهي مفيدة في عملية مراقبة الشبكة.

allmulti on/allmulti off

-تجعل network device يستقبل أي multicast packets موجود في link ، وهو مفيد في حالة multicast router .

1

System Engineer

Red Hat Certified Engineer

Red Hat Certificate Number

805010381752078

#5

أنتظر وصولك لل traffic controlling .. :) الأمر tc .

بارك الله فيك يا برق ..

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#6

قريبا إن شاء الله أخي هيثم، وآسف على التأخر ، فأنا مشغول في تعلم موضوع جديد. ولكن ما زلت أكتب عن iproute ، ولكن بشكل بطيء ، وإن شاء الله سأسرّعه.

System Engineer

Red Hat Certified Engineer

Red Hat Certificate Number

805010381752078

#7

موضوع جميل جدا ربنا يجعله فى ميزان حسناتك

#8

السلام عليكم اخي الكريم

فعلا موضوع مميز

اعرف انني تاخرت في الاجابة على الموضوع لأنه مضى حوالي سنة على كتابتك لهذا الموضوع لكن الان بدأ اهتمامي في اللينكس وموضوع الQoS في اللينكس بالتحديد لكنني ارى انك لم تكمل الموضوع لا اعلم ما هو السبب ؟؟!!

اتمنى ان تكمله لأنني بحاجة الى هذا الموضوع

وشكرا جزيلا

#9

الله يجعلها في ميزان حسناتك

الله يسهل امورك وترجع تكمل الدرس

مواضيع مشابهة