5.1 مقدمة في الشبكات | كتاب لينكس الشامل | >> |
الشبكات موضوع متشابك وخطير نحاول هنا أن نقدم ما نجد أن به الفائدة المباشرة ونقترح بشدة العودة إلى الوثائق الأخرى مثل manual pages و info pages ووثائق HOWTO المشار إليها في كل بند. لينكس نظام صمم من أجل الشبكات بكل ما يعنيه ذلك. دعم بطاقات الشبكة ودعم البروتوكولات المختلفة وحتى جدار النار جزء من نواة لينكس بل أن خادم الويب Web المسمى tux عبارة عن module للنواة! بشكل أساسي يعتمد لينكس على شبكات TCP/IP ويوفر دعم لبروتوكولات أخرى مثل IPX و AppleTalk. تمكنك معظم التوزيعات من إعداد الشبكة بطريقة رسومية ولكن معرفة ذلك من سطر الأوامر يوفر لك المزيد من الإمكانيات. كما أنه يعطيك الخبرة الكافية للتعامل مع البرامج الرسومية؛ تذكر أن لديك أداة سهلة الإستعمال وأن ما أكتبه هنا ليس إلا لمعرفة المصطلحات الأساسية انظر ملحق الأدوات الخاصة بكل توزيعة
عندما نتحدث عن شبكات فإننا في الغالب نتحدث عن علاقات خادم ومخدوم، يقدم الخادم server خدمة معينة service إلى المخدوم client. هذه الخدمة قد تكون الوصول للملفات والتشارك في الطابعة أو قاعدة بيانات أو حتى مجرد بوابة توصل المخدوم للإنترنت. ولكن في نظام لينكس ليس بالضرورة أن تكون عبر شبكة فهناك وسائل مثل file socket و FIFO pipe كما خادم إكس أو المراقبات الأخرى. يتخيل الناس أن هناك طوراً في نظام التشغيل ليكون خادماً أو أن هناك خيار في برنامج التركيب يجعل النظام خادم أو هناك برنامج تشغله يجعل النظام خادم!! هذا خطأ والصواب أن الخادم يقدم خدمة service (على شكل مراقب daemon) يستمع بانتظار طلبات المخدومين فأنت تشغل وتعد كل خدمة لوحدها. كما يتخيل الناس الخادم جهاز عملاق مكلف عليه جميع أنواع الخدمات وفي المقابل الأجهزة المخدومة أجهزة شخصية هذه الفكرة خطأ وتتسبب في ما يسمى Single Point of Failer نقطة فشل وحيدة؛ فالنظرة الحديثة تقوم على فصل أكبر قدر من الخدمات على خادمات مختلفة فكلما كان الخادم يقدم خدمات أقل كان أكثر أمناً وموثوقية.
نسمي الجهاز الواحد Host ونسمي مجموعة من الأجهزة Domain
لتشكل شبكة أو شبكة فرعية. الشبكة المحلية LAN توصل بسرعة عالية
10-100 ميغا-بت بالثانية وقد تصل إلى الغيغا! لكنها
لمسافات لا تزيد عن 100 متر. أما WAN مثل الإنترنت فهي ذات مسافات شاسعة
وبسرعات أكثر محدودية لا تزيد عن عشرات/مئات الكيلو-بت في الثانية.
عند عمل شبكة فإننا بحاجة إلى بطاقة تسمى واجهة الشبكة NIC أي
Network Interface Card
مثل بطاقات الإيثرنت ( الأولى هي /dev/eth0
الواجهة eth0)
والمودم (الجهاز الأول COM1 هو /dev/ttyS0
والواجهة هي ppp)
ولكن حتى دون وجود واحدة فإن هناك
واجهة الحلقة المفرغة loopback interface ويرمز لها lo
وهي تربط الجهاز مع .. حسناً، مع نفسه!
كل واجهة(بطاقة) نعطيها رقم/عنوان. هناك أكثر من عائلة للعناوين يدعمها لينكس مثل Novel IPX ولكن نظام لينكس يفضل عائلة عناوين الإنترنت ARPA inet وهي نفسها IPv4 أو IP ودعمها موجود من الإصدارات الأولى وهو من أكثر الأجزاء في لينكس صلابة. هذا العنوان عبارة عن رقم 32-بت للتسهيل نمثله على شكل أربع أرقام عشرية كل منها 0-255 يفصل بينها نقطة.
البعض لا يرتاح لكون عناوين IPv4 ذات 32-بت أي أنها لن تكفي للمستقبل لهذا هناك طريقة جديدة تتخطى محدوديات القديمة تسمى IPv6 والتطور فيها ليس في الحجم فقط بل أنها تحتوي على مزايا أكثر لتزيد السرعة والموثوقية. ولكن ليس كل الإصدارات تدعمها. النواة 2.6 توفر دعم غير مسبوق لها
127.0.0.1
مخصص ليشير إلى لجهاز نفسه lo.
إذا كانت بطاقة NIC تربطك بالإنترنت مباشرة
فإنها تأخذ أي عنوان غير محجوز أما إذا كانت تربطك مع الشبكة الداخلية
LAN فإنها تأخذ أي عنوان من العناوين المحجوزة للشبكات الداخلية،
وهي عناوين غير مرئية عبر الإنترنت.
تبدأ من اليسار ب10 ثم أي 4 أرقام
أو تبدأ ب 172 ثم رقم 16-31 ثم أي رقمين
أو تبدأ ب 192 ثم 168 ثم أي رقمين وتسمى على الترتيب الصنف A و B و C.
كما في الجدول :
الصنف | المدى | المدى المحجوز للشبكات الداخلية | Default netmask | netmask as number |
---|---|---|---|---|
Class A | 0.0.0.0-127.255.255.255 | 10.0.0.0-10.255.255.255 | 255.0.0.0 | 8 |
Class B | 128.0.0.0-191.255.255.255 | 172.16.0.0-172.31.255.255 | 255.255.0.0 | 16 |
Class C | 192.0.0.0-223.255.255.255 | 192.168.0.0-192.168.255.255 | 255.255.255.0 | 24 |
172.18.1.2
و Netmask كان 255.255.0.0
هذا يعني أن هذا الجهاز عضو في شبكة عنوانها 172.18.0.0
ويمكن تمثيل Netmask برقم واحد للتبسيط هو عدد بتات عنوان الشبكة
(البتات غير الصفرية في Netmask address)
في المثال السابق 16 أي 2 بايت من 4 للشبكة،
وعند كتابة عنوان الشبكة اصطلح أن نكتبه على صورة
172.18.0.0/255.255.0.0
أو 172.18.0.0/16
وبصورة غير رسمية 172.18.X.Y
.
نلاحظ أن الصنف A به شبكة وحيدة وكل العناوين هي لأجهزة Hosts
أما B فهو يحتوي 15 شبكة أما C فهي تحتوي 256 شبكة.
مثل آخر العنوان
192.168.0.0/24
يعني 192.168.0.X
.
يتم تخصيص العنوان عند تركيب لينكس أو فيما بعد من خلال برنامج إعداد الشبكات
الخاص بتوزيعتك ليكون رقم ثابت ويسمى هذا static IP.
أو قد يتم ترك إعطاء العنوان لخادم DHCP حيث تقوم أحد نصوص الإقلاع
بتشغيل DHCP client الذي يبث broadcast طلب عنوان فيرد عليه بالعنوان الذي يجب أن يستعمله
يتم البث إلى العنوانين 0.0.0.0
و 255.255.255.255
عبر منفذ 67 على الخادم و 68 على المخدوم.
وفي الحالتين من يعطي العنوان هو أحد ملفات ال /etc/init.d/
ويتم إعداده بطريقة تعتمد على التوزيعة.
وبدلاً من كتابة العناوين بالأرقام يفضل البعض إعطاء أسماء للأجهزة
مثل localhost الاسم الذي يشير به الجهاز لنفسه الذي يعادل العنوان
127.0.0.1
كما يمكن أن نحدد في أي شبكة بوضع (.) نقطة لتفصل الحدود
ونبدأ بالأصغر مثل localhost.localdomain
أو لنتحدث عن شبكة حقيقية www.linuxbox.net
قد تشير إلى الجهاز خادم ويب www داخل شبكة linuxbox داخل شبكة net
كما نتحدث عن ملف /net/linuxbox/www
ولكن بصورة مقلوبة. كما يوجد اسم مطلق(كامل) للملفات فإن الاسم الكامل للجهاز
أي عنوان الجهاز (.) عنوان الشبكة ... إلخ يسمى FQDN
أي Fully Qualified Domain Name. يمكن لكل جهاز أن يحتفظ بقائمة
في هذه العناوين وما يقابلها من أسماء في ملف /etc/hosts
كما يلي:
# This is a simple '/etc/hosts' # Address Names 127.0.0.1 localhost localhost.localdomain 192.168.10.1 linuxbox 192.168.0.1 proxy gateway 192.168.0.3 ns
/etc/resolv.conf
يحتوي عنوان هذا الخادم
#/etc/resolv.conf domain foo.mynet.com search foo.mynet.com mynet.com name server 192.168.0.3
/etc/hosts.conf
يحتوي على السطر
order hosts,bind
/etc/nsswitch.conf
#/etc/nsswitch.conf: #... hosts: files dns #...
عند إرسال بيانات عبر الشبكة فإنها ترسل في هيئة محدد تسمى طرد/رزمة/كيس pocket يحدد هيئتها البرتوكول المستخدم حيث يحدد البرتوكول طريقة تخزين عنواني المصدر والهدف ومعلومات أخرى مثل فحص parity check أو حتى CRC لكشف التشويش الطبيعي.
البرتوكولات الرئيسية المستخدمة هي ICMP و TCP و UDP.
البروتوكول الأول يستخدم في عمليات التشخيص والإعداد
ولا يستعمل لإنشاء إتصال أما الآخران فيأخذان
إضافة لعنوان المرسل إليه رقم منفذ كل خدمة أو بروتوكول فرعي
يعمل على منفذ مستقل مثلاً منفذ ويب هو 80 الذي يعمل ببروتوكول http
الذي هو فرع عن TCP.
في بروتوكولات TCP و UDP يتم الربط عبر 3 مراحل
هي new أي طلب اتصال جديد، ثم related وهي كل الحوارات
التي تحدث قبل قبول/رفض الإتصال وأخيراً إنشاء إتصال established .
جرت العادة تمثيل العنوان على شكل URL يأخذ الصيغة
protocol://[user[:password]@]host.somenet.edu[:port]/
حيث user و password و port اختيارية
مثل smb://ahmad:dontlook@172.22.0.5/
و
http://proxy.mynet.com:8080/
وهذا في بروتوكولات http و ftp و smb وغيرها الكثير.
الملف /etc/protocols
يحتوي قائمة بالبروتوكولات
أما الملف /etc/services
فيحتوي قائمة بالمنافذ وما يقابلها من خدمة ولكن
لم يعد مستخدماً (لأنه تابع ل inetd الذي أبدل ب xinetd الذي له صيغة أخرى)
إلا أنه موجود كما يمكنك العودة إلى ملحق المنافذ
التبولوجيا topology فرع من الرياضيات يتحدث عن مجموعة عناصرها مجموعات والعمليات عليها، ربما هذا أصل الاسم. كل توبولوجيا تعتمد بروتوكول وتعتمد عائلة عناوين وواجهات(بطاقات) شبكات NIC معينة. فالشبكات في لينكس تعتمد على TCP/IP وتوفر دعم للأنواع الأخرى.
الشبكة الحلقية token ring هي شبكة تمرر فيها المعلومات
من جهاز إلى الجهاز الذي يليه فكل جهاز موصول بالذي قبله وبعده عبر بطاقة خاصة
تشبه حرف T يدخل السلك عبر البطاقة ليدخل الجهاز من جهة وليخرج إلى البطاقة في الجهاز التالي
انظر www.linuxtr.net
فإذا لم تكن البيانات موجهة له مررها للذي يليه حتى تصل هدفها
فيقوم الجهاز الذي وصلته بإرسال إشعار (وصل استلام) للجهاز المرسل ليتوقف عن الإرسال
بنفس الطريقة وهكذا. تسمى عملية إرسال pockets من جهاز لتمر
في كل الأجهزة بالبث العام broadcasting.
لم تعد هذه البطاقات شائعة لأن تعطل جهاز في الحلقة
يفصل الحلقة بالكامل. ولكن من ناحية افتراضية
يمكننا أن نسمي الشبكة التي ترسل بطريقة البث العام broadcasting حلقة
وذلك بأن تكون كل الأجهزة موصولة ببطاقات إيثرنت عادية مع مفرّع بث broadcasting hup
حيث يشكل المفرّع الحلقة.
أو حتى بوصل أسلاك |
![]() |
يجب أن أشير إلى أن شكل الشبكة وطريقة توزيع الأسلاك لا يعكس بالضرورة
ما يجري فعلاً. فمجموعة الأجهزة الموصولة إلى broadcasting hup
قد تبدو شبكة نجمية(فيزيائياً) ولكنها شبكة أقرب إلى الحلقية(منطقياً) لأن
البيانات تبث للجميع! ولكن تعطل أحد أعضاء الحلقة
لن يعطل الحلقة على عكس الحلقة التي تحدثنا عنها سابقاً
فإذا تعطل أحد الأجهزة فيها لم تصل البيانات لباقي الأجهزة.
كما أن هذه المعلومات المذكورة هنا
معلومات مبسطة جداً. إذ يمكن تصميم شبكة تتكون فيها العناصر الثلاث المذكورة.
192.168.10.X
وفي غرفة A2 تكون العناوين 192.168.20.X
ويمكن للأجهزة في B أن تأخذ نفس العناوين دون حدوث إرباك لأن هذه العناوين
لا تكون مرئية عبر الإنترنت (إلا إذا كنا نستعمل VPN) .
لنفترض أن الجهاز رقم واحد في B1 يحمل العنوان 172.17.0.1
يريد الإتصال بجهاز في غرفة B2 بعنوان 172.18.0.1
فإن الإرسال سيصل إلى جميع الأجهزة المتصلة مع المفرع Hub
ومنها جهاز router الذي يرسلها في السلك الذي يوصل إلى مفرع Hub الغرفة B2،
أما إذا اتصل مع عنوان الإنترنت الخاص ب ppp0 في A
فإن البث يمر أولاً عبر Hub إلى router الذي يميّز أن العنوان عنوان
الذي يمييز أن العنوان خارجي فيرسله عبر وصلة الإنترنت ثم إلى مزود الخدمة ISP
ثم إلى الجهاز 192.168.0.1
في A.
هناك شبكات يتم ربطها دون أسلاك وذلك عبر بطاقات إيثرنت خاصة تسمى WaveLan
انظر www.wavelan.com من ناحية البرامج لا تختلف هذه البطاقات عن
بطاقة الإيثرنت العادية. ولكن لنفرض أن هناك غرفتن متجاورتان واحدة تأخذ العناوين
192.168.1.X
والأخرى 192.168.2.X
وكان جهاز به بطاقة من هذا النوع يتنقل بينهما فإن عنوانه سيتغيّر
وما يترتب على ذلك من قطع الإتصال. حل هذه المشكلة يتم عبر
تكنولوجيا تسمى Mobile IP. حيث يعطى عنوان وهمي لا يتغيّر بتغيّر مكانه.
عندما يخرج طرد pocket من جهاز مربوط عبر سلك وحيد بشبكة داخلية
متجهاً إلى أي عنوان فإنه يعرف طريقه عبره، ولكن لو كان هناك أكثر من واجهة
للشبكة (وهذا ما هو عليه الحال دائماً بوجود lo) فإن على الجهاز
تحديد الواجهة التي يسلكها pocket تبعاً للعنوان
مثلاً نقول العنوان المحلي 127.0.0.1
يتجه عبر
lo والعناوين المحجوزة الداخلية مثل 10.0.0.0/8
تتجه عبر بطاقة الإيثرنت إلى أسلاك الشبكة الداخلية وأما باقي العناوين
فتتجه عبر المودم إلى الإنترنت عبر أسلاك الهاتف؛ هذا
ما يسمى بالتوجيه route وهي عملية إتخاذ القرار
بتمرير pocket عبر واجهة شبكة تبعاً للعنوان الذي تتجه إليه.
router جهاز مرتفع الثمن يشبه switch فله عدة مقابس نربط من خلاله عدة أجهزة أو شبكات ولكن يمكن برمجته عن بعد من خلال بروتوكول خاص مثل RIP لتحديد جداول التوجيه بطريقة ديناميكية. يدعم لينكس تركيب عدد كبير من بطاقات الشبكة دفعة واحدة ويوفر لينكس جداول توجيه ثابتة ضمن النواة يمكن تعديلها عبر الجهاز نفسه، كما ويوجد عدة خادمات تدعم الجداول الديناميكية مثل routed و gated عبر عدة بروتوكولات.
<< السابق | كتاب لينكس الشامل | التالي >> |