اذهب إلى المحتوى

البحث في الموقع

المحتوى عن 'شبكات'.

  • ابحث بالكلمات المفتاحية

    أضف وسومًا وافصل بينها بفواصل ","
  • ابحث باسم الكاتب

نوع المحتوى


التصنيفات

  • الإدارة والقيادة
  • التخطيط وسير العمل
  • التمويل
  • فريق العمل
  • دراسة حالات
  • التعامل مع العملاء
  • التعهيد الخارجي
  • السلوك التنظيمي في المؤسسات
  • عالم الأعمال
  • التجارة والتجارة الإلكترونية
  • نصائح وإرشادات
  • مقالات ريادة أعمال عامة

التصنيفات

  • مقالات برمجة عامة
  • مقالات برمجة متقدمة
  • PHP
    • Laravel
    • ووردبريس
  • جافاسكربت
    • لغة TypeScript
    • Node.js
    • React
    • Vue.js
    • Angular
    • jQuery
    • Cordova
  • HTML
  • CSS
    • Sass
    • إطار عمل Bootstrap
  • SQL
  • لغة C#‎
    • ‎.NET
    • منصة Xamarin
  • لغة C++‎
  • لغة C
  • بايثون
    • Flask
    • Django
  • لغة روبي
    • إطار العمل Ruby on Rails
  • لغة Go
  • لغة جافا
  • لغة Kotlin
  • لغة Rust
  • برمجة أندرويد
  • لغة R
  • الذكاء الاصطناعي
  • صناعة الألعاب
  • سير العمل
    • Git
  • الأنظمة والأنظمة المدمجة

التصنيفات

  • تصميم تجربة المستخدم UX
  • تصميم واجهة المستخدم UI
  • الرسوميات
    • إنكسكيب
    • أدوبي إليستريتور
  • التصميم الجرافيكي
    • أدوبي فوتوشوب
    • أدوبي إن ديزاين
    • جيمب GIMP
    • كريتا Krita
  • التصميم ثلاثي الأبعاد
    • 3Ds Max
    • Blender
  • نصائح وإرشادات
  • مقالات تصميم عامة

التصنيفات

  • مقالات DevOps عامة
  • خوادم
    • الويب HTTP
    • البريد الإلكتروني
    • قواعد البيانات
    • DNS
    • Samba
  • الحوسبة السحابية
    • Docker
  • إدارة الإعدادات والنشر
    • Chef
    • Puppet
    • Ansible
  • لينكس
    • ريدهات (Red Hat)
  • خواديم ويندوز
  • FreeBSD
  • حماية
    • الجدران النارية
    • VPN
    • SSH
  • شبكات
    • سيسكو (Cisco)

التصنيفات

  • التسويق بالأداء
    • أدوات تحليل الزوار
  • تهيئة محركات البحث SEO
  • الشبكات الاجتماعية
  • التسويق بالبريد الالكتروني
  • التسويق الضمني
  • استسراع النمو
  • المبيعات
  • تجارب ونصائح
  • مبادئ علم التسويق

التصنيفات

  • مقالات عمل حر عامة
  • إدارة مالية
  • الإنتاجية
  • تجارب
  • مشاريع جانبية
  • التعامل مع العملاء
  • الحفاظ على الصحة
  • التسويق الذاتي
  • العمل الحر المهني
    • العمل بالترجمة
    • العمل كمساعد افتراضي
    • العمل بكتابة المحتوى

التصنيفات

  • الإنتاجية وسير العمل
    • مايكروسوفت أوفيس
    • ليبر أوفيس
    • جوجل درايف
    • شيربوينت
    • Evernote
    • Trello
  • تطبيقات الويب
    • ووردبريس
    • ماجنتو
    • بريستاشوب
    • أوبن كارت
    • دروبال
  • الترجمة بمساعدة الحاسوب
    • omegaT
    • memoQ
    • Trados
    • Memsource
  • برامج تخطيط موارد المؤسسات ERP
    • تطبيقات أودو odoo
  • أنظمة تشغيل الحواسيب والهواتف
    • ويندوز
    • لينكس
  • مقالات عامة

التصنيفات

  • آخر التحديثات

أسئلة وأجوبة

  • الأقسام
    • أسئلة البرمجة
    • أسئلة ريادة الأعمال
    • أسئلة العمل الحر
    • أسئلة التسويق والمبيعات
    • أسئلة التصميم
    • أسئلة DevOps
    • أسئلة البرامج والتطبيقات

التصنيفات

  • كتب ريادة الأعمال
  • كتب العمل الحر
  • كتب تسويق ومبيعات
  • كتب برمجة
  • كتب تصميم
  • كتب DevOps

ابحث في

ابحث عن


تاريخ الإنشاء

  • بداية

    نهاية


آخر تحديث

  • بداية

    نهاية


رشح النتائج حسب

تاريخ الانضمام

  • بداية

    نهاية


المجموعة


النبذة الشخصية

تم العثور على 9 نتائج

  1. سنتحدث في هذا المقال مشكلة تواصل العمليات في البداية، والدور الذي يلعبه مستوى النقل transport في معمارية الشبكة، والذي يُسمى أحيانًا بروتوكول طرفٍ إلى طرف end-to-end، بعدها سنعرض الخدمات التي تحقق هذا الدور، مع شرح خدمة فك تعدد إرسال demultiplexing بسيطة من بين هذه الخدمات باستخدام بروتوكول UDP مشكلة تواصل العمليات Getting Processes to Communicate يمكن استخدام العديد من التقنيات لتوصيل مجموعة حواسيبٍ معًا، بدءًا من شبكات الإيثرنت البسيطة، والشبكات اللاسلكية، وحتى الشبكات المتشابكة ذات النطاق العالمي. وبمجرد الترابط، فستكون المشكلة التالية هي تحويل خدمة تسليم الرزمة من مضيف إلى مضيف إلى قناة اتصال بنمط عملية إلى عملية. هذا هو الدور الذي يلعبه مستوى النقل transport في معمارية الشبكة، والذي يُسمى أحيانًا بروتوكول طرفٍ إلى طرف end-to-end لأنه يدعم الاتصال بين برامج التطبيق التي تعمل في العقد النهائية. تتجسد قوة بروتوكول طرف إلى طرف بعاملين مهمين: الأول من جهة الطبقات الأعلى، حيث أن عمليات مستوى طبقة التطبيق التي تستخدم خدمات مستوى طبقة النقل لها متطلباتٌ معينة. تحدّد القائمة التالية بعض الخصائص العامة المُتوقَّع توفيرها ببروتوكول النقل: ضمان تسليم الرسالة. تسليم الرسائل بنفس ترتيب إرسالها. تسليم نسخةً واحدة على الأكثر من كل رسالة. دعم الرسائل الكبيرة العشوائية. دعم التزامن بين المرسل والمستقبل. السماح للمستلم بتطبيق التحكم في التدفق على المرسل. دعم عمليات تطبيق متعددة على كل مضيف. لاحظ أن هذه القائمة لا تتضمن جميع الوظائف التي قد تحتاجها عمليات التطبيق من الشبكة، فلا تتضمن ميزات الأمن مثل الاستيثاق أو التشفير والتي توّفرها عادةً بروتوكولاتٌ تقع فوق مستوى النقل. (سنناقش الموضوعات المتعلقة بالأمن لاحقًا). أما العامل الثاني فهو يتعلق بالطبقات السفلى، حيث أن الشبكة الأساسية التي يعمل عليها بروتوكول النقل لها قيودٌ معينة في مستوى الخدمة التي يمكن أن يوفرها. تتمثل بعض القيود الأكثر شيوعًا للشبكة في امكانية: إسقاط الرسائل. إعادة ترتيب الرسائل. تسليم نسخ مكررة من رسالة معينة. تقييد حجم الرسائل بحجمٍ محدود. تسليم الرسائل بعد تأخير طويل وعشوائي. ويقال أن مثل هذه الشبكة توفر أفضل جهدٍ best-effort من مستوى الخدمة، كما يتضح من الإنترنت. وبالتالي، يكمن التحدي في تطوير الخوارزميات التي ترقّي الخصائص الأقل من الخصائص المثالية للشبكة الأساسية إلى مستوى عالٍ من الخدمة التي تتطلبها برامج التطبيق. تستخدم بروتوكولات النقل المختلفة مجموعات مختلفة من هذه الخوارزميات. يبحث هذا المقال في هذه الخوارزميات في سياق أربع خدمات تمثيلية هي: خدمة فك تعدد إرسال demultiplexing بسيطة غير متزامنة وخدمة تدفق بايتٍ موثوقة و"خدمة طلب / رد request/reply" وخدمة تطبيقات الزمن الحقيقي. نستخدم، في حالة خدمات فك تعدد الإرسال وتدفق البايت، بروتوكول مخطط بيانات المستخدم User Datagram Protocol أو اختصارًا UDP وبروتوكول التحكم في الإرسال Transmission Control Protocol أو اختصارًا TCP على التوالي لتوضيح كيفية تقديم هذه الخدمات عمليًا. بينما نناقش، في حالة خدمة الطلب / الرد، الدور الذي تلعبه في خدمة استدعاء الإجراءات البعيدة Remote Procedure Call أو اختصارًا RPC وميزاتها. لا يحتوي الإنترنت على بروتوكول RPC واحد، لذلك قمنا بتغطية هذه المناقشة بوصفٍ لثلاثة من بروتوكولات RPC المستخدمة على نطاق واسع: SunRPC وDCE-RPC وgRPC. أخيرًا، تفرض تطبيقات الزمن الحقيقي متطلباتٍ خاصة على بروتوكول النقل، مثل الحاجة إلى نقل معلومات التوقيت التي تسمح بإعادة تشغيل عينات الصوت أو الفيديو في النقطة الزمنية المناسبة. سيتم التركيز على المتطلبات التي وضعتها التطبيقات على مثل هذا البروتوكول من خلال أكثر الأمثلة استخدامًا وهو بروتوكول النقل في الوقت الحقيقي Real-Time Transport Protocol أو اختصارًا RTP. فك تعدد الإرسال البسيط Simple Demultiplexor باستخدام بروتوكول UDP إن أبسط بروتوكول نقل ممكن هو الذي يوسّع خدمة التوصيل من مضيف إلى مضيف للشبكة الأساسية إلى خدمة اتصال عمليةٍ إلى عملية. من المحتمل أن يكون هناك العديد من العمليات التي تعمل على أي مضيفٍ معين، لذلك يحتاج البروتوكول إلى إضافة مستوىً من فك تعدد الإرسال، مما يسمح لعمليات تطبيقٍ متعددة على كل مضيف بمشاركة الشبكة. لا يضيف بروتوكول النقل أي وظيفة أخرى لخدمة أفضل جهد التي تقدمها الشبكة الأساسية بصرف النظر عن هذا المطلب. يُعد بروتوكول مخطط بيانات المستخدم UDP للإنترنت مثالًا عن بروتوكول النقل هذا. المشكلة الوحيدة المثيرة للاهتمام في مثل هذا البروتوكول هي شكل العنوان المستخدم لتحديد العملية المستهدفة. على الرغم من أنه من الممكن للعمليات تحديد بعضها بعضًا مباشرةً باستخدام معرّف العملية process id أو اختصارًا pid المخصّص لنظام التشغيل، فإن مثل هذا النهج عمليٌّ فقط في نظامٍ موزَّع مغلَقٍ يعمل فيه نظام تشغيل واحد على جميع المضيفين ويسند لكل عمليةٍ معرّفًا فريدًا. الأسلوب الأكثر شيوعًا، والذي يستخدمه بروتوكول UDP، هو للعمليات التي تحدّد بعضها بعضًا بطريقةٍ غير مباشرة باستخدام محددٍ موقع مجرد abstract locator، يسمى عادةً منفذًا port. الفكرة الأساسية هي أن ترسل عملية المصدر رسالة إلى منفذ وأن تتلقّى عملية الوجهة الرسالة من منفذ. تحتوي ترويسة بروتوكول طرفٍ إلى طرف الذي يطبّق وظيفة فك تعدد الإرسال هذه على معرّفٍ (منفذ) لكل من مرسل (مصدر) ومُستقبِل (وجهة) للرسالة. يوضح الشكل التالي ترويسة UDP على سبيل المثال. لاحظ أن حقل منفذ UDP يبلغ طوله 16 بتًا فقط، وهذا يعني أن هناك ما يصل إلى 64 ألفًا من المنافذ المحتملة، ومن الواضح أنها غير كافية لتحديد جميع العمليات على جميع الأجهزة المضيفة في الإنترنت. لحسن الحظ، لا تُفسَّر المنافذ عبر الإنترنت بالكامل، ولكن فقط على مضيفٍ واحد، أي يحدّد منفذٌ على مضيفٍ معين العملية فعليًا زوج "منفذ ومضيف". يشكّل هذا الزوج مفتاح فك تعدد الإرسال لبروتوكول UDP. المشكلة التالية هي كيفية تعرّف العملية على منفذ العملية التي تريد إرسال رسالة إليها. تبدأ عادةً عملية العميل في تبادل الرسائل مع عملية الخادم، وبمجرد اتصال العميل بالخادم، يعرف الخادم منفذ العميل (من حقل SrcPrt المضمَّن في ترويسة الرسالة) ويمكنه الرد عليه. وبالتالي فإن المشكلة الحقيقية هي بكيفية تعرّف العميل على منفذ الخادم في المقام الأول. من الأساليب الشائعة أن يقبل الخادم الرسائل على منفذٍ معروف جيدًا، أي يتلقّى كل خادم رسائله على منفذٍ ثابت منشورٍ على نطاقٍ واسع، مثل خدمة هاتف الطوارئ المتوفرة في الولايات المتحدة على رقم الهاتف المعروف 911. يتلقى خادم اسم النطاق Domain Name Server أو اختصارًا DNS في الإنترنت، على سبيل المثال، الرسائل على المنفذ المعروف جيدًا (53) على كل مضيف، وتستمع خدمة البريد للرسائل على المنفذ (25)، ويقبل برنامج يونيكس talk الرسائلَ على المنفذ المعروف (517)، وغير ذلك. يُنشَر هذا الربط mapping دوريًا في RFC وهو متاح في معظم أنظمة يونيكس في الملف /etc/services. يكون المنفذ المعروف في بعض الأحيان مجردَ نقطة بداية الاتصال: يستخدم العميل والخادم المنفذَ المعروف جيدًا للاتفاق على منفذٍ آخر سيستخدمانه في الاتصالات اللاحقة، مما يترك المنفذ المعروف متاحًا للعملاء الآخرين. تتمثل الإستراتيجية البديلة في تعميم هذه الفكرة، بحيث لا يوجد سوى منفذٍ واحد معروف جيدًا، وهو المنفذ الذي تقبل فيه خدمة رابط المنافذ port mapper الرسائل. وبالتالي يرسل العميل رسالةً إلى منفذ رابط المنافذ المعروف جيدًا طالبًا منه المنفذ الذي يجب أن يستخدمه للتحدث إلى "أية" خدمة، فيرجع رابطُ المنافذ المنفذ المناسب. تسهّل هذه الإستراتيجية تغيير المنفذ المرتبط بخدمات مختلفة بمرور الوقت وتسهّل لكل مضيفٍ استخدام منفذ مختلف لنفس الخدمة. إن المنفذ هو مجرد فكرةٍ مجردة كما ذكرنا للتو، وتختلف الطريقة التي تُطبَّق فيها بالضبط من نظامٍ إلى آخر، أو بصورةٍ أدق، من نظام تشغيل لآخر، وتُعد واجهة برمجة تطبيقات المقبس socket API مثالٌ على تطبيق المنافذ. يُطبَّق المنفذ عادةً بواسطة رتل رسائل، كما هو موضح في الشكل التالي. يلحق البروتوكول (بروتوكول UDP مثلًا) الرسالة بنهاية الرتل عند وصولها، وتُهمَل الرسالة في حالة امتلاء الرتل. لا توجد آلية للتحكم في التدفق في بروتوكول UDP لإخبار المرسل بإبطاء السرعة، حيث تُزَال رسالةٌ من مقدمة الرتل عندما تريد عملية التطبيق تلقي رسالة. وإذا كانت قائمة الانتظار فارغة، فستُوقَف العملية حتى تصبح الرسالة متاحة. أخيرًا، على الرغم من أن بروتوكول UDP لا يطبّق التحكم في التدفق أو التسليم الموثوق / المرتب، إلا أنه يوفر وظيفةً أخرى بخلاف فك تعدد إرسال الرسائل إلى بعض عمليات التطبيق، كما يضمَن صحة الرسالة باستخدام المجموع الاختباري checksum (يُعَد المجموع الاختباري لبروتوكول UDP اختياريًا في IPv4 ولكنه إلزامي في IPv6). خوارزمية المجموع الاختباري الأساسية لبروتوكول UDP هي نفسها المستخدمة في بروتوكول IP، أي أنها تضيف مجموعةً من الكلمات ذات 16 بتًا باستخدام حساب متمم الواحد ones’ complement وتحسب متمم الواحد للنتيجة. لكن بيانات الإدخال المستخدمة في المجموع الاختباري غير متوقعة بعض الشيء. يأخذ المجموع الاختباري لبروتوكول UDP ترويسة UDP ومحتويات جسم الرسالة وشيئًا يسمَّى الترويسة الزائفة pseudoheader كمدخلات. تتكون الترويسة الزائفة من ثلاثة حقولٍ من ترويسة IP، هي رقم البروتوكول protocol number وعنوان IP المصدر وعنوان IP الوجهة، بالإضافة إلى حقل طول UDP، حيث يُضمَّن حقل طول UDP مرتين في حساب المجموع الاختباري. يُعَد الدافع وراء وجود الترويسة الزائفة هو التحقق من تسليم هذه الرسالة بين نقطتي النهاية الصحيحتين. إذا عُدِّل عنوان IP الوجهة أثناء نقل الرزمة على سبيل المثال، مما يتسبب في خطأ بتسليم الرزمة، فستُكتشَف هذه الحقيقة بواسطة مجموع بروتوكول UDP الاختباري. ترجمة -وبتصرّف- للقسم Simple Demultiplexor من الفصل End-to-End Protocols من كتاب Computer Networks: A Systems Approach. اقرأ أيضًا المقال السابق: التوجيه Routing بين الأجهزة المتنقلة في الشبكات الحاسوبية كيف تختار سياسة فعالة للجدار الناري لتأمين خواديمك - الجزء الثاني التشبيك المتقدم Advanced Internetworking في الشبكات الحاسوبية التشبيك Internetworking بين أنواع مختلفة من الشبكات الحاسوبية
  2. إن بروتوكول ضبط المضيف ديناميكيًّا (Dynamic Host Configuration Protocol) هو خدمة شبكة تُفعِّل إسناد إعدادات الشبكة إلى الحواسيب المضيفة من خادوم بدلًا من إعداد كل مضيف شبكي يدويًا؛ حيث لا تملك الحواسيب المُعدَّة كعملاءٍ لخدمة DHCP أيّة تحكم بالإعدادات التي تحصل عليها من خادوم DHCP. إن أشهر الإعدادات الموفَّرة من خادوم DHCP إلى عملاء DHCP تتضمن: عنوان IP وقناع الشبكة.عنوان IP للبوابة الافتراضية التي يجب استخدامها.عناوين IP لخواديم DNS التي يجب استعمالها.لكن يمكن أيضًا أن يوفِّر خادوم DHCP خاصيات الضبط الآتية: اسم المضيف.اسم النطاق.خادوم الوقت.خادوم الطباعة.من مزايا استخدام DHCP هو أن أي تغييرٍ في إعدادات الشبكة -على سبيل المثال تغيير عنوان خادوم DNS- سيتم في خادوم DHCP فقط، وسيُعاد ضبط جميع مضيفي الشبكة في المرة القادمة التي سيَطلُبُ فيها عملاء DHCP معلومات الإعدادات من خادوم DHCP؛ ويُسهِّل استعمال خادوم DHCP إضافة حواسيب جديدة إلى الشبكة، فلا حاجة للتحقق من توفر عنوان IP؛ وسيقل أيضًا التضارب في حجز عناوين IP. يمكن أن يُوفِّر خادوم DHCP إعدادات الضبط باستخدام الطرق الآتية: التوزيع اليدوي (Manual allocation) عبر عنوان MACتتضمن هذه الطريقة استخدام DHCP للتعرف على عنوان مميز لعتاد كل كرت شبكة متصل إلى الشبكة، ثم سيوفِّر إعدادات ضبطٍ ثابتةً في كل مرة يتصل فيها عميل DHCP إلى خادوم DHCP باستخدام بطاقة الشبكة المعيّنة مسبقًا؛ وهذا يضمن أن يُسنَد عنوان معيّن إلى بطاقةٍ شبكيّةٍ معيّنة وذلك وفقًا لعنوان MAC. التوزيع الديناميكي (Dynamic allocation)سيُسنِد خادوم DHCP -في هذه الطريقة- عنوان IP من مجموعة من العناوين (تسمى pool، أو في بعض الأحيان range أو scope) لمدة من الزمن (يسمى ذلك بالمصطلح lease) التي تُضبَط في الخادوم، أو حتى يخبر العميل الخادوم أنه لم يعد بحاجةٍ للعنوان بعد الآن؛ وسيحصل العملاء في هذه الطريقة على خصائص الضبط ديناميكيًّا وفق المبدأ «الذي يأتي أولًا، يُخدَّم أولًا»؛ وعندما لا يكون عميل DHCP متواجدًا على الشبكة لفترة محددة، فسينتهي وقت الضبط المخصص له، وسيعود العنوان المسند إليه إلى مجموعة العناوين لاستخدامه من عملاء DHCP الآخرين؛ أي أنَّه في هذه الطريقة، يمكن «تأجير» أو استخدام العنوان لفترة من الزمن؛ وبعد هذه المدة، يجب أن يطلب العميل من الخادوم أن يعيد تأجيره إياه. التوزيع التلقائي (Automatic allocation)سيُسنِد خادوم DHCP -في هذه الطريقة- عنوان IP إسنادًا دائمًا إلى جهاز معين، ويتم اختيار هذه العنوان من مجموعة العناوين المتوفرة؛ يُضبَط عادةً DHCP لكي يُسنِد عنوانًا مؤقتًا إلى الخادوم، لكن يمكن أن يسمح خادوم DHCP بزمن تأجير «لا نهائي». يمكن اعتبار آخر طريقتين «تلقائيتَين»، ﻷنه في كل حالة يُسنِد خادوم DHCP العنوان دون تدخل إضافي مباشر، الفرق الوحيد بينهما هو مدة تأجير عنوان IP؛ بكلماتٍ أخرى، هل ستنتهي صلاحية عنوان العميل بعد فترة من الزمن أم لا. يأتي أوبنتو مع خادوم وعميل DHCP، الخادوم هو dhcpd‏ (dynamic host configuration protocol daemon)، والعميل الذي يأتي مع أوبنتو هو dhclient، ويجب أن يثبَّت على جميع الحواسيب التي تريدها أن تُعَدّ تلقائيًا، كلا البرنامجين سهلُ التثبيت، وسيبدآن تلقائيًا عند إقلاع النظام. التثبيتاكتب الأمر الآتي في مِحَث الطرفية لتثبيت dhcpd: sudo apt-get install isc-dhcp-serverربما تحتاج إلى تغيير الضبط الافتراضي بتعديل ملف ‎/etc/dhcp/dhcpd.conf ليلائم احتياجاتك والضبط الخاص الذي تريده. ربما تحتاج أيضًا إلى تعديل ‎/etc/default/isc-dhcp-server لتحديد البطاقات الشبكية التي يجب أن «يستمع» (listen) إليها عفريت dhcpd. ملاحظة: رسالة عفريت dhcpd تُرسَل إلى syslog، انظر هناك لرسائل التشخيص. الضبطربما سيربكك ظهور رسالة خطأ عند انتهاء التثبيت، لكن الخطوات الآتية ستساعدك في ضبط الخدمة: في الحالات الأكثر شيوعًا، كل ما تريد أن تفعله هو إسناد عناوين IP إسنادًا عشوائيًا، يمكن أن يُفعَل ذلك بالإعدادات الآتية: # minimal sample /etc/dhcp/dhcpd.conf default-lease-time 600; max-lease-time 7200; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.150 192.168.1.200; option routers 192.168.1.254; option domain-name-servers 192.168.1.1, 192.168.1.2; option domain-name "mydomain.example"; }نتيجة الإعدادات السابقة هي ضبط خادوم DHCP لإعطاء العملاء عناوين IP تتراوح من 192.168.1.150 إلى 192.168.1.200، وسيُأجَّر عنوان IP لمدة 600 ثانية إذا لم يطلب العميل وقتًا محددًا؛ عدا ذلك، فسيكون وقت الإيجار الأقصى للعنوان هو 7200 ثانية؛ و«سينصح» الخادومُ العميلَ أن يستخدم 192.168.1.254 كبوابة افتراضية، و 192.168.1.1 و 192.168.1.2 كخادومَيّ DNS. عليك إعادة تشغيل خدمة dhcpd بعد تعديل ملف الضبط: sudo service isc-dhcp-server restartمصادرتوجد بعض المعلومات المفيدة في صفحة ويكي أوبنتو «dhcp3-server».للمزيد من خيارات ملف ‎/etc/dhcp/dhcpd.conf، راجع صفحة الدليل man dhcpd.conf.مقالة في ISC:‏ «dhcp-server».ترجمة -وبتصرف- للمقال Ubuntu Server Guide: Dynamic Host Configuration Protocol - DHCP. حقوق الصورة البارزة: Designed by Freepik.
  3. يتيح برنامج Oracle VirtualBox الكثير من الإمكانيّات لبناء أنظمة افتراضية للاستخدام الشخصيّ وهو ما يوفّر عليك عناء إعداد أمور كانت ستكلفك الكثير من الوقت والجهد. شرحنا في درس سابق كيفية تثبيت توزيعة RedHat باستخدام هذا البرنامج. سنشرح في هذا المقال كيف يمكننا بناء شبكة داخليّة افتراضيّة يمكن استخدامها لمحاكاة شبكة داخليّة محليّة Local area network ,LAN. يوضح الرسم التالي الهدف النهائي الذي نريد الوصول إليه: توجد آلتان افتراضيتان، لكلّ منهما واجهتا شبكة. نستخدم الواجهة الأولى لكلّ آلة افتراضيّة للاتصال بشبكة الإنترنت عبرالمرور بواجهة شبكة خاصّة ببرنامج VirtualBox تسمّى virbr0. تنشئ الواجهة الثانيّة على الآلة الافتراضية شبكة داخليّة مع الواجهة الثانيّة على الآلة الافتراضية الأخرى. إن أردت الاكتفاء بإنشاء شبكة داخليّة بين الآلات الافتراضيّة فيمكنك تجاوز الخطوة الثانيّة من الخطوات أعلاه وتنفيذ الخطوتين الأولى والثالثة؛ ولكن لن يكون بمقدور أي من النظامين في هذه الحالة الاتصال بالإنترنت وما يعنيه ذلك من عدم القدرة على تحديث الحزم أو تثبيت حزم جديدة. يحاكي هذا المخطّط عمل الخواديم في بيئة إنتاج فعليّة حيث توجد عادة أكثر من بطاقة شبكة على الخادوم، ولكلّ بطاقة استخدام معيَّن؛ مما يتيح للخادوم الاتصال بأكثر من شبكة (شبكات داخليّة عدّة أو شبكة داخليّة وأخرى عامّة). يفترض هذا الدرس وجود توزيعة RedHat Enterprise Linux مثبّتة كما هو مشروح في الدرس المشار إليه سابقا. تبقى الخطوات التالية صالحة مهما كان النظام المثبّت مع تغيير يسير في الخطوات الأخيرة (تفعيل البطاقات على RedHat Enterprise Linux). تهيئة VirtualBox لإنشاء شبكة محلية سنحتاج أولا إلى إنشاء نظام افتراضي ثان بعد النظام الافتراضي الذي أنشأناه في درس تثبيت RHEL. يتيح VirtualBox آليّة سريعة لإنشاء الأنظمة الافتراضيّة انطلاقا من أنظمة موجودة، تُسمّى هذه الآلية بالاستنساخ Cloning. تظهر بالنقر بالجانب الفأرة الأيمن على النظام الافتراضي الذي نريد استنساخه قائمة ظرفيّة نختار منها استنسخ Clone. تظهر نافذة جديدة، أدخل فيها اسما تختاره للنظام الذي نريد إنشاءه. تأكد من تحديد خيّار أعد تهيئة عناوين MAC لجميع البطاقات Reinitialize the MAC address for all network cards. يوجد خياران للاستنساخ؛ استنساخ كامل Full أو استنساخ رمزي Linked. يُنشأ في الحالة الأولى نظام جديد بالكامل (أقرص افتراضية منفصلة) في حين ينشئ الخيار الثاني آلة افتراضية جديدة ولكنها مجرد وصلة للنظام المستنسَخ. نختار الاستنساخ الكامل ثم ننقر على زر Clone. تأخذ العمليّة بضعة دقائق نحصُل بعدها على نظام افتراضي جديد. إعداد بطاقات الشبكة على VirtualBox لدينا الآن نظامان افتراضيّان (آلتان) سنعدّهما للحصول على المخطّط الذي تحدثنا عنه أعلاه. تُطبَّق الخطوتان التاليتان على كل من النظامين. حدّد النظام الافتراضي ثمّ زرّ الإعدادات Settings، تظهر نافذة جديدة اختر منها قسم الشبكة Network. توجد في هذا القسم أربع بطاقات شبكة (يُشار إليها بـ Adapter). حدّد خيار Enable network adapter (فعِّل بطاقة الشبكة) لتفعيل البطاقة وتأكد من أن خيار وصل الكابل (Cable connected) محدّد. يعدّ VirtualBox مبدئيا بطاقات الشبكة للعمل وفق وضع ترجمة عناوين الشبكة Network address translation, NAT. يعني هذا أن البطاقة سيكون لديها عنوان IP خاصّ غير مرئيّ من الخارج ولكنها تستطيع التواصل مع الخارج عبر VirtualBox الذي يعمل وسيطا بين الاثنين. هذه هي نفس الآلية التي يعمل بها الموجّه الموجود في المنزل عادة (يُترجم العناوين بين حاسوبك ومزوّد خدمة الإنترنت). يمكّنك هذا الإعداد من الاتصال بالإنترنت إذا كان حاسوبك متصلا بها. لاحظ عنوان MAC الخاصّ بالبطاقة؛ فربما تحتاجه للتعرف عليها من داخل نظام التشغيل في ما بعد. ننتقل للبطاقة الثانيّة (Adapter 2). الأمر المختلف هنا مقارنة بالبطاقة السابقة هو أننا اخترنا وضع Internal network (شبكة داخليّة) مع السماح بتنقل البيانات بين الآلات الافتراضية عبر هذه البطاقة (Allow VMs). كرّر نفس الإعدادات على النظام الافتراضي الآخر. تفعيل بطاقات الشبكة من داخل النظام الإعدادات جاهزة الآن من جانب VirtualBox؛ بقي أن نشغّل الآلتين ونفعّل البطاقات على مستوى نظام التشغيل ثم نختبر الاتصال بينها. الخطوات المشروحة هنا مطبقة على توزيعة RedHat Enterprise Linux بواجهة رسوميّة؛ يمكن تكييفها مع عمل أي نظام تشغيل آخر. كرّر الخطوات على كلّ آلة افتراضية. اختر قائمة التطبيقات Applications، ثم أدوات النظام System tools ثم الإعدادات Settings ثم الشبكة Network. ستجد أن النظام اكتشف وجود بطاقتين كما يظهر في يسار الصورة (قد تختلف أسماء البطاقات لديك). يمكن ملاحظة أن إحدى البطاقتين تأخذ عنوان IP تلقائيا فور تفعيلها، بينما لا تُظهر الأخرى سوى عنوان MAC الخاصّ بها. يمكنك استنتاج أن البطاقة التي تأخذ عنوانا تلقائيا هي البطاقة المعدّة لاستخدام ترجمة عناوين الشبكة، بينما الأخرى هي تلك المعدّة لإنشاء شبكة داخليّة دون أن يكون لديها مصدر يمنحها عنوان IP. راجع عناوين MAC في إعدادات VirtualBox وقارنها بالعناوين التي يظهرها نظام التشغيل للتأكد. بقي لنا ضبط البطاقة الداخليّة بإعطائها عنوان IP وقناع شبكة مناسب. حدّد بطاقة الشبكة الداخليّة (enps08 في المثال لديّ) وفعّلها ثم انقر على زرّ Add profile الموجود لتظهر نافذة جديدة. عدّل الإعدادات كما في الصورة. اخترتُ العنوان 192.168.2.100 بالنسبة للجهاز الافتراضي الأول، و192.168.2.200 بالنسبة للجهاز الثاني. قناع الشبكة في الحالتين هو 255.255.255.0. يمكن التأكد من أن البطاقتين توجدان على نفس الشبكة الداخليّة باستخدام أمر ping. على الجهاز الأول (ذي العنوان 192.168.2.100 ): ping 192.168.2.200 PING 192.168.2.200 (192.168.2.100) 56(84) bytes of data. 64 bytes from 192.168.2.200: icmp_seq=1 ttl=64 time=0.760 ms 64 bytes from 192.168.2.200: icmp_seq=2 ttl=64 time=0.254 ms (...) على الجهاز الثاني (ذي العنوان 192.168.2.200 ): ping 192.168.2.100 PING 192.168.2.100 (192.168.2.100) 56(84) bytes of data. 64 bytes from 192.168.2.100: icmp_seq=1 ttl=64 time=0.980 ms 64 bytes from 192.168.2.100: icmp_seq=2 ttl=64 time=0.348 ms (...) أي أن كلا من البطاقتين يمكنها الاتصال بالأخرى.
  4. أحيانًا تكون على شبكة غير آمنة أو لديها جدار ناري يملك قيودًا مُفرطة، وتحتاج الوصول إلى موقع على شبكة الإنترنت. تريد أن تتأكد أنه لا أحد في المنتصف يشاهد البيانات المارة. أحد الحلول هو استخدام VPN، ولكن يتطلب VPN برنامج عميل خاص على حاسوبك، وقد لا يكون لك صلاحيات اللازمة لتثبيته. إذا كان كل ما تريد تأمينه هو متصفح الويب الخاص بك، فهناك بديل بسيط: نفق وسيط SOCKS 5. وسيط SOCKS هو بالأساس نفق SSH حيث توّجه تطبيقات مُحدّدة دفق بياناتها خلال النفق إلى الخادوم، ثمّ على الخادوم، يقوم الوسيط (Proxy) بإعادة توجيه دفق البيانات إلى شبكة الإنترنت. على عكس VPN، يجب أن يتم ضبط وسيط SOCKS لكل تطبيق على حدة في حاسوب العميل، ولكن يُمكن إعداده بدون أي وكلاء عميل متخصصة. طالما لديك خادوم بوصول SSH، فيمكن استخدامه كوسيط SOCKS. سنستخدم خادوم أوبنتو 14.04 كالوسيط، ومتصفح فَيرفُكس كتطبيق العميل. وعندما ننتهي ينبغي أن تكون قادرًا على تصفح المواقع بشكلٍ آمن عبر النفق. المتطلبات كما ذُكر بالأعلى، أول شيء نحتاجه هو خادوم يعمل بأي توزيعة لينكس، مثل أوبنتو 14.04، بوصول SSH. أنشئ خادوما (هذا المثال يستخدم أوبنتو 14.04) مطلوب تثبيت بعض البرمجيات على حاسوبك المحلي. لهذا ستحتاج أن تُنزل برنامجًا أو اثنين. متصفح فَيرفُكس (للجميع) PuTTY (مستخدمي ويندوز) يُمَكننا فَيرفُكس من إعداد الوسيط لفَيرفُكس فقط بدلًا من إعداد الوسيط لكامل النظام. يُستخدم PuTTY لإعداد نفق الوسيط لمستخدمي ويندوز. لدى مستخدمي Mac OS X أو لينكس الأدوات اللازمة لإعداد النفق مُثبتة مسبقًا. الخطوة الأولى (Mac OS X/لينكس) - إعداد النفق أنشئ مفتاح SSH على حاسوبك المحلي. إذا كان لديك مفتاح SSH، فيمكنك استخدامه. على الرغم من أن تحديد كلمة مرور لمفتاح SSH هي عادة جيدة، سنترك كلمة المرور فارغة الآن لنتجنب مشاكل لاحقة. وأنت تَعُدّ المفتاح، تأكد أن تُضيفه للمفاتيح المخولة لمستخدم sudo على الخادوم (في هذا المثال، هذا هو المستخدم sammy). افتح برنامج الطرفية على حاسوبك. على Mac OS X، تجد الطرفية Terminal في Applications > Utilities. أنشئ النفق بهذا الأمر: $ ssh -D 8123 -f -C -q -N sammy@example.com شرح المعاملات D-: يُخبر SSH بأننا نريد نفق SOCKS على رقم المنفذ المُحدد (اختر رقم بين 1025-65536) f-: يضع العملية في الخلفية C-: يضغط البيانات قبل إرسالها q-: يستخدم الوضع الصامت N-: يُخبر SSH بأنه لا يوجد أي أمر سيُرسَل بمجرد فتح النفق تأكد من استبدال sammy@example.com بمستخدم sudo الخاص بك وعنوان IP أو اسم نطاق الخادوم. بمجرد أن تُدخل الأمر، ستعود إلى مِحث سطر الأوامر مرة أخرى بدون أي إشارة على النجاح أو الفشل؛ هذا طبيعي. تحقق من أن النفق يعمل بالأمر: $ ps aux | grep ssh ينبغي أن ترى سطرًا في المُخرجات مثل: sammy 14345 0.0 0.0 2462228 452 ?? Ss 6:43AM 0:00.00 ssh -D 8123 -f -C -q -N sammy@example.com يمكنك إغلاق تطبيق الطرفية وسيظل النفق يعمل. هذا لأننا استخدمنا الخيار f- الذي يضع جلسة SSH في الخلفية. ملاحظة: إذا أردت أن تُنهى النفق سيتوجب عليك معرفة PID الجلسة عبر ps واستخدام الأمر kill، وهذا ما سنُريك كيفية القيام به لاحقًا. الخطوة الأولى (ويندوز) - إعداد النفق افتح PuTTY. إذا لم تُثبته بعد، نزل PuTTY واحفظه بالمكان الذي تُحب. لا يحتاج PuTTY صلاحيات المُدير لتثبيته؛ حمل الملف التنفيذي exe. وشغلهُ فقط. أكمل الخطوات التالية لإعداد النفق: من قسم Session، أضف اسم مُضيف (أو عنوان IP) Host Name (or IP address) خادومك، ومنفذ Port SSH (عادة يكون المنفذ رقم 22) على الجانب الأيسر، انتقل إلى: Connection > SSH > Tunnels ادخل رقم أي منفذ مصدري source port بين 1025-65536. استخدمنا في هذا المثال المنفذ رقم 1337 اختر Dynamic اضغط Add ارجع إلى Session على الجانب الأيسر. اضف اسم اسفل Saved Sessions واضغط زر Save الآن اضغط Open لتفتح الاتصال ادخل اسم مُستخدم sudo وكلمة سر الخادوم للدخول. يمكنك تصغير نافذة PuTTY الآن، لكن لا تُغلقها. ينبغي أن يفتح اتصال SSH. تلميحة: يمكنك حفظ اسم مُستخدم sudo ومفتاح SSH للجلسة الحالية باتباع تعليمات مفتاح SSH الخاص ببرنامج PuTTY. وهكذا لن تَضطرّ إلى إدخال اسم المُستخدم وكلمة السر كل مرة تفتح الاتصال. الخطوة الثانية - ضبط متصفح فَيرفُكس Firefox ليستخدم النفق الآن بما أنه أصبح لدينا نفق SSH، فقد حان الوقت لضبط فَيرفُكس ليستخدم هذا النفق. تذكر لكي يعمل نفق SOCKS 5، يجب أن تستخدم تطبيق محلي يُمكنهُ استغلال النفق؛ فَيرفُكس يقوم بهذا. هذه الخطوة متشابهة لمُستخدمي ويندوز، Mac OS X ولينكس. تأكد أن لديك رقم المنفذ الذي استخدمته في أمر SSH أو في PuTTY. لقد استخدمنا 8123 في مثال OS X / لينكس و 1337 في مثال ويندوز حتى الآن، أو قد تكون استخدمت منفذًا مُختلفًا. نُفذَت الخطوات التالية على نُسخة فَيرفُكس 39 وينبغي أن تعمل على النُسخ الأخرى، على الرغم من احتمال اختلاف أماكن الخيارات. اضغط على أيقونة الهامبرجر في أعلى الركن الأيمن للوصول إلى قائمة فَيرفُكس: اضغط على أيقونة Preferences أو Options انتقل لقسم Advanced اضغط على تبويب Network اضغط على Settings أسفل العنوان Connection. ستفتح نافذة جديدة. اختر Manual proxy configuration: اكتب localhost أمام SOCKS HOST ادخل نفس رقم المنفذ Port من اتصال SSH الخاص بك؛ ترى في الصورة أننا أدخلنا 1337 ليُطابق تعليمات ويندوز. اضغط OK لحفظ وإغلاق ضبطك. الآن، افتح تبويبًا آخر في فَيرفُكس وتصفح الإنترنت. ينبغي أن يكون كل شيء جاهز للتصفح الآمن عبر نفق SSH الخاصة بك. اختياري: لتتأكد أنك تستخدم الوسيط، ارجع إلى إعدادات الشبكة Network في فَيرفُكس. أدخل رقم منفذ مُختلف. اضغط OK لحفظ الإعدادات. الآن إذا جربت تصفح الإنترنت، ينبغي أن ترى رسالة الخطأ The proxy server is refusing connections. هذا يؤكد أن فَيرفُكس يستخدم الوسيط وليس الاتصال الافتراضي. عُد إلى رقم المنفذ الصحيح، وينغي أن تكون قادر على التصفح مرة أخرى. العودة إلى التصفح العادي غير الآمن في فَيرفُكس عندما تنتهي حاجتك لخصوصية نفق SSH، ارجع إلى إعدادات وسيط الشبكة (Preferences > Advanced > Network > Settings) في فَيرفُكس. اختر Use system proxy settings واضغط OK. سيستخدم فَيرفُكس الآن إعدادات اتصالك العادي، ومن المرجح أن يكون غير آمن. إذا انتهيت من استخدام النفق يجب أن تُغلق النفق أيضًا، وهذا ما سنُغطيه في الخطوة التالية. إذا كنت تنوي استخدام النفق كثيرًا، فاتركه مفتوحًا للاستخدام لاحقًا، لكن لاحظ أنه قد يُغلق من تلقاء نفسه إذا بقي خاملًا (غير مُستخدم) لمدة طويلة، أو إذا سَكَن (sleep) حاسوبك. الخطوة الثالثة (Mac OS X/لينكس) - إغلاق النفق سيوقف إغلاق النفق قدرة فَيرفُكس على التصفح بالوسيط. أُرسل النفق الذي أنشأناه سابقًا على حاسوبنا المحلي إلى الخلفية، لذا لن يُنهيه إغلاق نافذة الطرفية التي استخدمناها لفتح النفق. لإنهاء النفق نحتاج أن نُحدد مُعَرف العملية (PID) باستخدام الأمر ps، ثم قتله باستخدام الأمر kill. فلنبحث عن كل عمليات ssh على حاسوبنا: $ ps aux | grep ssh جد السطر الذي يبدو كالأمر الذي أدخلته سابقًا لإنشاء النفق. هذا مثال على المخرجات: sammy 14345 0.0 0.0 2462228 452 ?? Ss 6:43AM 0:00.00 ssh -D 8123 -f -C -q -N sammy@example.com من بداية السطر، في واحد من العمودين الأولين، هناك رقم مكون من ثلاثة إلى خمسة أعداد. هذا هو رقم PID. وفي المخرجات السابقة هو الرقم 14345. بعد أن عرفنا رقم PID، يُمكننا استخدام الأمر kill لنُغلق النفق. استخدم رقم PID الخاص بك عندما تقتل العملية. $ sudo kill 14345 إذا أردت أتمتت عملية الاتصال، اذهب للخطوة الرابعة. الخطوة الثالثة (ويندوز) - إغلاق النفق سيوقف إغلاق النفق قدرة فَيرفُكس على التصفح بالوسيط. اغلق نافذة PuTTY التي استخدمتها لإنشاء النفق فقط. لا يوجد في ويندوز طريقة سهلة لأتمتة عملية الاتصال، لكن PuTTY وفَيرفُكس يمكنهما حفظ الإعدادات التي أدخلتها سابقًا، لذا افتح الاتصالات فقط مرة أخرى لتستخدم النفق مجددًا. الخطوة الرابعة (Mac OS X/لينكس) - إنشاء اختصارات للاستخدام المتكرر يمكننا إنشاء أمر بديل أو سكربت في أنظمة لينكس أو OS X لكي يُنشئ النفق سريعًا من اجلنا. سنعرض طريقتين لأتمتة عملية إنشاء النفق. ملاحظة: طريقتي الاختصار كلاهما تَتَطلبان مفتاح SSH بلا كلمة سر للوصول إلى الخادوم. 1. سكربت BASH قابل للنقر إذا أردت أيقونة لتضغط عليها مرتين فيبدأ النفق، يمكن أن نُنشئ سكربت BASH بسيط للقيام بهذه المهمة. سنجعل السكربت يقوم بإعداد النفق وتشغيل فَيرفُكس، على الرغم من أنك ستظل في حاجة إلى إضافة إعدادات الوسيط يدويًا بالمرة الأولى في فَيرفُكس. ملف فَيرفُكس الثُنائي على OS X الذي يمكننا تشغيله من سطر الأوامر هو داخل Firefox.app. بافتراض أن التطبيق في مُجلّد التطبيقات Applications، سنجد الملف الثُنائي في Applications/Firefox.app/Contents/MacOS/firefox/. على أنظمة لينكس، إذا ثبتّت فَيرفُكس عبر مستودع أو كان مُثبت مسبقًا، فينبغي أن تجده في usr/bin/firefox/. يمكنك دائمًا استخدام الأمر which firefox لمعرفة موقعه على نظامك. استبدل في السكربت الذي بالأسفل مسار فَيرفُكس بالمسار المناسب لنظامك. باستخدام مُحرر نصوص مثل nano أنشئ ملف جديد: $ nano ~/socks5.sh وأضف السطور التالية إليه: #!/bin/bash ssh -D 8123 -f -C -q -N sammy@example.com /Applications/Firefox.app/Contents/MacOS/firefox & استبدل 8123 برقم المنفذ الذي تريده، يجب أن يُطابق ما وضعته في فَيرفُكس استبدل sammy@example.com بمُستخدم SSH الخاص بك واسم المُضيف أو عنوان IP استبدل Applications/Firefox.app/Contents/MacOS/firefox/ بمسار ملف فَيرفُكس الثُنائي احفظ السكربت. تقوم بهذا في nano بالضغط على Ctrl-o، ثم اخرج بالضغط على Ctrl-x. اجعل السكربت قابلًا للتنفيذ، لكي يتم تنفيذه عندما تضغط عليه مرتين. ادخل هذا الأمر في سطر الأوامر لتُضيف صلاحيات التنفيذ، باستخدام مسار السكربت الخاص بك: $ chmod +x /path/to/socks5.sh قد تحتاج في OS X القيام بخطوات إضافية لتُخبر Mac OS X أن ملف بلاحقة .sh يجب أن يُنَفَذ كبرنامج وألا يتم فتحه في مُحرر. لتقوم بهذا، اضغط بزر الفأرة الأيمن على ملف socks5.sh واختر Get Info. جد القسم Open with: وإذا لم يُشر سهم الكشف إلى الأسفل، اضغط عليه لكي ترى القائمة المُندسلة. قد تجد Xcode مضبوطًا كالتطبيق الافتراضي. غيره إلى Terminal.app. إذا لم تجد Terminal.app بالقائمة، اختر Other، ثم انتقل إلى Applications > Utilities > Terminal.app. اضغط مرتين على ملف socks.sh لتفتح وسيط SOCKS الخاص بك الآن. ملاحظة: بعد التنفيذ، لن يطلب السكربت كلمة سر، ولذلك سيفشل بصمت إذا أعددت مفتاح SSH مُسبقًا ليطلب كلمة مرور. سوف يفتح السكربت نافذة الطرفية، يبدأ اتصال SSH ويُشغل فَيرفُكس. لا تخش من إغلاق نافذة الطرفية. يمكنك الآن أن تبدأ التصفح في اتصالك الآمن، طالما أنك تحتفظ بإعدادات الوسيط في فَيرفُكس. 2. إنشاء Alias إذا وجدت أنك تستخدم سطر الأوامر كثيرًا وتُريد تشغيل النفق، يمكنك إنشاء Alias ليقوم بالمهمة من أجلك. الجزء الأصعب في إنشاء Alias هو أين تحفظه. تحفظ توزيعات لينكس وإصدارات OS X المختلفة الـ aliases في أماكن مختلفة. أفضل طريقة هي البحث عن أحد الملفات التالية وتبحث بداخله عن الكلمة alias لترى أين تُحفظ الأوامر البديلة الأخرى حاليًا. ~/.bashrc ~/.bash_aliases ~/.bash_profile ~/.profile بمجرد إيجاد الملف الصحيح، أضف هذا السطر التّالي أسفل Aliases موجودة لديك، أو فقط بنهاية الملف. alias socks5=’ssh -D 8123 -f -C -q -N sammy@example.com && /Applications/Firefox.app/Contents/MacOS/firefox &’ استبدل 8123 برقم المنفذ الذي تريده، يجب أن يُطابق ما وضعته في فَيرفُكس استبدل sammy@example.com بمُستخدم SSH الخاص بك واسم المُضيف أو عنوان IP استبدل Applications/Firefox.app/Contents/MacOS/firefox/ بمسار ملف فَيرفُكس الثُنائي يتم تحميل الـ aliases فقط عندما تبدأ صدفة جديدة، لذا أغلق جلسة طرفيتك وابدأ واحدة جديدة. الآن عندما تكتب: $ socks5 هذا الأمر يقوم بإنشاء نفقك، ثم يُشغل فَيرفُكس ويُعيدك إلى مِحث الأوامر. تأكد أن فَيرفُكس مضبوط ليستخدم الوسيط (proxy). يمكنك الآن التصفح بشكلٍ آمن. الخطوة الخامسة (اختياري) - استكشاف الأخطاء وإصلاحها: المرور عبر الجدران النارية إذا كان اتصالك يعمل، فلا حاجة لك لقراءة هذا القسم. ومع ذلك، إذا اكتشفت أنه لا يمكنك إنشاء اتصال SSH بسبب جدار ناري تقييدي، فالمرجح أن المنفذ 22، وهو المطلوب لإنشاء النفق، محجوب. إذا كان بإمكانك التحكم في إعدادات خادوم وسيط SSH، يمكنك إعداد SSH للإنصات إلى منفذ آخر غير 22. ما المنفذ غير المحجوب الذي يمكنك استخدامه؟ بجانب الخطة المشكوك بها لفحص المنافذ باستخدام أداة مثل ShieldsUP، مشكوك بها لأن شبكتك المحلية قد تُفسر هذا كهجوم، فالأفضل تجربة منافذ تُترك مفتوحة عادة. المنافذ المتروكة مفتوحة عادةً تكون 80 (لحركة مرور الويب العامة) و 443 (لحركة مرور SSL). إذا لم يكن خادوم SSH الخاص بك يخدم محتوى ويب، يمكننا أن نخبر SSH ليستخدم أحد هذين المنفذين ليتصل عبره بدلا من المنفذ الافتراضي 22. المنفذ 433 هو أفضل اختيار لأنه مُتَوقع أن يكون هناك حركة مرور مُشفرة على هذا المنفذ، وحركة مرور SSH الخاصة بنا ستكون مُشفرة. ابدأ اتصال SSH لخادومك من مكان غير محمي بجدار ناري، ثم حرّر ملف إعدادات SSH: $ sudo nano /etc/ssh/sshd_config ابحث عن السطر Port 22. يمكننا إما استبدال 22 كُليًا، وهي فكرة جيدة لزيادة أمان SSH، أو إضافة منفذ آخر ليُنصت SSH إليه. سنختار انصات SSH إلى منافذ متعددة، لذا سنُضيف سطر جديد أسفل Port 22 الذي يُقرأ Port 443. وإليك مثال لملف sshd_config: ... Port 22 Port 443 ... أعد تشغيل SSH لكي يُعيد تحميل ضبط SSH الذي أدخلته. قد يختلف اسم عفريت خادوم SSH بالاعتماد على توزيعتك، لكن من المرجح أن يكون اسمه ssh أو sshd. إذا لم يعمل أحدهما جرّب الآخر. $ sudo service ssh restart لتتحقق من أن منفذ SSH يعمل، افتح صدفة جديدة، لا تُغلق الجلسة الحالية بعد، فقد تحتاجها في حالة أغلقت الباب على نفسك وأنت خارج الخادوم بدون قصد، وابدأ اتصال SSH باستخدام المنفذ الجديد. $ ssh sammy@example.com -p 443 إذا نجحت بالاتصال، فيُمكنك الخروج الآن من الصدفتين وفتح نفق SSH باستخدام المنفذ الجديد. $ ssh -D 8123 -f -C -q -N sammy@example.com -p 443 ستكون إعدادات فَيرفُكس هي نفسها لأنه لا يعتمد على منفذ SSH، وإنما منفذ النفق (8123 كما بالأمر السابق). خاتمة افتح نفق SOCKS 5 للتصفح من خلال نفق SSH آمن كلما أردت طريقة خفيفة للوصول للويب بمأمن من أعين المُتطفلين. ترجمة -وبتصرّف- للمقال How To Route Web Traffic Securely Without a VPN Using a SOCKS Tunnel لصاحبه Michael Holley.
  5. يحظى أمر ping بشعبية كبيرة لدى مديري الشبكات وممتهني التقنية لما يقدمه من خدمات في سبيل فحص الاتصال بين مضيفين Host. يقدّم هذا المقال تفاصيل أكثر عن هذا الأمر شائع الاستخدام. ماهو أمر ping وكيف يعمل؟ يعمل أمر ping على فحص إمكانية الوصول إلى عنوان IP، مضيف أو خادوم انطلاقا من شبكتك. يكثُر استخدام الأمر للتدقيق في أخطاء الشبكة وتحديد مشاكلها. يقوم الأمر على مبدأ عمل سهل ولكنه مفيد؛ إذ يُرسِل حزم بيانات تحوي الرسالة PING إلى عنوان IP (أو المضيف) وينتظر الرد ثم يحسب الفترة الزمنية اللازمة لورود الجواب؛ يُشار لهذه المدّة بـRTT، وهي اختصار Round Trip Time أي زمن الذهاب والإياب؛ تُعرَف هذه المدة أيضا بزمن الوصول Latency. يعني هذا أن بإمكانك معرفة ما إذا كان يمكن الوصول إلى مضيف من شبكتك وسرعة تلقي الرد منه باستخدام ping. يشير العمل السريع لأمر ping (زمن وصول قصير) إلى أن الاتصال متجاوب أكثر وهي مسألة مهمة في تطبيقات مثل الألعاب على الشبكة. يُقاس زمن الوصول عادة بجزء على ألف من الثانية (ثانية = 1000ms)؛ أزمان وصول أعلى تعني وجود مشاكل في الشبكة. يتغيّر زمن الوصول حسب عوامل من بينها التوجيه Routing والموقع الجغرافي. ينتج عن تنفيذ أمر ping لتجربة الوصول إلى مضيف في نفس البلد زمن أدنى من مضيف في بلد بقارة أخرى نظرا للموقع الجغرافي والقفزات Hops التي يتضمنها التوجيه. تأتي أداة ping مثبتة مسبقا على جميع أنظمة التشغيل الحديثة تقريبا ويمكن تنفيذها من سطر الأوامر (الطرفية على الأنظمة الشبيهة بيونكس أو محثّ وندوز Windows prompt). ملحوظة: يمكن إعداد الخواديم أو المضيفات على حظر (عدم الرد) طلبات ping لأسباب أمنية. خيارات ping الأساسية معرفة إصدار ping يتيح الخيار V- معرفة إصدار ping المثبَّت في النظام: ping -V مثال على المخرجات: ping utility, iputils-s20121221 استخدام أمر ping المعطى الضروري الوحيد لأمر ping هو اسم المضيف أو عنوان IP المراد فحصُه. ping example.com اسم المضيف في المثال أعلاه هو example.com. في ما يلي مثال على مخرجات الأمر: PING example.com (93.184.216.34) 56(84) bytes of data. 64 bytes from example.com (93.184.216.34): icmp_seq=1 ttl=42 time=116 ms 64 bytes from example.com (93.184.216.34): icmp_seq=2 ttl=42 time=154 ms 64 bytes from example.com (93.184.216.34): icmp_seq=3 ttl=42 time=163 ms 64 bytes from example.com (93.184.216.34): icmp_seq=4 ttl=42 time=1028 ms 64 bytes from example.com (93.184.216.34): icmp_seq=5 ttl=42 time=768 ms 64 bytes from example.com (93.184.216.34): icmp_seq=6 ttl=42 time=128 ms ستحتاج لتوقيف تنفيذ الأمر بالضغط على الزرين CTRL و C وإلا فإن الأمر سيستمر في إرسال الحزم. ملحوظة: توجد اختلافات يسيرة في الأمر بين لينكس ووندوز، يتوقف تنفيذ الأمر في وندوز بعد إرسال أربع حزم مبدئيا. يظهر ملخّص بالإحصاءات بعد توقف الأمر: ^X^C --- example.com ping statistics --- 24 packets transmitted, 23 received, 4% packet loss, time 23041ms rtt min/avg/max/mdev = 114.323/307.465/1057.499/296.627 ms, pipe 2 يتضمن الملخّص: عدد الحزم المُرسَلة Transmitted عدد الحزم المستلمة Received نسبة فقدان الحزم Packet loss الحد الأدنى للمدة الزمنية لوصول الإجابة min. متوسط وصول الإجابة avg. الحد الأقصى للمدة الزمنية لوصول الإجابة max. تظهر في كل سطر مدة الإجابة وقيمة أخرى باسم ttl. تحدّد القيمة الأخيرة عمر الحزمة (Time To Live). إن انقضت هذه القيمة دون أن يتمكن ping من الاتصال بالوجهة فسيقرّر أنه لا يمكن الوصول إليها. لا يقتصر استخدام هذا المعطى على ping بل مجالات أخرى مثل بروتوكول HTTP و نظام أسماء النطاقات. لا يختلف فحص الاتصال بجهاز على الشبكة الداخلية عن فعل نفس الشيء بالنسبة لمضيف على الإنترنت. الأمر التالي مثلا يفحص الاتصال بجهاز على الشبكة الداخلية عبر عنوان IP الخاص به: ping 192.168.1.5 عدد مرات تنفيذ الأمر السلوك المبدئي لأمر ping إن استخدم بدون خيارات هو الاستمرار في إرسال الحزم إلى أن يتدخل أحد لإيقافه؛ إلا أنه توجد طريقة لتحديد عدد مرات إرسال الحزم. استخدم الخيار c- متبوعا بعدد على النحو التالي: ping -c 10 example.com تظهر المخرجات كالتالي: PING example.com (93.184.216.34) 56(84) bytes of data. 64 bytes from example.com (93.184.216.34): icmp_seq=1 ttl=43 time=129 ms 64 bytes from example.com (93.184.216.34): icmp_seq=2 ttl=43 time=127 ms 64 bytes from example.com (93.184.216.34): icmp_seq=3 ttl=43 time=126 ms 64 bytes from example.com (93.184.216.34): icmp_seq=4 ttl=43 time=125 ms 64 bytes from example.com (93.184.216.34): icmp_seq=5 ttl=43 time=284 ms 64 bytes from example.com (93.184.216.34): icmp_seq=6 ttl=43 time=132 ms 64 bytes from example.com (93.184.216.34): icmp_seq=7 ttl=43 time=131 ms 64 bytes from example.com (93.184.216.34): icmp_seq=8 ttl=43 time=130 ms 64 bytes from example.com (93.184.216.34): icmp_seq=9 ttl=43 time=178 ms 64 bytes from example.com (93.184.216.34): icmp_seq=10 ttl=43 time=128 ms --- example.com ping statistics --- 10 packets transmitted, 10 received, % packet loss, time 9011ms rtt min/avg/max/mdev = 125.003/149.335/284.433/47.508 ms ينفَّذ الأمر - كما يظهر - عشر مرات ثم يتوقف ويعطي إحصائيات. لفعل نفس الشيء على وندوز نضيف الخيار n- بدلا من c-: ping -n 10 example.com تعديل حجم حزمة البيانات يُرسِل أمر ping مبدئيا حزمة بحجم 64 بايت على لينكس، و32 بايت على وندوز. إن أردت تغيير الحجم المبدئي للحزمة على لينكس فيمكنك ذلك باستخدام الخيار s- : ping -s 100 -c 6 example.com النتيجة: PING example.com (93.184.216.34) 100(128) bytes of data. 108 bytes from example.com (93.184.216.34): icmp_seq=2 ttl=51 time=1113 ms 108 bytes from example.com (93.184.216.34): icmp_seq=3 ttl=51 time=253 ms 108 bytes from example.com (93.184.216.34): icmp_seq=4 ttl=51 time=263 ms 108 bytes from example.com (93.184.216.34): icmp_seq=5 ttl=51 time=253 ms 108 bytes from example.com (93.184.216.34): icmp_seq=6 ttl=51 time=1068 ms --- example.com ping statistics --- 6 packets transmitted, 5 received, 16% packet loss, time 4999ms rtt min/avg/max/mdev = 253.093/590.201/1113.044/408.995 ms, pipe 2 بالنسبة لوندوز فالخيار المستخدم هو l-: ping -l 100 -n 6 example.com زيادة المدة الزمنية أو تقليصها ينتظر أمر ping مبدئيا ثانية واحدة قبل إرسال الحزمة الموالية إلى الوِجهة. يمكِّن استخدام الخيار i- من زيادة هذا المجال أو تقليصه. يحدّد الأمر التالي 3 ثوان مجالا بين إرسال حزمتين: ping -i 3 example.com يمكننا بنفس الطريقة التسريع من إرسال الحزم بدل انتظار ثانية في كل مرة: ping -i 0.2 example.com إغراق الوجهة بحزم ping تُستخدم هذه الطريقة لاختبار أداء الشبكة. لا ينتظر أمر ping بين إرسال حزمتين إن استخدم الخيار f- بشرط تنفيذه بصلاحيات إدارية: sudo ping -f example.com ستلاحظ - حسب جودة الشبكة لديك - نقاطا تتحرك بسرعة. يطبع الأمر نقطة في الطرفية في كل مرة تُرسَل حزمة، وفي كل مرة يرد فيها جواب يُطبع رجوع إلى الخلف (تُحذَف نقطة) وهو ما يعطي فكرة عن عدد الحزم التي لم ترد عنها إجابات؛ وهو ما تمثله النقاط المتبقية. اضغط زرّي CTRL و C لإيقاف الأمر. عرض إحصاءات ping فقط يمكن باستخدام الخيار q- الإبقاء على إحصاءات الأمر فقط دون إظهار معلومات الحزم: ping -c 5 -q example.com النتيجة: PING example.com (93.184.216.34) 56(84) bytes of data. --- example.com ping statistics --- 5 packets transmitted, 4 received, 20% packet loss, time 6221ms rtt min/avg/max/mdev = 259.175/723.504/1219.311/460.540 ms, pipe 2 يظهر التقرير فقط في مخرجات الأمر أعلاه. تحديد مهلة لتنفيذ ping إذا أردت تحديد مهلة زمنية تظهر بانقضائها إحصاءات أمر ping فيمكنك ذلك بإضافة الخيار w-: ping -w 6 example.com يعيّن الخيار w-المدة الزمنية التي يقضيها الأمر في إرسال الحزم. حددنا في المثال أعلاه 6 ثوان سيتوقف بعدها تنفيذ الأمر وتظهر الإحصاءات. رسائل الخطأ في أمر ping تظهر عدة رسائل - حسب الحالة - في مخرجات ping، في ما يلي شرح مدلولاتها. Destination Host Unreachable تشير الرسالة Destination Host Unreachable (لا يمكن الوصول إلى المضيف الوِجهة) إلى أنه لا توجد طريق من الشبكة المحلية إلى المضيف الذي أرسلت إليه الحزم. يعني هذا عادة أنه يوجد خطأ في الاتصال. إن نفذت أمر ping دون أن تكون متصلا فستظهر هذه الرسالة. Request timed out تعني هذه الرسالة Request timed oud (انتهاء مهلة انتظار الرد) أن الأداة لم تحصُل على أجوبة على الحزم التي أرسلتها ضمن المهلة المحدّدة (1 ثانية مبدئيا). توجد عدّة أسباب ممكنة من أبرزها احتقان Congestion في الشبكة، حجب بعض الحزم في الجدار الناري firewall، مشكل في الموجِّه Router وغيرها. Unknown host / Ping Request Could Not Find Host تدلّ رسالة الخطأ Unknown host (مضيف غير معروف) أو شبيهتها Ping Request Could Not Find Host (لم يستطع طلب Ping العثور على مضيف) إلى خطأ في اسم المضيف؛ إما لكون اسم المضيف غير موجود أو أنه غير متاح لديك في الشبكة. عند تنفيذ الأمر التالي مثلا (لاحظ الخطأ في كتابة hsoubs): ping hsoubs.com تظهر الرسالة: ping: unknown host hsoubs.com خاتمة يختلف زمن الوصول باختلاف نوعية الشبكة وطريقة الاتصال (ألياف ضوئية، شبكة لا سلكية، … إلخ). إذا كانت الشبكة لديك جيدة فستكون نسبة الحزم المفقودة %0 وستحصُل على زمن وصول ببضعة أجزاء من الثانية. ترجمة -وبتصرّف- لمقال All About PING Command لصاحبه Mohammad Forhad Iftekher.
  6. تتألف شبكات الحواسيب عادةً من خليط من أنظمة التشغيل، وعلى الرغم من أن شبكة مبنية كاملًا من حواسيب بأنظمة خادوم وسطح مكتب أوبنتو يمكن أن تكون ذات فائدة عظيمة؛ إلّا أن بعض بيئات الشبكة يجب أن تحتوي على أنظمة أوبنتو ومايكروسوفت® ويندوز® تعمل سويةً بتناغم؛ سيقدم هذا الدرس المبادئ الأساسية والأدوات المستخدم في ضبط خادوم أوبنتو لمشاركة موارد الشبكة مع حواسيب ويندوز. مقدمة يتطلب التواصل الشبكي الناجح بين خادوم أوبنتو وعملاء ويندوز توفير ودمج الخدمات الشائعة لبيئات ويندوز؛ تساعد مثل هذه الخدمات في مشاركة البيانات والمعلومات عن الحواسيب والمستخدمين الموجودين في الشبكة، ويمكن تصنيفها تحت ثلاثة تصنيفات للوظائف التي تؤديها: خدمات مشاركة الملفات والطابعات. استخدام بروتوكول «Server Message Block» (اختصارًا SMB) لتسهيل مشاركة الملفات والمجلدات والأقراص ومشاركة الطابعات عبر الشبكة. خدمات الدليل (Directory). مشاركة المعلومات الحيوية عن الحواسيب ومستخدمي الشبكة باستخدام تقنيات مثل LDAP و ®Microsoft Active Directory. الاستيثاق والوصول. التحقق من هوية حاسوب أو مستخدم للشبكة وتحديد المعلومات التي يُصرَّح للحاسوب أو المستخدم بالوصول إليها عبر تقنيات مثل أذونات الملفات، وسياسات المجموعات، وخدمة الاستيثاق Kerberos. لحسن الحظ، يمكن لخادوم أوبنتو توفير هذه الخدمات إلى عملاء ويندوز ومشاركة موارد الشبكة معهم؛ واحد من أهم البرمجيات التي يتضمنها نظام أوبنتو للتعامل الشبكي مع ويندوز هو مجموعة أدوات وتطبيقات خادوم SMB المُسمى سامبا. سيقدم هذا الدرس بعض حالات استخدام سامبا الشائعة، وطريقة تثبيت وضبط الحزم الضرورية؛ تفاصيلٌ إضافيةٌ يمكن العثور عليها في موقع سامبا. خادوم الملفات أحد أشهر الطرق للتواصل الشبكي بين أوبنتو وويندوز هو ضبط سامبا كخادوم ملفات؛ يشرح هذا القسم طريقة ضبط خادوم سامبا لمشاركة الملفات مع عملاء ويندوز. سيُضبَط الخادوم لمشاركة الملفات مع أي عميل على الشبكة دون طلب كلمة مرور منه؛ إذا كانت بيئتك تتطلب متحكمات بالوصول أكثر تقييدًا ، فراجع القسم «تأمين خادوم سامبا لتخديم الملفات والطباعة». التثبيت أول خطوة هي تثبيت حزمة samba؛ وذلك بإدخال الأمر الآتي من الطرفية: sudo apt-get install samba هذا كل ما عليك فعله! يجب أن تكون الآن جاهزًا لضبط سامبا لمشاركة الملفات. الضبط ملف ضبط سامبا الرئيسي موجودٌ في ‎/etc/samba/smb.conf؛ توجد كميةٌ كبيرةٌ من التعليقات في ملف الضبط لتوثيق مختلف تعليمات الضبط. ملاحظة: لا تُضمَّن جميع الخيارات المتوفرة في ملف الضبط الافتراضي؛ راجع صفحة الدليل للملف smb.conf أو مجموعة «Samba HOWTO». أولًا، عدِّل الأزواج المفتاح/القيمة في القسم [global] من ملف ‎/etc/samba/smb.conf: workgroup = EXAMPLE ... security = user المعامل security موجودٌ في أسفل قسم [global]، ويوجد قبله تعليق افتراضيًا؛ غيِّر أيضًا القيمة EXAMPLE إلى قيمة تلائم بيئتك. أنشِئ قسمًا جديدًا في نهاية الملف -أو أزل التعليق عن أحد الأمثلة- للمجلد الذي تريد أن تشاركه: [share] comment = Ubuntu File Server Share path = /srv/samba/share browsable = yes guest ok = yes read only = no create mask = 0755 comment: وصف قصير عن المشاركة، عدِّله ليناسب احتياجاتك. path: مسار المجلد الذي تريد مشاركته؛ يستخدم هذا المثال ‎/srv/samba/sharename لأنه وفقًا لمعيار هيكلة نظام الملفات (Filesystem Hierarchy Standard اختصارًا FHS)، فإن ‎/srv3 هو مكان تخزين البيانات التي ستُخدَّم؛ ويمكن (تقنيًا) أن تكون مشاركات سامبا في أي مكان في نظام الملفات لطالما كانت الأذونات صحيحةً، لكن الالتزام بالمعايير أمرٌ حسن. browsable: يفعِّل إمكانية تصفح عملاء ويندوز للمجلد باستخدام «مستكشف الملفات». guest ok: يسمح للعملاء بالاتصال إلى المشاركة دون توفير كلمة مرور. read only: تحديد إذا ما كانت المشاركة للقراءة فقط أم كان إذن الكتابة معطيًا؛ يُعطى إذن الكتابة فقط عندما تكون القيمة هي no (كما هو الحال في هذا المثال) إذا كانت القيمة yes، فإن الوصول للمشاركة سيكون للقراءة فقط. create mask: تحديد أذونات الملفات الجديدة عندما تُنشَأ. بعد أن ضُبِطَ سامبا، فيجب إنشاء المجلد وتغيير الأذونات؛ وذلك بإدخال الأمر الآتي من الطرفية: sudo mkdir -p /srv/samba/share sudo chown nobody.nogroup /srv/samba/share/ ملاحظة: الخيار ‎-p يخُبِر mkdir بأن يُنشِئ كامل شجرة المجلد إن لم تكن موجودةً. في النهاية، أعد تشغيل خدمات samba لتفعيل الضبط الجديد: sudo restart smbd sudo restart nmbd تحذير: يسمح الضبط السابق بالوصول لأي مستخدم في الشبكة المحلية، لضبط أكثر أمانًا راجع القسم «تأمين خادوم سامبا لتخديم الملفات والطباعة». تستطيع الآن من عميل ويندوز أن تكون قادرًا على تصفح خادوم أوبنتو للملفات ورؤية مشاركة المجلد؛ إذا لم تظهر المشاركة عند عميلك تلقائيًا، فحاول أن تصل إلى الخادوم عبر عنوان IP الخاص به؛ مثلًا، ‎ \\192.168.1.1 في نافذة مستكشف الملفات، حاول إنشاء مجلد من ويندوز للتحقق من أن كل شيء يعمل على ما يرام. لمشاركة مجلدات إضافية، فأنشِئ ببساطة أقسام [dir] في ‎/etc/samba/smb.conf وأعد تشغيل خدمة سامبا؛ عليك أن تتأكد أن المجلد الذي تريد مشاركته موجود فعلًا، والأذونات المُعطاة له صحيحة. ملاحظة: المشاركة المُسماة «[share]» والمسار ‎/srv/samba/share هما مجرد مثالين؛ عدِّل اسم ومسار المشاركة لملائمة بيئتك؛ فكرة جيدة هي تسمية اسم المشاركة باسم المجلد في نظام الملفات؛ مثال آخر سيكون مشاركةً باسم [qa] بمسار ‎/srv/samba/qa. مصادر كتاب «Using Samba» من O'Reilly هو مصدر جيد للمعلومات. صفحة ويكي أوبنتو «Samba» فيها بعض المعلومات. خادوم سامبا للطباعة استخدام شائع آخر لخادوم سامبا هو ضبطه لمشاركة الطابعات المثبتة إما محليًا أو عبر الشبكة على خادوم أوبنتو؛ وبآليةٍ شبيهةٍ بالآلية في قسم «خادوم ملفات سامبا»، سيضبط هذا القسم سامبا للسماح لأي عميل في الشبكة المحلية باستخدام الطابعات المثبتة دون طلب اسم مستخدم وكلمة مرور. لضبط أكثر أمانًا، راجع القسم الآتي «تأمين خادوم سامبا لتخديم الملفات والطباعة». التثبيت قبل تثبيت وضبط سامبا، من الأفضل أن يكون لديك تثبيت CUPS يعمل جيدًا، راجع القسم «خادوم الطباعة CUPS» في الدرس الخاص به لمزيدٍ من المعلومات. أدخِل ما يلي في الطرفية لتثبيت حزمة samba: sudo apt-get install samba الضبط بعد تثبيت سامبا، عدِّل الملف ‎/etc/samba/smb.conf مغيّرًا الخاصية workgroup إلى القيمة الملائمة لشبكتك، وعدِّل قيمة security إلى user: workgroup = EXAMPLE ... security = user عدِّل قيمة الخيار guest ok إلى yes في قسم [printers]: browsable = yes guest ok = yes أعد تشغيل سامبا بعد إتمام تعديل ملف smb.conf: sudo restart smbd sudo restart nmbd سيشارك ضبط سامبا الافتراضي كل الطابعات المثبتة، كل ما عليك فعله هو تثبيت الطابعة محليًا على عملاء ويندوز. مصادر راجع موقع CUPS لمزيد من المعلومات حول ضبط CUPS. ترجمة -وبتصرف- للمقال Ubuntu Server Guide: Samba.
  7. المراقبة هي جزء مهم من إدارة الخواديم والخدمات الأساسية؛ تُراقَب معظم الخدمات الشبكية للأداء (performance) أو التوفر (availability) أو كليهما؛ سيَشرح هذا الفصل طريقة تثبيت وضبط Nagios لمراقبة التوفر، و Munin لمراقبة الأداء. سنستخدم في أمثلة هذا الفصل خادومين بأسماء server01 و server02؛ سيُضبَط server01 مع Nagios لمراقبة الخدمات التي عليه وعلى الخادوم server02؛ وسيُضبَط server01 مع Munin لجمع المعلومات من الشبكة، باستخدام حزمة munin-node، وسيُضبَط server02 لكي يُرسِل المعلومات إلى server01. نأمل أن تساعدك هذه الأمثلة البسيطة في مراقبة الخواديم والخدمات الإضافية في شبكتك. Nagiosالتثبيتأولًا، ثبت الحزمة nagios على خادوم server01، وذلك بإدخال الأمر الآتي في الطرفية: sudo apt-get install nagios3 nagios-nrpe-pluginسيُطلَب منك إدخال كلمة مرور لمستخدم nagiosadmin، تصاريح المستخدم مخزنة في ‎/etc/nagios3/htpasswd.users. ولتعديل كلمة مرور nagiosadmin أو إضافة مستخدمين آخرين إلى سكربتات Nagios CGI، فاستخدم htpasswd الذي هو جزء من حزمة apache2-utils. على سبيل المثال، لتغيير كلمة المرور لمستخدم nagiosadmin: sudo htpasswd /etc/nagios3/htpasswd.users nagiosadminلإضافة مستخدم جديد: sudo htpasswd /etc/nagios3/htpasswd.users steveالآن على خادوم server02، ثبِّت الحزمة nagios-nrpe-server؛ بتنفيذ الأمر الآتي على server02: sudo apt-get install nagios-nrpe-serverملاحظة: سيسمح NRPE لك بتنفيذ فحوصات محلية على الأجهزة البعيدة، هنالك طرق أخرى للقيام بذلك عبر إضافات Nagios أخرى. لمحة عن الضبطهنالك عدة مجلدات تحتوي على ضبط Nagios وملفات التحقق (check files). ‎/etc/nagios3: يحتوي على ملفات الضبط لعمل عفريت nagios، وملفات CGI، والمضيفين ...إلخ.‎/etc/nagios-plugins: يحتوي ملفات الضبط للتحقق من الخدمات.‎/etc/nagios: في المضيفين البعيدين، ويحتوي على ملفات ضبط nagios-nrpe-server.‎/usr/lib/nagios/plugins/‎: المكان الذي تخزَّن فيه ملفات التحقق الثنائية، استخدم الخيار ‎-h لمشاهدة المساعدة لتحققٍ ما. مثال: ‎/usr/lib/nagios/plugins/check_dhcp -hهنالك وفرة في التحققات التي يمكن ضبط Nagios ليجريها على أي مضيف؛ سيُضبَط Nagios في هذا المثال للتحقق من مساحة القرص الصلب المتوفرة و DNS و MySQL؛ سيُجرى تحقق DNS على server02 وتحقق MySQL على server01 و server02. هنالك بعض المصطلحات التي عندما تُشرَح ستُسهِّل فهم ضبط Nagios: المضيف (host): خادوم أو محطة عمل (workstation)، أو جهاز شبكي ...إلخ. الذي يُراقَب.مجموعة مضيفين (host group): مجموعة من المضيفين المتشابهين؛ على سبيل المثال، تستطيع أن تُجمِّع كل خواديم الويب أو خواديم الملفات ...إلخ.الخدمة (service): الخدمة التي تُراقَب في المضيف، مثل HTTP أو DNS أو NFS ...إلخ.مجموعة الخدمات (service group): تسمح لك بجمع عدِّة خدمات متشابهة مع بعضها بعضًا، هذا مفيد لتجميع عدّة خدمات HTTP على سبيل المثال.جهة الاتصال (contact): الشخص الذي سيُنبَّه عندما يحدث حدثٌ ما؛ يمكن ضبط Nagios ليرسل بريدًا إلكترونيًا أو رسائل SMS ...إلخ.افتراضيًا، يكون ضبط Nagios ليتحقق من HTTP، والمساحة التخزينية المتوفرة في القرص، و SSH، والمستخدمين الحاليين، والعمليات، والحِمل على localhost؛ سيتحقق Nagios أيضًا من البوابة بعمل ping لها. تثبيتات Nagios الضخمة قد يصبح ضبطها معقدًا جدًا، لذلك من الأفضل عادةً البدء بمضيف واحد أو اثنين ثم التوسع بعد ضبطهما جيدًا. الضبطأولًا، أنشئ ملف ضبط للمضيف للخادوم server02؛ ما لم يُذكر عكس ذلك، فعليك تنفيذ هذه الأوامر على server01؛ أدخِل ما يلي في الطرفية: sudo cp /etc/nagios3/conf.d/localhost_nagios2.cfg \ /etc/nagios3/conf.d/server02.cfgملاحظة: في الأوامر السابقة أو التالية استبدل «server01» و «server02» و 172.18.100.100 و 172.18.100.101 بأسماء المضيفين وعناوين IP لخادومَيك. ثم عدِّل الملف ‎/etc/nagios3/conf.d/server02.cfg: define host{ use generic-host ; Name of host template to use host_name server02 alias Server 02 address 172.18.100.101 } # check DNS service. define service { use generic-service host_name server02 service_description DNS check_command check_dns!172.18.100.101 }أعد تشغيل عفريت nagios لتفعيل الضبط الجديد: sudo service nagios3 restartأضف الآن تعريفًا للتحقق من MySQL بإضافة ما يلي إلى ‎/etc/nagios3/conf.d/‎ services_nagios.cfg: # check MySQL servers. define service { hostgroup_name mysql-servers service_description MySQL check_command check_mysql_cmdlinecred!nagios!secret!$HOSTADDRESS use generic-service notification_interval 0 ; set > 0 if you want to be renotified }يجب الآن تعريف مجموعة المضيفين mysql-servers؛ عدِّل الملف ‎/etc/nagios3/conf.d ‎/hostgroups_nagios2.cfg مضيفًا: # MySQL hostgroup. define hostgroup { hostgroup_name mysql-servers alias MySQL servers members localhost, server02 }يحتاج Nagios لأن يستوثق إلى MySQL، فأضف مستخدم nagios إلى MySQL بإدخال الأمر: mysql -u root -p -e "create user nagios identified by 'secret';"ملاحظة: يجب أن يتواجد المستخدم nagios في كل المضيفين في مجموعة mysql-servers. أعد تشغيل nagios ليبدأ التحقق من خواديم MySQL: sudo service nagios3 restartأخيرًا، اضبط NRPE للتحقق من المساحة الفارغة في القرص على الخادوم server02. أضف التحقق من الخدمة في server01 في ملف ‎/etc/nagios3/conf.d/server02.cfg: # NRPE disk check. define service { use generic-service host_name server02 service_description nrpe-disk check_command check_nrpe_1arg!check_all_disks!172.18.100.101 }الآن على الخادوم server02، عدِّل الملف ‎/etc/nagios/nrpe.cfg مغيّرًا: allowed_hosts=172.18.100.100ثم في منطقة تعريف الأمر أضف ما يلي: command[check_all_disks]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -eفي النهاية، أعد تشغيل nagios-nrpe-server: sudo service nagios-nrpe-server restartوأيضًا على الخادوم server01 أعد تشغيل nagios: sudo service nagios3 restartيجب أن تكون قادرًا على رؤية المضيف والتحقق من الخدمات في ملفات Nagios CGI؛ للوصول إليهم، وجِّه متصفحك إلى http://server01/nagios3؛ ثم ستُسأل عن اسم مستخدم nagiosadmin وكلمة مروره. مصادرلم يشرح هذا القسم من الدرس إلا القليل من ميزات Nagios؛ تحتوي الحزمتين nagios-plugins-extra و nagios-snmp-plugins على المزيد من تحققات الخدمات. للمزيد من المعلومات، راجع موقع Nagios، تحديدًا موقع «التوثيق».هنالك قائمة بالكتب المتعلقة بمراقبة الشبكة و Nagios.صفحة ويكي أوبتتو «Nagios» فيها بعض التفاصيل الإضافية.Muninالتثبيتقبل تثبيت Munin على server01، فيجب أن يُثبَّت قبله apache2؛ الضبط الافتراضي كافٍ لتشغيل خادوم munin. أولًا، ثبت munin على الخادوم server01 بإدخال الأمر: sudo apt-get install muninالآن ثبِّت الحزمة munin-node على الخادوم server02: sudo apt-get install munin-nodeالضبطعدِّل الملف ‎/etc/munin/munin.conf على الخادوم server01 مُضيفًا عنوان IP للخادوم server02: ## First our "normal" host. [server02] address 172.18.100.101ملاحظة: استبدل server02 و 172.18.100.101 باسم المضيف وعنوان IP الحقيقي لخادومك. الآن اضبط munin-node على الخادوم server02، بتعديل ‎/etc/munin/munin-node.conf للسماح بالوصول إلى الخادوم server01: allow ^172\.18\.100\.100$ملاحظة: استبدل ‎^172\.18\.100\.100$ بعنوان IP لخادوم Munin الخاص بك. أعد تشغيل munin-node على server02 لكي تأخذ التعديلات مجراها: sudo service munin-node restartفي النهاية، وجِّه متصفحك إلى http://server01/munin، يجب أن ترى روابط إلى مخططات بيانية جميلة تعرض معلومات من الحزمة القياسية munin-plugins للقرص والشبكة والعمليات والنظام. ملاحظة: لما كان هذا التثبيت حديثًا، فربما ستحتاج لبعض الوقت لعرض معلومات مفيدة. إضافات أخرىتحتوي حزمة munin-plugins-extra على تحققات من أداء خدماتٍ إضافية مثل DNS و DHCP، وسامبا ...إلخ. أدخل الأمر الآتي لتثبيت هذه الحزمة: sudo apt-get install munin-plugins-extraتأكد من تثبيت هذه الحزمة على جهازَيّ الخادوم والعقدة. مصادرراجع موقع Munin لمزيدٍ من التفاصيل.تحديدًا صفحة «توثيق Munin» التي تحتوي على معلومات عن الإضافات الأخرى، وكيفية كتابة إضافات ...إلخ.مصدر آخر هو صفحة ويكي أوبنتو «Munin».ترجمة -وبتصرف- للمقال Ubuntu Server Guide: Monitoring.
  8. إن بروتوكول التحكم في نقل البيانات (Transmission Control Protocol) وبروتوكول الإنترنت (Internet Protocol) المسمى اختصارًا TCP/IP هو معيار يضم مجموعة بروتوكولاتٍ مطورةً في نهاية السبعينات من القرن الماضي من وكالة مشاريع أبحاث الدفاع المتقدمة (Defense Advanced Research Projects Agency‏ [DARPA])، كطرق للتواصل بين مختلف أنواع الحواسيب وشبكات الحواسيب؛ إن بروتوكول TCP/IP هو العصب المحرك للإنترنت، وهذا ما يجعله أشهر مجموعة بروتوكولات شبكيّة على وجه الأرض. TCP/IP المكونان الرئيسيان من مكونات TCP/IP يتعاملان مع مختلف نواحي شبكة الحاسوب؛ بروتوكول الإنترنت -جزء «IP» من TCP/IP- هو بروتوكول عديم الاتصال (connectionless) يتعامل مع طريقة توجيه (routing) الرزم الشبكية مستخدمًا ما يسمى «IP Datagram» كوحدة رئيسية للمعلومات الشبكية؛ تتكون IP Datagram من ترويسة، يتبعها رسالة. إن بروتوكول التحكم في نقل البيانات هو «TCP» من TCP/IP، ويُمكِّن مضيفي الشبكة من إنشاء اتصالاتٍ يستطيعون استخدامها لتبادل مجاري البيانات (data streams)؛ ويَضمَن أيضًا بروتوكول TCP أن البيانات التي أُرسِلَت بواسطة تلك الاتصالات ستُسَلَّم وتصل إلى مضيف الشبكة المُستقبِل كما أُرسِلَت تمامًا وبنفس الترتيب من المُرسِل. دورة علوم الحاسوب دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب اشترك الآن ضبط TCP/IP يتكون ضبط TCP/IP من عدِّة عناصر التي يمكن أن تُغيَّر بتعديل ملفات الإعدادات الملائمة، أو باستخدام حلول مثل خادوم «بروتوكول ضبط المضيف الديناميكي» (Dynamic Host Configuration Protocol‏ [DHCP])، الذي يمكن أن يُضبَط لتوفير إعدادات TCP/IP صالحة لعملاء الشبكة تلقائيًا، يجب أن تُضبط قيم تلك الإعدادات ضبطًا صحيحًا لكي تساعد في عمل الشبكة عملًا سليمًا في نظام أوبنتو عندك. عناصر الضبط الخاصة ببروتوكول TCP/IP ومعانيها هي: عنوان IP: هو سلسة نصية فريدة يُعبَّر عنها بأربع مجموعات من أرقام تتراوح بين الصفر (0)، ومئتان وخمسٌ وخمسون (255)، مفصولةٌ بنقط، وكل أربعة أرقام تمثل ثمانية (8) بتات من العنوان الذي يكون طوله الكامل اثنان وثلاثون (32) بتًا، تُسمى هذه الصيغة باسم «dotted quad notation». قناع الشبكة: قناع الشبكة الفرعية (أو باختصار: قناع الشبكة [netmask])، هو قناع ثنائي يفصل قسم عنوان IP المهم للشبكة، عن قسم العنوان المهم للشبكة الفرعية (Subnetwork)؛ على سبيل المثال، في شبكة ذات الفئة C‏ (Class C network)، قناع الشبكة الافتراضي هو 255.255.255.0، الذي يحجز أول ثلاثة بايتات من عنوان IP للشبكة، ويسمح لآخر بايت من عنوان IP أن يبقى متاحًا لتحديد المضيفين على الشبكة الفرعية. عنوان الشبكة: يمثل عنوان الشبكة (Network Address) البايتات اللازمة لتمثيل الجزء الخاص من الشبكة من عنوان IP، على سبيل المثال، المضيف صاحب العنوان 12.128.1.2 في شبكة ذات الفئة A يستطيع استخدام 12.0.0.0 كعنوان الشبكة، حيث يمثل الرقم 12 البايت الأول من عنوان IP (جزء الشبكة)، وبقية الأصفار في البايتات الثلاثة المتبقية تمثل قيم مضيفين محتملين في الشبكة؛ وفي مضيف شبكة يستخدم عنوان IP الخاص 192.168.1.100 الذي يستخدم بدوره عنوان الشبكة 192.168.1.0 الذي يحدد أول ثلاثة بايتات من شبكة ذات الفئة C والتي هي 192.168.1، وصفرًا الذي يُمثِّل جميع القيم المحتملة للمضيفين على الشبكة. عنوان البث: عنوان البث (Broadcast Address) هو عنوان IP يسمح لبيانات الشبكة بأن تُرسَل إلى كل المضيفين معًا في شبكة محلية بدلًا من إرسالها لمضيف محدد. العنوان القياسي العام للبث لشبكات IP هو 255.255.255.255، لكن لا يمكن استخدام هذا العنوان لبث الرسائل لكل مضيف على شبكة الإنترنت، لأن الموجهات (routers) تحجبها؛ ومن الملائم أن يُضبَط عنوان البث لمطابقة شبكة فرعية محددة، على سبيل المثال، في شبكة خاصة ذات الفئة C،‏ أي 192.168.1.0، يكون عنوان البث 192.168.1.255؛ تُولَّد رسائل البث عادةً من بروتوكولات شبكيّة مثل بروتوكول استبيان العناوين (Address Resolution Protocol‏ [ARP])، وبروتوكول معلومات التوجيه (Routing Information Protocol‏ [RIP]). عنوان البوابة: إن عنوان البوابة (Gateway Address) هو عنوان IP الذي يمكن الوصول عبره إلى شبكة معينة أو إلى مضيف معين على شبكة؛ فإذا أراد أحد مضيفي الشبكة التواصل مع مضيفٍ آخر، ولكن المضيف الآخر ليس على نفس الشبكة، فيجب عندئذٍ استخدام البوابة؛ في حالات عديدة، يكون عنوان البوابة في شبكةٍ ما هو الموجه (router) على تلك الشبكة، الذي بدوره يُمرِّر البيانات إلى بقية الشبكات أو المضيفين كمضيفي الإنترنت على سبيل المثال. يجب أن تكون قيمة عنوان البوابة صحيحةً، وإلا فلن يستطيع نظامك الوصول إلى أي مضيف خارج حدود شبكته نفسها. عنوان خادوم الأسماء: عناوين خادوم الأسماء (Nameserver Addresses) تمثل عناوين IP لخواديم خدمة أسماء المضيفين DNS، التي تستطيع استبيان (resolve) أسماء مضيفي الشبكة وتحويلها إلى عناوين IP؛ هنالك ثلاث طبقات من عناوين خادوم الأسماء، التي يمكن أن تُحدَّد بترتيب استخدامها: خادوم الأسماء الرئيسي (Primary)، وخادوم الأسماء الثانوي (Secondary)، وخادوم الأسماء الثلاثي (Tertiary)، ولكي يستطيع نظامك استبيان أسماء أسماء مضيفي الشبكة وتحويلها إلى عناوين IP الموافقة لهم، فيجب عليك تحديد عناوين خادوم الأسماء الذي تثق به لاستخدامه في ضبط TCP/IP لنظامك؛ في حالاتٍ عديدة، تُوفَّر هذه العناوين من موزع خدمة شبكتك، لكن هنالك خواديم أسماء عديدة متوفرة مجانًا للعموم، كخواديم Level3‏ (Verizon) بعناوين IP تتراوح بين 4.2.2.1 إلى 4.2.2.6. تنبيه: إن عنوان IP، وقناع الشبكة، وعنوان الشبكة، وعنوان البث، وعنوان البوابة تُحدَّد عادةً بالإمكان الملائمة لها في ملف ‎/etc/network/interfaces، عناوين خادوم الأسماء تُحدَّد عادة في قسم nameserver في ملف ‎/etc/resolve.conf، للمزيد من المعلومات، راجع صفحة الدليل لكلٍ من interfaces و resolv.conf على التوالي وبالترتيب، وذلك بكتابة الأوامر الآتية في محث الطرفية: للوصول إلى صفحة دليل interfaces، اكتب الأمر الآتي: man interfaces وللوصول إلى صفحة دليل resolv.conf: man resolv.conf توجيه IP يمثِّل توجيه IP‏ (IP Routing) الوسائل اللازمة لتحديد واكتشاف الطرق في شبكات TCP/IP بالإضافة إلى تحديد بيانات الشبكة التي ستُرسَل، يَستخدِم التوجيه ما يسمى «جداول التوجيه» (routing tables) لإدارة تمرير رزم بيانات الشبكة من مصدرها إلى وجهتها؛ وذلك عادة بواسطة عقد شبكيّة وسيطة تسمى «موجهات» (routers)؛ وهنالك نوعان رئيسيان من توجيه IP: التوجيه الثابت (static routing)، والتوجيه الديناميكي (dynamic routing). يشتمل التوجيه الثابت على إضافة توجيهات IP يدويًّا إلى جدول توجيهات النظام، ويتم ذلك عادةً بتعديل جدول التوجيهات باستخدام الأمر route؛ يتمتع التوجيه الثابت بعدِّة مزايا تميزه عن التوجيه الديناميكي، كسهولة استخدامه في الشبكات الصغيرة، وقابلية التوقع (يُحسَب جدول التوجيهات مسبقًا دائمًا، وهذا ما يؤدي إلى استخدام نفس المسار في كل مرة)، ويؤدي إلى حِملٍ قليل على الموجهات الأخرى ووصلات الشبكة نتيجةً لعدم استخدام بروتوكولات التوجيه الديناميكي؛ لكن يواجه التوجيه الثابت بعض الصعوبات أيضًا؛ فعلى سبيل المثال، التوجيهُ الثابتُ محدودٌ للشبكات الصغيرة، ولا يمكن أن يتوسَّع توسعًا سهلًا، ويصعب عليه التأقلم مع نقصان أو فشل معدات الشبكة في الطريق المسلوك نتيجةً للطبيعة الثابتة لذاك الطريق. يُعتَمَد على التوجيه الديناميكي في الشبكات الكبيرة ذات احتمالات عديدة للطرق الشبكية المسلوكة من المصدر إلى الوجهة، وتُستخدَم بروتوكولات توجيه خاصة، كبروتوكول معلومات الموجه (Router Information Protocol [RIP])، الذي يتولَّى أمر التعديلات التلقائية في جداول التوجيه، مما يجعل من التوجيه الديناميكي أمرًا ممكنًا؛ وللتوجيه الديناميكي مزايا عدّة عن التوجيه الثابت، كإمكانية التوسع بسهولة، والتأقلم مع نقصان أو فشل معدات الشبكة خلال الطريق المسلوك في الشبكة، بالإضافة إلى الحاجة لإعداداتٍ قليلةٍ نسبيًا لجداول التوجيه، ﻷن الموجهات تعلم عن وجود وتوفر بعضها بعضًا؛ وهذه الطريقة تمنع حدوث مشاكل في التوجيه نتيجةً لخطأ بشري في جداول التوجيه. لكن التوجيه الديناميكي ليس كاملًا، ويأتي مع عيوب، كالتعقيد، والحِمل الزائد على الشبكة بسبب التواصل بين الموجهات، التي لا تفيد المستخدمين المباشرين فوريًا، وتستهلك التراسل الشبكي. بروتوكولَي TCP و UDP إن بروتوكول TCP هو بروتوكول مبني على الاتصال (connection-based)، ويوفر آليةً لتصحيح الأخطاء، وضمانةً لتسليم البيانات عبر ما يُعرَف بالمصطلح «التحكم في الجريان» (flow control)، يُحدِّد التحكم في الجريان متى يجب إيقاف نقل البيانات، وإعادة إرسال الرزم التي أُرسِلَت سابقًا والتي واجهة مشاكل كالتصادمات (collisions)؛ إذ أنَّ التأكيد على الوصول الدقيق والكامل للبيانات عبر بروتوكول TCP هو أمر جوهري في عملية تبادل البيانات المهمة كالتحويلات في قواعد البيانات. أما بروتوكول UDP‏ (User Datagram Protocol) على الجهة الأخرى، هو بروتوكول عديم الاتصال (connectionless)، الذي نادرًا ما يتعامل مع عمليات نقل البيانات المهمة لأنه يفتقر إلى التحكم في جريان البيانات أو أيّة طريقة أخرى للتأكد من توصيل البيانات عمليًا؛ لكن بروتوكول UDP يُستخدَم استخدامًا شائعًا في التطبيقات كتدفق (streaming) الصوت والصورة، حيث أنه أسرع بكثير من TCP ﻷنه لا يحتوي على آليةٍ لتصحيح الأخطاء والتحكم في الجريان، وفي الأماكن التي لا يهم فيها فقدان بعض الرزم الشبكية كثيرًا. بروتوكول ICMP إن بروتوكول ICMP‏ (Internet Control Messaging Protocol) هو إضافة إلى بروتوكول الإنترنت (IP) الذي يُعرَّف في RFC‏‏ (Request For Comments) ذي الرقم ‎#792 ويدعم التحكم في احتواء الرزم الشبكية والأخطاء ورسائل المعلومات، يُستخدَم بروتوكول ICMP بتطبيقات شبكيّة كأداة ping، التي تستطيع تحديد إذا ما كان جهازٌ ما متاحًا على الشبكة، أمثلة عن رسالة الخطأ المُعادَة من ICMP -التي تكون مفيدةً لمضيفي الشبكة وللأجهزة كالموجهات- تتضمن رسالتَي «Destination Unreachable» و «Time Exceeded». العفاريت العفاريت (Daemons) هي تطبيقات نظام خاصة التي تعمل عادةً عملًا دائمًا في الخلفية، وتنتظر طلبياتٍ للوظائف التي توفرها من التطبيقات الأخرى، يتمحور عمل العديد من العفاريت حول الشبكة، وبالتالي فإن عددًا كبيرًا من العفاريت التي تعمل في الخلفية في نظام أوبنتو تُوفِّر وظائف تتعلق بالشبكة؛ بعض الأمثلة عن عفاريت الشبكة تتضمن «عفريت بروتوكول نقل النص الفائق» (HyperText Transport Protocol Daemon‏ [httpd])، الذي يوفر وظيفة خادوم الويب؛ و «عفريت الصدفة الآمنة» (Secure SHell Daemon‏ [sshd])، الذي يوفر طريقةً للدخول الآمن عن بُعد وإمكانيات نقل الملفات؛ و «عفريت بروتوكول الوصول إلى رسائل الإنترنت» (Internet Message Access Protocol Daemon‏ [imapd]) الذي يوفر خدمات البريد الإلكتروني... مصادر تتوفر صفحات دليلٍ لبروتوكولي TCP و IP التي تحتوي على معلومات قيمّة. راجع أيضًا المصدر الآتي من IBM‏: «TCP/IP Tutorial and Technical Overview». مصدرٌ أخرى هو كتاب «TCP/IP Network Administration» من O'Reilly. ترجمة -وبتصرف- للمقال Ubuntu Server Guide: Networking TCP/IP.
  9. تتكون الشبكات من جهازين أو أكثر، كأنظمة الحواسيب والطابعات وغيرها من المعدات المتعلقة بها والتي يمكن أن تتصل إما باستخدام كبل فيزيائي أو بالروابط اللاسلكية؛ وذلك لمشاركة وتوزيع المعلومات بين الأجهزة المتصلة. يوفر هذا الدرس معلوماتٍ عامة وأخرى متخصصة تتعلق بالشبكات، وتتضمن لمحةً عن مفاهيم الشبكة، ونقاشًا مفصَّلًا عن بروتوكولات الشبكة الشائعة. تأتي أوبنتو مع عدد من الأدوات الرسومية لضبط أجهزة الشبكة، هذه السلسلة موجَّهة لمدراء الخواديم، وستركِّز على إدارة الشبكة من سطر الأوامر. بطاقات إيثرنتتُعرَّف بطاقات إيثرنت (Ethernet interfaces) في النظام باستخدام الاسم الاصطلاحي ethX، حيث تمثل X قيمةً رقميةً، وتُعرَّف أول بطاقة إيثرنت بالاسم eth0، والثانية بالاسم eth1، وهَلُّمَ جرًا للبقية، حيث تُرتَّب ترتيبًا رقميًا. التعرف على بطاقات إيثرنتيمكنك استخدام الأمر ifconfig كما يلي للتعرف على جميع بطاقات إيثرنت بسرعة: ifconfig -a | grep eth eth0 Link encap:Ethernet HWaddr 00:15:c5:4a:16:5aبرمجيةٌ أخرى تساعدك في التعرف على جميع بطاقات الشبكة المتوفرة في نظامك هي الأمر lshw؛ يُظهِر الأمر lshw في المثال الآتي بطاقة إيثرنت واحدة باسمها المنطقي eth0، مع معلومات الناقل (bus) وتفاصيل التعريف وكل الإمكانيات المدعومة: sudo lshw -class network *-network description: Ethernet interface product: BCM4401-B0 100Base-TX vendor: Broadcom Corporation physical id: 0 bus info: pci@0000:03:00.0 logical name: eth0 version: 02 serial: 00:15:c5:4a:16:5a size: 10MB/s capacity: 100MB/s width: 32 bits clock: 33MHz capabilities: (snipped for brevity) configuration: (snipped for brevity) resources: irq:17 memory:ef9fe000-ef9fffffالأسماء المنطقية لبطاقات إيثرنتتُعرَّف الأسماء المنطقية للبطاقات في الملف ‎/etc/udev/rules.d/70-persistent-net.rules، إذا أردت التحكم في بطاقة التي ستحصل على اسم منطقي معين، فابحث عن السطر الذي يطابق عنوان MAC الفيزيائي للبطاقة، وعدِّل قيمة NAME=ethX إلى الاسم المنطقي المطلوب؛ أعد إقلاع النظام لتطبيق التغيرات التي أجريتها. إعدادات بطاقة إيثرنتإن ethtool هو برنامج يُظهِر ويعدِّل إعدادات بطاقة إيثرنت كالمفاوضة التلقائية (auto-negotiation)، وسرعة المنفذ، ونمط duplex (اتصال باتجاه وحيد، أم باتجاهين)، وخاصية الاستيقاظ عند وصول إشارة معينة من شبكة WoL‏ (Wake-on-LAN)؛ هذا البرنامج غير مثبَّت افتراضيًا، لكنه متوفر في المستودعات للتثبيت: sudo apt-get install ethtoolما يلي مثالٌ عن عرض الميزات المدعومة، وضبط إعدادات بطاقة إيثرنت: sudo ethtool eth0 Settings for eth0: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Advertised auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 1 Transceiver: internal Auto-negotiation: on Supports Wake-on: g Wake-on: d Current message level: 0x000000ff (255) Link detected: yesالتغيرات التي أُجريت بالأداة ethtool هي تغيرات مؤقتة، وستزول بعد إعادة الإقلاع، إذا أردت الحفاظ على تلك الخيارات، فأضف أمر ethtool الذي تريده إلى عبارة pre-up (التي تُنفَّذ عند تهيئة البطاقة وقبل استخدامها)، في ملف الإعدادات ‎/etc/network/interfaces. يوضح المثال الآتي كيف يمكن ضبط إعدادات بطاقة مُعرَّفة على أنها eth0 بسرعة منفذ تساوي 1000Mb/s وتعمل في نمط full duplex (اتصال باتجاهين): auto eth0 iface eth0 inet static pre-up /sbin/ethtool -s eth0 speed 1000 duplex fullملاحظة: على الرغم من أن المثال السابق يستخدم الطريقة «static»، إلا أنه يعمل مع الطرق الأخرى أيضًا، كاستخدام DHCP؛ فالغرض من المثال السابق هو توضيح المكان الصحيح لوضع عبارة pre-up في ملف إعدادات البطاقة وحسب. عناوين IPسيشرح القسم الآتي طريقة إعداد عناوين IP لنظامك، وضبط البوابة (gateway) الافتراضية اللازمة للتواصل على الشبكة المحلية والإنترنت. إسناد مؤقت لعنوان IPيمكن استخدام الأوامر القياسية عند الضبط المؤقت للشبكة، كالأمر ip و ifconfig و route التي يمكنك إيجادها في أغلب أنظمة تشغيل غنو/لينُكس؛ تسمح لك هذه الأوامر بضبط الإعدادات التي تأخذ حيز التنفيذ فوريًا، لكنها ليست دائمة؛ أي أنها لن تبقى مُفعَّلةً بعد إعادة التشغيل. لضبط عنوان IP مؤقتًا، استخدم الأمر ifconfig بالطريقة الآتية: لتعديل عنوان IP وقناع الشبكة الفرعية (subnet mask) لمطابقة متطلبات الشبكة: sudo ifconfig eth0 10.0.0.100 netmask 255.255.255.0للتأكد من ضبط عنوان IP للبطاقة eth0: ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:15:c5:4a:16:5a inet addr:10.0.0.100 Bcast:10.0.0.255 Mask:255.255.255.0 inet6 addr: fe80::215:c5ff:fe4a:165a/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:466475604 errors:0 dropped:0 overruns:0 frame:0 TX packets:403172654 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2574778386 (2.5 GB) TX bytes:1618367329 (1.6 GB) Interrupt:16لضبط البوابة الافتراضية، يمكنك استخدام الأمر route بالطريقة الآتية: حيث عليك تغيير عنوان البوابة الافتراضية لمطابقة متطلبات شبكتك: sudo route add default gw 10.0.0.1 eth0يمكنك استخدام الأمر route بهذه الطريقة للتأكد من ضبط البوابة الافتراضية: route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.0.0.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0 0.0.0.0 10.0.0.1 0.0.0.0 UG 0 0 0 eth0إذا كنت تحتاج إلى DNS لإعدادات شبكتك المؤقتة، فيمكنك إضافة عناوين IP لخواديم DNS في الملف ‎/etc/resolv.conf، لكن ليس من المستحسن عمومًا تعديل الملف ‎/etc/resolv.conf مباشرةً، لكن هذا ضبط مؤقت وغير دائم؛ يوضح المثال الآتي طريقة إضافة عناوين خادومَي DNS إلى ملف ‎/etc/resolv.conf؛ التي يجب أن تُبدَّل إلى الخواديم الملائمة لشبكتك؛ شرحٌ مطول عن ضبط إعدادات عميل DNS سيأتي في القسم الآتي. nameserver 8.8.8.8 nameserver 8.8.4.4إذا لم تعد بحاجة لهذا الضبط وتريد مسح كل إعدادات IP من بطاقة معينة، فعليك استخدام الأمر ip مع الخيار flush كما يلي: ip addr flush eth0ملاحظة: عملية إزالة ضبط IP باستخدام الأمر ip لا تمسح محتويات ملف ‎/etc/resolv.conf، فعليك حذف أو تعديل محتوياته يدويًا. إسناد ديناميكي لعنوان IP (عميل DHCP)لإعداد الخادوم لكي يستخدم DHCP لإسناد العنوان ديناميكيًا، فأضف الطريقة dhcp إلى عبارة «عائلة العنوان» (address family) في inet للبطاقة المطلوبة في ملف ‎/etc/network/interfaces، يفترض المثال الآتي أنك تُعِدّ بطاقة إيثرنت الأولى المعرَّفة باسم eth0: auto eth0 iface eth0 inet dhcpبإضافة ضبط للبطاقة كما في المثال السابق، يمكنك أن تفعِّل البطاقة باستخدام الأمر ifup الذي يهيّء DHCP باستخدام dhclient. sudo ifup eth0لتعطيل البطاقة يدويًا، يمكنك استخدام الأمر ifdown، الذي بدوره يهيّء عملية الإطلاق (release) الخاصة بنظام DHCP، ويوقف عمل البطاقة. sudo ifdown eth0إسناد عنوان IP ثابتلإعداد نظامك لاستخدام عنوان IP ثابت، فاستخدم الطريقة static في عبارة «عائلة العنوان» في inet للبطاقة المطلوبة في ملف ‎/etc/network/interfaces، يفترض المثال الآتي أنك تُعِدّ بطاقة إيثرنت الأولى المعرَّفة باسم eth0، عدِّل العنوان (address) وقناع الشبكة (netmask) والبوابة (gateway) إلى القيم التي تتطلبها شبكتك: auto eth0 iface eth0 inet static address 10.0.0.100 netmask 255.255.255.0 gateway 10.0.0.1بعد إضافة ضبط للبطاقة كما في المثال السابق، يمكنك أن تفعِّل البطاقة باستخدام الأمر ifup: sudo ifup eth0يمكنك استخدام الأمر ifdown لتعطيل البطاقة يدويًا: sudo ifdown eth0بطاقة loopbackإن بطاقة loopback (التي هي المضيف المحلي)، معرَّفة من النظام بالاسم lo، ولها عنوان IP الافتراضي 127.0.0.1، ويمكن أن تُعرَض باستخدام الأمر ifconfig: ifconfig lo lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:2718 errors:0 dropped:0 overruns:0 frame:0 TX packets:2718 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:183308 (183.3 KB) TX bytes:183308 (183.3 KB)افتراضيًا، يجب أن يكون هنالك سطران في ملف ‎/etc/network/interfaces مسؤولان عن ضبط بطاقة loopback تلقائيًا، ومن المستحسن أن تبقي على الإعدادات الافتراضية ما لم يكن لك غرضٌ محدد من تغييرها؛ مثال على السطرين الافتراضيين: auto lo iface lo inet loopbackاستبيان الأسماءإن استبيان الأسماء (Name resolution) الذي يتعلق بشبكات IP، هو عملية ربط عناوين IP إلى أسماء المضيفين، جاعلًا من السهل تمييز الموارد على الشبكة؛ سيشرح القسم الآتي كيف يُعَدّ النظام لاستبيان الأسماء باستخدام DNS، وسجلات أسماء المضيفين الثابتة (static hostname records). ضبط إعدادات عميل DNSتقليديًا، كان الملف ‎/etc/resolv.conf ملف ضبطٍ ثابتٍ لا تحتاج لتعديله إلا نادرًا، أو كان يُعدَّل تلقائيًا عبر عميل DHCP؛ أما حاليًا فيمكن أن يُبدِّل الحاسوب بين شبكةٍ وأخرى من حين لآخر، وأصبح يُستخدَم إطار العمل resolvconf لتَتَبُّع هذه التغيرات وتحديث إعدادات استبيان الأسماء تلقائيًا؛ في الواقع هو وسيط بين البرامج التي توفر معلومات استبيان الأسماء، والتطبيقات التي تحتاج إلى تلك المعلومات. يُغَذَّى Resolvconf بالمعلومات عبر مجموعة من السكربتات التي تتعلق بإعدادات بطاقة الشبكة، الفرق الوحيد بالنسبة للمستخدم هي أن أيّة تعديلات حدثت على ملف ‎/etc/resolv.conf ستُفقَد عندما تُعاد كتابته كل مرة يُشغِّل فيها حدثٌ ما resolvconf؛ فبدلًا من ذلك، يستخدم resolvconf عميل DHCP وملف ‎/etc/network ‎/interfaces لتوليد قائمة بخواديم الأسماء والنطاقات ليضعها في ملف ‎/etc/resolv.conf، الذي هو الآن وصلةٌ رمزية (symlink): /etc/resolv.conf -> ../run/resolvconf/resolv.confلضبط استبيان الأسماء، أضف عناوين IP لخواديم الأسماء الملائمة لشبكتك في ملف ‎/etc/network ‎/interfaces، يمكنك إضافة قائمة بحث اختيارية للاحقة DNS ‏(DNS suffix search-lists) لمطابقة أسماء نطاقات الشبكة، ولكل خيار ضبط resolv.conf صالح، يمكنك تضمين سطر واحد يبدأ باسم الخيار مع السابقة dns‎-‎ مما ينتج ملفًا شبيهًا بالملف الآتي: iface eth0 inet static address 192.168.3.3 netmask 255.255.255.0 gateway 192.168.3.1 dns-search example.com dns-nameservers 192.168.3.45 192.168.8.10يمكن أن يُستخدَم الخيار search مع عدِّة أسماء نطاقات، وستُلحَق طلبيات DNS في التسلسل الذي أُدخِلَت به؛ على سبيل المثال، ربما يكون لشبكتك نطاقات فرعية يجب البحث فيها؛ نطاق رئيسي «example.com»، ونطاقين فرعيين «sales.example.com»، و «dev.example.com». إذا كنت تريد البحث في عدِّة نطاقات فرعية، فسيكون ملف الضبط كالآتي: iface eth0 inet static address 192.168.3.3 netmask 255.255.255.0 gateway 192.168.3.1 dns-search example.com sales.example.com dev.example.com dns-nameservers 192.168.3.45 192.168.8.10إذا كنت تحاول عمل ping للمضيف ذي الاسم server1، فسيطلب النظام تلقائيًا طلبية DNS لاسم النطاق الكامل (Fully Qualified Domain Name [‏FQDN])، في الترتيب الآتي: server1.example.comserver1.sales.example.comserver1.dev.example.comإذا لم يُعثَر على أيّة مطابقات، فسيزودنا خادوم DNS بنتيجة «notfound»، وستفشل طلبية DNS. أسماء المضيفين الثابتةيمكن تعريف أسماء ثابتة للمضيفين تربط بين اسم المضيف وعنوان IP في ملف ‎/etc/hosts؛ المدخلات في ملف hosts ستسبق طلبيات DNS افتراضيًا، هذا يعني لو أن نظامك حاول تفسير اسم مضيف، وكان هذا الاسم يطابق مدخلةً في ملف ‎/etc/hosts، فلن يحاول البحث في سجلات DNS؛ وفي بعض حالات الاستخدام -وخصوصًا عندما لا يُتَطَّلب الوصول إلى الإنترنت- يمكن أن تتعرف الخواديم الموصولة بعدد قليل من الموارد الشبكية على بعضها باستخدام أسماء المضيفين الثابتة بدلًا من DNS. المثال الآتي هو ملف hosts، حيث نجد عددًا من الخواديم المحلية قد عُرِّفَت بأسماء مضيفين بسيطة، وأسماءٍ بديلة، وأسماء النطاقات الكاملة المكافئة لها: 127.0.0.1 localhost 127.0.1.1 ubuntu-server 10.0.0.11 server1 vpn server1.example.com 10.0.0.12 server2 mail server2.example.com 10.0.0.13 server3 www server3.example.com 10.0.0.14 server4 file server4.example.comملاحظة: لاحظ أن كل خادوم من الخواديم في المثال السابق قد أُعطي أسماءً بديلةً بالإضافة إلى أسمائها الأساسية، وأسماء النطاقات الكاملة؛ حيت رُبِطَ server1 مع الاسم vpn، و server2 يُشار إليه بالاسم mail، و server3 بالاسم www، و server4 بالاسم file. ضبط تبديل خدمة الأسماءالترتيب الذي يتبّعه نظامك لاختيار طريقةٍ لتحويل أسماء المضيفين إلى عناوين IP مُتَحَّكَمٌ به من ملف إعدادات «مُبَدِّل خدمة الأسماء» (Name Service Switch‏ [NSS]) الموجود في ‎/etc/nsswitch.conf؛ وكما ذُكِرَ في القسم السابق، فإن أسماء المضيفين الثابتة المعرَّفة في ملف ‎/etc/hosts تسبق استخدام سجلات DNS؛ المثال الآتي يحتوي على السطر المسؤول عن ترتيب البحث عن أسماء المضيفين في ملف ‎/etc/nsswitch.conf: hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4files: المحاولة أولًا للحصول على العناوين من ملف أسماء المضيفين الثابتة في ‎/etc/hosts.mdns4_minimal: محاولة الحصول على العناوين باستخدام Mulitcast DNS.[NOTFOUND=return]: تعني أن أي جواب يكون notfound أتى من عملية mdns4_minimal السابقة سيُعامَل بموثقية، ولن يحاول النظام الاستمرار في محاولة الحصول على جواب.dns: تمثل طلبية Unicast DNS قديمة.mdns4: تمثل طلبية Mulitcast DNS.لتعديل ترتيب طرائق استبيان الأسماء (name resolution) المذكورة آنفًا، يمكنك بكل بساطة تعديل قيمة عبارة «hosts» للقيمة التي تريدها؛ على سبيل المثال، لو كنت تفضل استخدام Unicast DNS القديم، بدلًا من Mulitcast DNS، فتستطيع تغيير تلك السلسلة النصية في ملف ‎ /etc/nsswitch.confكما يلي: hosts: files dns [NOTFOUND=return] mdns4_minimal mdns4إنشاء الجسورإنشاء جسر (bridge) بين عدة بطاقات شبكية هو ضبط متقدم جدًا، لكنه مفيد كثيرًا في حالات عديدة، أحد تلك الحالات هو إنشاء جسر بين عدة اتصالات شبكية، ثم استخدام جدار ناري لترشيح (filter) ما يمر بين قسمين من الشبكة؛ حالةٌ أخرى هي استخدام إحدى البطاقات لتمكين «الآلات الوهمية» (Virtual Machines) من الوصول إلى الشبكة الخارجية؛ يشرح المثال الآتي الحالة الأخيرة. قبل ضبط إعدادات الجسر، عليك تثبيت حزمة bridge-utils، أدخِل الأمر الآتي في الطرفية لتثبيت هذه الحزمة: sudo apt-get install bridge-utilsثم اضبط الجسر بتعديل ملف ‎/etc/network/interfaces: auto lo iface lo inet loopback auto br0 iface br0 inet static address 192.168.0.10 network 192.168.0.0 netmask 255.255.255.0 broadcast 192.168.0.255 gateway 192.168.0.1 bridge_ports eth0 bridge_fd 9 bridge_hello 2 bridge_maxage 12 bridge_stp offملاحظة: أدخِل القيم الملائمة لبطاقتك الفيزيائية، والشبكة عندك. ثم شغِّل بطاقة الجسر: sudo ifup br0يجب أن تعمل بطاقة الجسر تلقائيًا الآن، تُوفِّر الأداة brctl معلوماتٍ حول حالة الجسر، وتتحكم بالبطاقات التي تكوِّن جزءًا من الجسر؛ راجع صفحة الدليل man brctl لمزيد من المعلومات. مصادرهنالك وصلات في صفحة ويكي أوبنتو «Network» تشير إلى مقالات تشرح الضبط المتقدم جدًا للشبكة.صفحة الدليل الخاصة بالبرمجية resolvconf فيها بعض المعلومات عن resolvconf.صفحة دليل man interfaces تحتوي على تفاصيل عن خياراتٍ أخرى لملف ‎/etc/network ‎/interfaces.صفحة دليل man dhclient تحتوي على تفاصيل عن الخيارات الأخرى لضبط إعدادات عميل DHCP.للمزيد من المعلومات حول ضبط عميل DNS، راجع صفحة الدليل man resolver؛ راجع أيضًا الفصل السادس من الكتاب المنشور من O'Reilly‏: «Linux Network Administrator's Guide»؛ الذي هو مصدر جيد للمعلومات حول ضبط resolver، وخدمة الأسماء.لمزيد من المعلومات حول الجسور، راجع صفحة الدليل man brctl، وصفحة Networking-bridge في موقع مؤسسة لينُكس (Linux Foundation).ترجمة -وبتصرف- للمقال Ubuntu Server Guide: Network Configuration.
×
×
  • أضف...