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

طريقة ضبط الشبكة في نظام التشغيل لينكس


زينب الزعيم

إن وصل حاسوبك المثبت عليه نظام التشغيل لينكس على الشبكة ليس بهذه البساطة. سنتناول في هذه المقالة ملفات إعدادات الشبكة الرئيسية في توزيعات نظام لينكس المبنية على ريدهات Red Hat، وسنطلع على خدمتي بدء تشغيل وإدارة الشبكة، وهما: خدمة بدء تشغيل الشبكة الموقَّرة، ومدير الشبكة NetworkManager المثير للجدل.

تستطيع إدارة عدة بطاقات شبكة بسهولة في نظام لينكس، فعادةً تحتوي الحواسيب المحمولة على بطاقات شبكة سلكية ولاسلكية wireless، ويمكن أن تدعم بطاقات واي ماكس WiMax للشبكات الخليوية. كما تدعم الحواسيب المكتبية تعدد بطاقات الشبكة، فتستطيع أن تستخدم حاسوبك المثبَّت عليه نظام لينكس كعميل متعدد الشبكات multi-network أو موجه router للشبكات الداخلية، وهي حالة طبقتها في بعض الأنظمة التي عملت عليها.

ملفات إعدادات بطاقة الشبكة

يخصَّص ملف إعدادات لكل بطاقة شبكة في المجلد ‎/etc/sysconfig/network-scripts، وتكون صيغة تسمية هذه الملفات كالتالي ifcfg-<interface-name>X حيث أن interface name هو اسم بطاقة الشبكة، و X هو رقمها الذي يبدأ من الصفر أو الواحد حسب اصطلاح التسمية المعتمَد. فمثلًا يكون اسم أول بطاقة شبكة من نوع إيثرنت Ethernet interface كما يلي:

‎/etc/sysconfig/network-scripts/ifcfg-eth0

أما بقية الملفات في مجلد ‎/etc/sysconfig/network-scripts يكون معظمها نصوص برمجية أو سكربتات scripts تستخدَم لتشغيل الخدمات أو بطاقات الشبكة وإيقافها وتأدية عدة مهام متعلقة بضبط الشبكة.

يرتبط كل ملف من ملفات إعدادات بطاقة الشبكة ببطاقة شبكة فيزيائية محددة من خلال العنوان الفيزيائي MAC address للبطاقة.

اصطلاحات تسمية بطاقة الشبكة

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

بعد مضي فترة اتسمت فيها التسميات بأنها طويلةً ومبهمةً، أصبح لدينا الآن مجموعة ثالثة من اصطلاحات التسمية الأفضل نوعًا ما. لا تزال الأسماء مثل ethX مستخدمة في توزيعة سينتوس CentOS من الإصدار 6.x. أما اصطلاحات التسمية الأحدث التي تكون الأسماء فيها مثل eno1 أو enp0s3 مستخدَمة في RHEL 7 و CentOS 7 والإصدارات الأحدث من توزيعة فيدورا Fedora. يمكنك الاطلاع على اصطلاح التسمية في توزيعتَي RHEL 6 و CentOS 6 في دليل استخدام ريدهات في الملحق A. تسمية أجهزة الشبكة المعتمَد، والاطلاع على اصطلاح التسمية في التوزيعات RHEL 7 و CentOS 7 والإصدارات الحالية من فيدورا في دليل الشبكة في ريدهات في الفصل الثامن: تسمية أجهزة الشبكة المعتمَد.

نماذج عن ملفات الإعدادات

يحدد هذا النموذج من ملف إعدادات بطاقة الشبكة المسمَّى باسم ifcfg-eth0 ضبط عنوان IP ثابت لخادم مثبَّت عليه توزيعة CentOS 6.

# Intel Corporation 82566DC-2 Gigabit Network Connection
DEVICE=eth0
HWADDR=00:16:76:02:BA:DB
ONBOOT=yes
IPADDR=192.168.0.10
BROADCAST=192.168.0.255
NETMASK=255.255.255.0
NETWORK=192.168.0.0
SEARCH="example.com"
BOOTPROTO=static
GATEWAY=192.168.0.254
DNS1=192.168.0.254
DNS2=8.8.8.8
TYPE=Ethernet
USERCTL=no
IPV6INIT=no

تبين الإعدادات الواردة في هذا الملف أنه ينفذ المهمات التالية: يشغل بطاقة الشبكة عند إقلاع الجهاز، ويسند لها عنوان IP ثابت، ويحدد نطاق domain وبوابة الشبكة gateway، ويحدد خادمَي DNS، ولا يسمح لأي مستخدم غير المستخدم الجذر root بتشغيل وإيقاف بطاقة الشبكة.

يتضمن ملف إعدادات بطاقة الشبكة التالي المسمَّى باسم ifcfg-eno1 إعدادات خدمة DHCP لمحطة عمل مكتبية desktop workstation.

TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=no
IPV6_DEFROUTE=no
IPV6_FAILURE_FATAL=no
NAME=eno1
UUID=a67804ff-177a-4efb-959d-c3f98ba0947e
ONBOOT=yes
HWADDR=E8:40:F2:3D:0E:A8
IPV6_PEERDNS=no
IPV6_PEERROUTES=no

في نموذج ملف الإعدادات الثاني لم تحدَّد مدخلات DHCP والعنوان IP ونطاق البحث وجميع معلومات الشبكة الأخرى لأن خادم DHCP هو من يوفّرها. يمكن تجاوز بنود الإعدادات مثل البنود المتعلقة بخوادم DNS في ملف إعدادات بطاقة الشبكة بإضافة سطري DNS1 و DNS2، تمامًا مثل نموذج الإعدادات الثابتة السابق.

لاحظ أن النموذج الثاني يتضمن سطرًا للمعرّف العالمي الفريد UUID. بحسب معرفتي لا يؤثر هذا السطر على وظائف ملف الإعدادات، إذ أنني عادةً أحوله إلى تعليق أو أحذفه نهائيًا ولم يؤدي ذلك إلى حدوث أي خلل في شبكتي.

يحدد سطر HWADDR في كلا ملفي إعدادات بطاقة الشبكة العنوان MAC address لبطاقة الشبكة الفيزيائية، وهذا يربط بين بطاقة الشبكة الفيزيائية بملف إعدادات بطاقة الشبكة الموافق لها. يجب أن تعدّل عنوان MAC في الملف إذا بدّلت بطاقة الشبكة.

يمكنك معرفة MAC address لبطاقة الشبكة NIC بعدة وسائل، أختار منها عادةً الأمر ifconfig الذي يعرض جميع بطاقات الشبكة المثبتة على الجهاز، وعنوان MAC لكل منها وإحصائيات متنوعة مرتبطة بها. يُطبع عنوان MAC للعديد من بطاقات الشبكة الحديثة على علبتها أو على ملصَق موجود على بطاقة الشبكة نفسها. لكن تولَّد معظم ملفات إعدادات بطاقة الشبكة تلقائيًا أثناء عملية تثبيت بطاقة الشبكة أو فور رصد بطاقة الشبكة المركَّبة حديثًا، ليتضمن ملف إعدادات بطاقة الشبكة الجديد عنوان MAC address.

يشير سطر ONBOOT أن تفعيل بطاقة الشبكة يكون عند إقلاع الجهاز. إذا عدلنا هذا السطر إلى no يصبح تفعيل بطاقة الشبكة إما يدويًا أو من خلال واجهة مدير الشبكة بعد تسجيل الدخول.

يشير السطر USERCTL أنه لا يسمح للمستخدمين غير المخوّلين بإدارة بطاقة الشبكة، أي تشغيلها وإيقافها. تعديل هذا المعامل parameter إلى yes يسمح للمستخدمين العاديين أن يفعِّلوا بطاقة الشبكة ويوقفوا تفعيلها.

لا يهم ترتيب الأسطر في ملف إعدادات بطاقة الشبكة، إذ أنه سيؤدي مهامه كيفما رتبت الأسطر. وكما هو متعارف عليه، تكتَب أسماء الخيارات بأحرف كبيرة وتكتَب القيم بأحرف صغيرة. ويمكن أن تضع قيم الخيارات بين علامتي اقتباس ""، لكن لا يكون ذلك ضروريًا إلا في الحالة التي تكون فيها القيم رقمًا أو أكثر من كلمة واحدة.

خيارات الإعدادات

اخترت لك بعض أكثر الخيارات المستخدَمة في ملف إعدادات بطاقة الشبكة لتطلع عليها من بين العديد من خيارات الإعدادات:

  • DEVICE: الاسم المنطقي للجهاز، مثل eth0 أو enp0s2.
  • HWADDR: عنوان MAC address لبطاقة الشبكة المرتبطة بهذا الملف، مثل 00:16:76:02:BA:DB.
  • ONBOOT: تشغيل خدمات الشبكة على هذا الجهاز عندما يقلع المضيف. خياراته هي "yes/no". يكون هذا الخيار مضبوطًا على "no" عادةً، ولا تعمل الشبكة إلا عندما يسجل مستخدم الدخول إلى سطح المكتب. إذا أردت أن تعمل خدمات الشبكة حتى لو لم يسجل أي مستخدم دخوله عدّل هذا الخيار إلى "yes".
  • IPADDR: عنوان IP المسنَد إلى بطاقة الشبكة، مثل 192.168.0.10.
  • BROADCAST: عنوان البث المخصص لهذه الشبكة، مثل 192.168.0.255.
  • NETMASK: قناع الشبكة لهذه الشبكة الفرعية مثل القناع من الفئة C التالي: 255.255.255.0.
  • NETWORK: معرف الشبكة ID لهذه الشبكة الفرعية مثل معرف الشبكة من الفئة C التالي: 192.168.0.0.
  • SEARCH: اسم نطاق DNS الذي يبحث عنه عند إجراء عمليات البحث عن أسماء المضيفين غير المؤهلة unqualified hostnames.
  • BOOTPROTO: بروتوكول الإقلاع لبطاقة الشبكة هذه. تكون الخيارات كالتالي: static و DHCP و bootp و none. يشير خيار "none" افتراضيًا إلى ثابت static.
  • GATEWAY: موجه الشبكة أو البوابة الافتراضية default gateway لهذه الشبكة الفرعية، مثل 192.168.0.254.
  • ETHTOOL_OPTS: يستخدم هذا الخيار لضبط بنود إعدادات معينة لبطاقة الشبكة مثل السرعة وحالة الازدواج duplex وحالة التفاوض التلقائي autonegotiation. يجب أن تجمَع قيم هذا الخيار بين علامتي اقتباس واحدة لوجود عدة قيم منفصلة له، مثل: "autoneg off speed 100 duplex full".
  • DNS1: خادم DNS الرئيسي مثل 192.168.0.254، وهو خادم موجود ضمن الشبكة المحلية. تضاف خوادم DNS المحددة هنا إلى ملف ‎/etc/resolv.conf عند استخدام NetworkManager، أو عندما يكون خيار موجّه peerdns محددًا بالخيار yes. وإلا يجب أن تضاف خوادم DNS إلى الملف ‎/etc/resolv.conf يدويًا ويتم تجاهلها هنا ضمن هذا الملف.
  • DNS2: خادم DNS الثانوي، مثلًا 8.8.8.8، وهو أحد خوادم DNS المجانية الخاصة بجوجل Google. يجدر الإشارة أن إضافة خادم DNS ثانوي آخر tertiary DNS server غير مدعومة في ملف إعدادات بطاقة الشبكة، لكن يمكنك ضبطه في الملف الثابت resolv.conf .
  • TYPE: نوع الشبكة الذي يكون عادةً Ethernet، إذ أن القيمة الوحيدة الأخرى التي رأيتها في هذا الخيار كانت Token Ring، لكن ذلك عرَضي في معظم الأحيان.
  • PEERDNS: يشير خيار yes أن ملف ‎/etc/resolv.conf سيعدَّل بإدراج مدخلات خادم DNS ضمنه، التي نحددها في خياري DNS1 و DNS2 ضمن هذا الملف. يشير الخيار "No" إلى عدم تعديل ملف resolv.conf. يكون خيار "Yes" الخيار الافتراضي عندما نحدد خيار DHCP في سطر BOOTPROTO.
  • USERCTL: يحدد سماحية تشغيل وإيقاف بطاقة الشبكة للمستخدمين غير المخوّلين، وتكون خياراته "yes/no".
  • IPV6INIT: يبين هل تطبَّق بروتوكولات IPV6 على بطاقة الشبكة هذه أم لا، وتكون خياراته "yes/no".

تحديد الخيار DHCP يؤدي إلى تجاهل معظم الخيارات الأخرى، لتكون الخيارات الوحيدة المطلوبة في هذه الحالة هي BOOTPROTO و ONBOOT و HWADDR. من الخيارات الأخرى التي لا يتم تجاهلها وقد تجدها مفيدةً خياري DNS1 و PEERDNS وذلك في حالة أردت تجاوز مدخلات DNS التي يزودك بها خادم DHCP.

ملف الشبكة القديم

ستتعامل مع ملف واحد قديم وأصبح مهملًا الآن وهو ملف الشبكة network. الذي يتضمن في إصدارات فيدورا وريد هات وسينتوس عادةً سطرًا واحدًا يحتوي تعليقًا، وتجده في المسار ‎/etc/sysconfig. كان يستخدم سابقًا لتفعيل أو تعطيل الربط الشبكي، إضافةً إلى تحديد اسم مضيف الشبكة كما هو مبين في النموذج التالي:

NETWORKING=yes
HOSTNAME=host.example.com

إن هذا الملف موجود في فيدورا منذ إصدارها 19 لكنه غير مستخدَم. لا يزال مستخدمًا في إصدارات RHEL/CentOS 6.x، لكنه لم يعد مستخدمًا في RHEL/CentOS 7.x، إذ يحدَّد اسم مضيف الشبكة حاليًا في الملف ‎/etc/hostname.

ملفات الشبكة الأخرى

يحتوي مجلد ‎/etc/sysconfig/network-files العديد من الملفات الأخرى التي تكون جميعها عادةً نصوص باش BASH تنفيذية وليست ملفات إعدادات. إن هذا بالنسبة لي على الأقل إحدى أكثر الاستثناءات المزعجة للتسلسل الهرمي القياسي لنظام الملفات في لينكس FHS الذي ينص صراحةً أن ملفات الإعدادات، وليست الملفات التنفيذية، هي الملفات الوحيدة التي نجدها ضمن المسارetc/.

ملف route-<interface>‎ هو أحد ملفات الشبكة الأخرى الموجودة في المسار ‎/etc/sysconfig/network-files. إذا أردت أن تضبط أسطر توجيه ثابتة static routes في نظام متصل بأكثر من شبكة multi-homed system، أنشئ ملف توجيه route لكل بطاقة شبكة. فمثلًا يسمى الملف التالي route-eth0، وهو يحدد أسطر التوجيه لبطاقة شبكة محددة لكل من الشبكات والمضيفين الفرديين.

default 192.168.2.1 dev eth0
10.10.10.0/24 via 192.168.0.1 dev eth0
192.168.1.0/24 via 192.168.0.1 dev eth0

192.168.96.11 via 192.168.97.1
192.168.15.100 via 192.168.15.32
192.168.96.12 via 192.168.97.1
192.168.97.100 via 192.168.97.1

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

بدء تشغيل الشبكة

إن دخول الشبكات اللاسلكية والهواتف المحمولة جعل إعادة ضبط بطاقات الشبكة عند إضافة كل شبكة لاسلكية جديدة معقدًا ويستهلك وقتًا طويلًا. كما أن ذلك قد يؤدي إلى تضارب التسميات عند إضافة بطاقة شبكة جديدة.

الشبكة

كانت خدمات الشبكة القديمة هي المستخدَمة افتراضيًا في إدارة مهام بدء تشغيل الشبكة وإيقافها في التوزيعات المبنية على ريد هات حتى عام 2004. كان نص التشغيل البرمجي SystemV يستخدم ملفات إعدادات ثابتة لتشغيل الشبكة السلكية أو اللاسلكية عند إقلاع الجهاز، أو عند تنفيذ أمر بسيط مثل service network start في واجهة الأوامر. لا تزال هذه الخدمة متوفرة لكن يعاد توجيه الأوامر من خلال systemd.

لا تستطيع خدمة الشبكة مراقبة الأجهزة القابلة للتوصيل أو الشبكات اللاسلكية المتغيرة، لذا يصعب استخدامها على الحواسيب المحمولة أو الحواسيب من نوع نت بوك netbook.

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

مدير الشبكة

طرحت ريدهات مدير الشبكة NetworkManager في عام 2004 لتسهيل عملية ضبط الشبكة والاتصالات وأتمتتها، وخاصةً للشبكات اللاسلكية. كانت الغاية منه تفادي اضطرار المستخدم إلى ضبط كل شبكة لاسلكية يدويًا. مع أن الغاية منه كانت تسهيل إدارة الشبكة على المستخدمين غير التقنيين، إلا أنها تتطلب أن يجري مدير النظام بعض التعديلات، لأن العديد من الوظائف المعتادة أصبحت تعالجها شريحة جديدة من ملفات الإعدادات والنصوص البرمجية. هذا يعني أن ملفات الإعدادات القياسية معرضة لأن يكتب مدير الشبكة فيها في كل مرة يعاد تشغيل خدمات الشبكة، وهذا يشمل كل عملية إعادة إقلاع.

إن العفريت udev هو مدير نواة الجهاز المسؤول عن تسمية جميع الأجهزة تسميةً منهجيةً ومتواصلةً، وهذا يشمل أجهزة الشبكة وأجهزة التخزين القابلة للإزالة. كما تستخدم لمطابقة أسماء أجهزة الشبكة مثل eth0 أو eno1 مع عنوان MAC لبطاقة الشبكة.

آلية عمله التقريبية

يرصد مدير الأجهزة udev إضافة جهاز جديد إلى النظام مثل بطاقة شبكة جديدة، وينشئ قاعدةً للتعرف عليه وتسميته إذا لم يكن موجودًا مسبقًا. تغيرت تفاصيل آلية تنفيذ ذلك في الإصدارات الأحدث من فيدورا وسينتوس وريد هات. يمكنك الاطلاع على الشرح المفصَّل للنهج المتَّبع في تسمية الأجهزة في دليل الربط الشبكي في ريد هات 7، إضافةً إلى شرح من أين تشتَق هذه الأسماء.

إن العرف الحالي هو استخدام محتويات ملفات إعدادات بطاقة الشبكة لتوليد القواعد. لكن إذا لم يكن هذا الملف موجودًا، يرسل udev إشعارًا إلى مدير الشبكة عند وصل جهاز جديد أو الاتصال بشبكة لاسلكية جديدة، لينشئ مدير الشبكة عندها ملف جديد لإعدادات بطاقة الشبكة.

ينشئ العفريت udev قيدًا لكل بطاقة شبكة في ملف قواعد الشبكة. يستخدم مدير الشبكة هذه القيود إضافةً إلى المعلومات الواردة في ملفات إعدادات بطاقة الشبكة الموجودة في مجلد ‎/etc/sysconfig/network-scripts في تهيئة كل بطاقة شبكة.

قرار مدراء النظام

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

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

لكن كما جرت العادة في نظام التشغيل لينكس، إن اتخاذ قرار أية خدمة ستستخدم يعود إليك.

ترجمة -وبتصرف- للمقال ‎How to configure networking in Linux لصاحبه David Both.

اقرأ أيضًا


تفاعل الأعضاء

أفضل التعليقات

لا توجد أية تعليقات بعد



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...