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

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

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

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

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

صيغة الأمر ncmli

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

$ nmcli <options> <section> <action>

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

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

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

لنفترض أننا بحاجة إلى تعيين عنوان 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 أو / 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 وانقر أدخل:

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>

ثم اكتب طريقة مجموعة السيارات وانقر أدخل:

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

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

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

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

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

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

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

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

كإعلان

خوادم ملحمية - هو الخوادم الافتراضية على Windows أو Linux مع معالجات عائلة AMD EPYC القوية ومحركات Intel NVMe فائقة السرعة. اسرع للطلب!

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

المصدر: www.habr.com

إضافة تعليق