إدارة اتصالات الشبكة في Linux باستخدام الأداة المساعدة لوحدة التحكم nmcli

استفد بشكل كامل من أداة إدارة الشبكة NetworkManager من سطر أوامر Linux باستخدام الأداة المساعدة nmcli.







تقوم الأداة المساعدة nmcli باستدعاء API مباشرة للوصول إلى وظائف NetworkManager.



ظهر في عام 2010 وأصبح بالنسبة للكثيرين طريقة بديلة لتكوين واجهات الشبكة والاتصالات. على الرغم من أن شخصًا ما لا يزال يستخدم ifconfig . نظرًا لأن nmcli هي أداة واجهة سطر أوامر (CLI) مصممة للاستخدام في النوافذ والنصوص الطرفية ، فهي مثالية لمديري النظام الذين لا يستخدمون واجهة المستخدم الرسومية.



صيغة الأمر Ncmli



بشكل عام ، يبدو بناء الجملة كما يلي:



$ nmcli <options> <section> <action>


  • الخيارات هي المعلمات التي تحدد التفاصيل الدقيقة لـ nmcli ،
  • قسم (قسم) - يحدد ميزات الأداة التي يجب استخدامها ،
  • الإجراء - يسمح لك بتحديد ما يجب القيام به بالفعل.


هناك 8 أقسام في المجموع ، كل منها مرتبط بمجموعة من الأوامر (الإجراءات):



  • توفر التعليمات معلومات حول أوامر ncmcli واستخدامها.
  • عام يعيد حالة NetworkManager والتكوين العام.
  • تتضمن الشبكات أوامر للاستعلام عن حالة اتصال الشبكة وتمكين / تعطيل الاتصالات.
  • يتضمن الراديو أوامر للاستعلام عن حالة اتصال WiFi وتمكين / تعطيل الاتصالات.
  • تتضمن الشاشة أوامر لمراقبة نشاط NetworkManager ومراقبة التغييرات في حالة اتصالات الشبكة.
  • يتضمن الاتصال أوامر لإدارة واجهات الشبكة ، لإضافة اتصالات جديدة وإزالة الاتصالات الموجودة.
  • يستخدم الجهاز بشكل أساسي لتغيير المعلمات المتعلقة بالأجهزة (مثل اسم الواجهة) أو لتوصيل الأجهزة باستخدام اتصال موجود.
  • يقوم Secret بتسجيل nmcli باعتباره "العميل السري" NetworkManager ، الذي يستمع إلى الرسائل السرية. نادرًا ما يتم استخدام هذا القسم لأن nmcli يعمل بهذه الطريقة عند الاتصال بالشبكات افتراضيًا.


أمثلة بسيطة



قبل البدء ، تأكد من تشغيل NetworkManager وأن nmcli يمكنه التحدث إليه:



$ nmcli general
STATE      CONNECTIVITY  WIFI-HW  WIFI     WWAN-HW  WWAN    
connected  full          enabled  enabled  enabled  enabled


غالبًا ما يبدأ العمل بالنظر في كافة ملفات تعريف اتصال الشبكة:



$ nmcli connection show
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  ac3241e4-b424-35d6-aaa7-07498561688d  ethernet  enp0s3
Wired connection 2  2279d917-fa02-390c-8603-3083ec5a1d3e  ethernet  enp0s8
Wired connection 3  52d89737-de92-35ec-b082-8cf2e5ac36e6  ethernet  enp0s9


يستخدم هذا الأمر إجراء العرض لقسم الاتصال.



آلة الاختبار تعمل بنظام Ubuntu 20.04. في هذه الحالة ، وجدنا ثلاثة اتصالات سلكية: enp0s3 و enp0s8 و enp0s9.



إدارة الاتصال



من المهم أن نفهم أنه في nmcli ، نعني بمصطلح الاتصال كيانًا يحتوي على جميع المعلومات حول الاتصال. بمعنى آخر ، إنه تكوين الشبكة. يقوم الاتصال بتغليف جميع المعلومات المتعلقة بالاتصال ، بما في ذلك طبقة الارتباط ومعلومات عنونة IP. هذه هي الطبقة 2 والطبقة 3 في نموذج شبكة OSI.



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



إضافة اتصالات الشبكة



تسمح لك الأداة المساعدة ncmli بإضافة الاتصالات وتكوينها على الفور. على سبيل المثال ، لإضافة اتصال سلكي 2 (مع enp0s8) ، تحتاج إلى تشغيل الأمر التالي كمستخدم متميز:



$ sudo nmcli connection add type ethernet ifname enp0s8
Connection 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) successfully added.


في خيار النوع ، نشير إلى أن هذا سيكون اتصال Ethernet ، وفي خيار ifname (اسم الواجهة) ، نشير إلى واجهة الشبكة التي نريد استخدامها.



إليك ما يحدث بعد تشغيل الأمر:



$ nmcli connection show
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  ac3241e4-b424-35d6-aaa7-07498561688d  ethernet  enp0s3
Wired connection 2  2279d917-fa02-390c-8603-3083ec5a1d3e  ethernet  enp0s8
Wired connection 3  52d89737-de92-35ec-b082-8cf2e5ac36e6  ethernet  enp0s9
ethernet-enp0s8     09d26960-25a0-440f-8b20-c684d7adc2f5  ethernet  --  


تم إنشاء اتصال جديد ، ethernet-enp0s8. تم تعيين UUID ، وكان نوع الاتصال Ethernet. دعنا نطرحه مع الأمر up:



$ nmcli connection up ethernet-enp0s8
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)


تحقق من قائمة الاتصالات النشطة مرة أخرى:



$ nmcli connection show --active
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  ac3241e4-b424-35d6-aaa7-07498561688d  ethernet  enp0s3
ethernet-enp0s8     09d26960-25a0-440f-8b20-c684d7adc2f5  ethernet  enp0s8
Wired connection 3  52d89737-de92-35ec-b082-8cf2e5ac36e6  ethernet  enp0s9


تمت إضافة اتصال ethernet-enp0s8 جديد ، وهو نشط ويستخدم واجهة شبكة enp0s8.



إقامة الاتصالات



تعمل الأداة المساعدة ncmli على تسهيل تغيير معلمات التوصيلات الحالية. على سبيل المثال ، تحتاج إلى تغيير (DHCP) الديناميكي الخاص بك إلى عنوان IP ثابت.



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



$ nmcli connection modify ethernet-enp0s8 ipv4.address 192.168.4.26/24
$ nmcli connection modify ethernet-enp0s8 ipv4.method manual


لا تنس ضبط قناع الشبكة الفرعية أيضًا. بالنسبة لاتصال الاختبار الخاص بنا ، هذا هو 255.255.255.0 ، أو s / 24 للتوجيه بدون فئات (CIDR).



لكي تدخل التغييرات حيز التنفيذ ، يلزمك إلغاء تنشيط الاتصال ثم تنشيطه مرة أخرى:



$ nmcli connection down ethernet-enp0s8
Connection 'ethernet-enp0s8' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
$ nmcli connection up ethernet-enp0s8
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveC


إذا كنت بحاجة إلى تثبيت DHCP على العكس من ذلك ، فاستخدم تلقائي بدلاً من يدوي:



$ nmcli connection modify ethernet-enp0s8 ipv4.method auto


العمل مع الأجهزة



لهذا نستخدم قسم الجهاز.



التحقق من حالة الجهاز



$ nmcli device status
DEVICE  TYPE      STATE      CONNECTION        
enp0s3  ethernet  connected  Wired connection 1
enp0s8  ethernet  connected  ethernet-enp0s8    
enp0s9  ethernet  connected  Wired connection 3
lo      loopback  unmanaged  --  


طلب معلومات الجهاز



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

دعنا نلقي نظرة على واجهة enp0s8 التي يستخدمها اتصالنا الجديد. دعونا نتأكد من أنه يستخدم نفس عنوان IP الذي قمنا بتعيينه مسبقًا:



$ nmcli device show enp0s8
GENERAL.DEVICE:                         enp0s8
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         08:00:27:81:16:20
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     ethernet-enp0s8
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/6
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         192.168.4.26/24
IP4.GATEWAY:                            --
IP4.ROUTE[1]:                           dst = 192.168.4.0/24, nh = 0.0.0.0, mt = 103
IP6.ADDRESS[1]:                         fe80::6d70:90de:cb83:4491/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 103
IP6.ROUTE[2]:                           dst = ff00::/8, nh = ::, mt = 256, table=255


هناك الكثير من المعلومات. دعنا نسلط الضوء على الشيء الرئيسي:



  • اسم واجهة الشبكة: enp0s8.
  • نوع الاتصال: اتصال إيثرنت سلكي.
  • نرى عنوان MAC الخاص بالجهاز.
  • الحد الأقصى المحدد لوحدة الإرسال (MTU) - الحد الأقصى لحجم وحدة البيانات المفيدة لحزمة واحدة يمكن إرسالها بواسطة البروتوكول دون تجزئة.
  • الجهاز متصل حاليا .
  • اسم الاتصال الذي يستخدمه الجهاز هو ethernet-enp0s8.
  • يستخدم الجهاز نفس عنوان IP الذي حددناه سابقًا: 192.168.4.26/24.


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



محرر تفاعلي nmcli



يحتوي Nmcli أيضًا على محرر تفاعلي بسيط يمكن أن يشعر فيه الشخص براحة أكبر في العمل. لتشغيله ، على سبيل المثال لاتصال ethernet-enp0s8 ، استخدم إجراء التحرير:



$ nmcli connection edit ethernet-enp0s8


لديه أيضًا القليل من المساعدة ، ومع ذلك ، فهو أصغر حجمًا من إصدار وحدة التحكم:



===| nmcli interactive connection editor |===
Editing existing '802-3-ethernet' connection: 'ethernet-enp0s8'
Type 'help' or '?' for available commands.
Type 'print' to show all the connection properties.
Type 'describe [<setting>.<prop>]' for detailed property description.
You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, match, ipv4, ipv6, tc, proxy
nmcli>


إذا أدخلت أمر الطباعة وضغطت على Enter ، فسيعرض nmcli جميع خصائص الاتصال:



===============================================================================
                 Connection profile details (ethernet-enp0s8)
===============================================================================
connection.id:                          ethernet-enp0s8
connection.uuid:                        09d26960-25a0-440f-8b20-c684d7adc2f5
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              enp0s8
connection.autoconnect:                 yes
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.multi-connect:               0 (default)
connection.auth-retries:                -1
connection.timestamp:                   1593967212
connection.read-only:                   no
connection.permissions:                 --
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1 (default)
connection.secondaries:                 --


على سبيل المثال ، لتعيين خاصية DHCP للاتصال ، اكتب goto ipv4 واضغط على Enter :



nmcli> goto ipv4
You may edit the following properties: method, dns, dns-search, 
dns-options, dns-priority, addresses, gateway, routes, route-metric, 
route-table, routing-rules, ignore-auto-routes, ignore-auto-dns, 
dhcp-client-id, dhcp-iaid, dhcp-timeout, dhcp-send-hostname, 
dhcp-hostname, dhcp-fqdn, dhcp-hostname-flags, never-default, may-fail, 
dad-timeout
nmcli ipv4>


ثم اكتب set method auto واضغط على Enter :



nmcli ipv4> set method auto
Do you also want to clear 'ipv4.addresses'? [yes]:


إذا كنت تريد مسح IP الثابت ، فاضغط على Enter . بخلاف ذلك ، اكتب no واضغط على Enter. يمكنك الاحتفاظ بها إذا كنت تعتقد أنك ستحتاجها في المستقبل. ولكن حتى مع تخزين عنوان IP ثابت ، سيتم استخدام DHCP إذا تم ضبط الطريقة على تلقائي.



استخدم أمر الحفظ لحفظ التغييرات:



nmcli ipv4> save
Connection 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) successfully updated.
nmcli ipv4>


أدخل quit للخروج من محرر nmcli التفاعلي. إذا غيرت رأيك بشأن المغادرة ، فاستخدم الأمر الخلفي.



وهذا ليس كل شيء



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



الآن بعد أن أصبحت لديك الأساسيات ، تحقق من صفحة دليل nmcli لترى كيف يمكن أن تساعدك.






إعلان



خوادم Epic هي خوادم افتراضية لنظامي التشغيل Windows أو Linux مع معالجات AMD EPYC قوية ومحركات Intel NVMe سريعة جدًا. اسرع للطلب!






All Articles