الفلاتر
طريقة البحث
  • الكلمات العادية تجد الأسماء والنصوص والأمثلة.
  • "كلمتان" تجد العبارة بالضبط.
  • --name أو -x تجد خيارًا.
  • #كلمة تبحث داخل الأوامر فقط.
  • @grep تجد الدروس والمعامل التي تستخدم grep.
  • الفلاتر: cat:network · in:labs · level:rhcsa · ch:8 · root:yes. ضع ! قبل كلمة لاستبعادها. OR بين الكلمات تعني إحداها.
  • ↑ ↓ للتنقل · Enter للفتح · Esc للإغلاق · / للبحث

nmcli

إعداد اتصالات الشبكة وتغييرها والتحقق منها باستخدام NetworkManager.

المستوى
امتحان RHCSA
المجموعة
الشبكة
يحتاج root
للتغييرات
الحزمة
NetworkManager

ماذا يفعل

NetworkManager هو الخدمة التي تدير الشبكة في Red Hat Enterprise Linux. يحفظ إعداداتك في ملفات تعريف الاتصال (connection profiles). ملف التعريف يحمل عناوين IP والبوابة وخوادم DNS وأكثر. الأداة nmcli هي أداة سطر الأوامر لقراءة وتغيير ملفات التعريف هذه والأجهزة (بطاقات الشبكة).

الإعدادات التي تضبطها بـ nmcli تُحفظ في ملف التعريف، لذلك تبقى بعد إعادة التشغيل. هذا هو الفرق الكبير مع الأمر ip الذي تضيع تغييراته عند إعادة التشغيل.

أغلب الأوامر يمكن اختصارها: nmcli connection show = nmcli con show = nmcli c s. الإكمال بزر Tab يساعدك في إيجاد الكلمة التالية.

طريقة الكتابة

nmcli [OPTIONS] OBJECT { COMMAND | help }
nmcli connection { show | up | down | modify | add | edit | clone | delete | reload | load | import | export | monitor }
nmcli device { status | show | set | connect | disconnect | reapply | modify | delete | monitor | wifi | lldp }
nmcli general { status | hostname | permissions | logging | reload }
nmcli networking { on | off | connectivity }
nmcli radio { all | wifi | wwan } [ on | off ]

الأجزاء الرئيسية

general
الحالة العامة لـ NetworkManager، واسم الجهاز، وصلاحياتك، ومستوى السجلات.
networking
تشغيل كل الشبكة أو إيقافها، أو فحص الاتصال بالإنترنت.
radio
تشغيل أو إيقاف الواي فاي وشبكة الهاتف المحمول.
connection (con, c)
العمل مع ملفات التعريف: show و add و modify و up و down و delete و reload.
device (dev, d)
العمل مع بطاقات الشبكة: الحالة، التفاصيل، الاتصال، قطع الاتصال، الواي فاي.
monitor
متابعة تغييرات الأجهزة والاتصالات مباشرة.
agent
العمل كوكيل للأسرار أو لـ polkit (يطلب كلمات المرور).

الخيارات 45

الأكثر استخدامًا

خيارات عامة (قبل الكائن)

-t, --terse
مخرجات قصيرة للسكربتات. بدون عناوين، والحقول مفصولة بـ ":".
-f, --fields list
اختر الأعمدة التي تظهر، مثلًا NAME,DEVICE. تعمل أيضًا all و common.
-g, --get-values list
اطبع قيم هذه الحقول فقط. مثل ‎-t ‎-f معًا. مناسب للسكربتات.
-p, --pretty
مخرجات سهلة القراءة مع عناوين وخطوط بين المجموعات.
-m, --mode {tabular|multiline}
اعرض المخرجات كجدول أو حقلًا واحدًا في كل سطر.
-c, --colors {yes|no|auto}
استخدام الألوان في المخرجات أو لا.
-e, --escape {yes|no}
تهريب ":" و "\" في المخرجات القصيرة (yes هو الافتراضي).
-a, --ask
يطلب القيم الناقصة، مثل كلمة مرور الواي فاي.
-s, --show-secrets
يعرض كلمات المرور والمفاتيح في المخرجات.
-w, --wait seconds
مدة الانتظار حتى ينتهي الإجراء (مثل con up).
--offline
العمل على ملفات التعريف بدون تشغيل NetworkManager (مع connection add/modify، قراءة وكتابة keyfiles عبر stdin و stdout).
--complete-args
يطبع الكلمات التالية الممكنة (يستخدمه الإكمال بزر Tab).
-h, --help
يعرض المساعدة. يعمل أيضًا بعد أي كائن: nmcli con help.
-v, --version
يعرض إصدار nmcli.

خيارات أوامر connection

--active
مع con show: اعرض ملفات التعريف النشطة فقط.
--order list
مع con show: رتّب القائمة، مثلًا --order +type,-name.
--temporary
مع con modify: غيّر الحالة الجارية فقط، وليس ملف التعريف المحفوظ.
save {yes|no}
مع con add: القيمة save no تنشئ ملف تعريف لا يُكتب على القرص.
con-name name
مع con add: اسم ملف التعريف الجديد.
ifname device
مع con add: الجهاز الذي يتبعه ملف التعريف. استخدم * لأي جهاز.
type type
مع con add: نوع ملف التعريف: ethernet و wifi و bond و bridge و vlan و team و vpn و loopback …

إعدادات تغيّرها كثيرًا (setting.property)

ipv4.method {auto|manual|disabled|link-local|shared}
‏auto = DHCP، و manual = عنوان ثابت، و disabled = بدون IPv4.
ipv4.addresses ip/prefix
عنوان (أو عناوين) IPv4 الثابتة مع البادئة، مثل 192.168.122.10/24. استخدم + أو - لإضافة عنوان أو حذفه.
ipv4.gateway ip
البوابة الافتراضية لـ IPv4.
ipv4.dns list
خوادم DNS، مفصولة بمسافة أو فاصلة.
ipv4.ignore-auto-dns {yes|no}
لا تستخدم خوادم DNS التي يرسلها DHCP.
ipv4.ignore-auto-routes {yes|no}
لا تستخدم المسارات التي يرسلها DHCP.
ipv4.routes list
مسارات إضافية: "10.20.0.0/16 192.168.122.254". استخدم + للإضافة.
ipv4.route-metric n
أولوية مسارات ملف التعريف. الأقل يفوز.
ipv4.never-default {yes|no}
لا تستخدم ملف التعريف هذا أبدًا للمسار الافتراضي.
ipv4.may-fail {yes|no}
مع "no" يكون ملف التعريف نشطًا فقط إذا عمل IPv4.
ipv6.method {auto|manual|ignore|disabled|link-local|dhcp|shared}
كيف يحصل IPv6 على عنوانه. ‏disabled = بدون IPv6 في ملف التعريف.
ipv6.addresses ip/prefix
عناوين IPv6 الثابتة، مثل 2001:db8:10::10/64.
ipv6.gateway ip
البوابة الافتراضية لـ IPv6.
ipv6.dns list
خوادم DNS لـ IPv6.
connection.id name
اسم ملف التعريف. غيّره لإعادة تسمية ملف التعريف.
connection.autoconnect {yes|no}
يبدأ ملف التعريف وحده (وعند الإقلاع أيضًا).
connection.autoconnect-priority n
عندما يمكن أن تبدأ عدة ملفات تعريف، الرقم الأكبر يفوز.
connection.interface-name device
اربط ملف التعريف بجهاز واحد.
connection.zone zone
منطقة firewalld لملف التعريف، مثل internal أو public.
802-3-ethernet.mtu bytes
قيمة MTU للبطاقة (الاسم القصير: ethernet.mtu).
802-3-ethernet.cloned-mac-address mac
استخدم عنوان MAC آخر (أو random أو stable).
vlan.id n
مع النوع vlan: رقم الشبكة الافتراضية VLAN.
bond.options list
مع النوع bond: مثل "mode=active-backup,miimon=100".

أمثلة 16

$ مستخدم عادي# بصلاحية root (أو مع sudo)

  1. 1عرض كل ملفات التعريف والجهاز الذي يستخدمها

    nmcli connection show
    NAME    UUID                                  TYPE      DEVICE
    enp1s0  3f0c3a8e-6c35-4c5a-9a0e-7f1a2b3c4d5e  ethernet  enp1s0
    lo      2b1c5e3a-1d2e-4f5a-8b9c-0d1e2f3a4b5c  loopback  lo

    ملف التعريف الذي عمود DEVICE فيه فارغ ليس نشطًا الآن.

  2. 2عرض حالة كل بطاقة شبكة

    nmcli device status
    DEVICE  TYPE      STATE                   CONNECTION
    enp1s0  ethernet  connected               enp1s0
    lo      loopback  connected (externally)  lo

    ‏"disconnected" تعني أن البطاقة تعمل لكن لا يوجد ملف تعريف نشط عليها. و "unmanaged" تعني أن NetworkManager لا يتحكم فيها.

  3. 3إعطاء الخادم عنوان IPv4 ثابتًا

    nmcli con mod enp1s0 ipv4.method manual ipv4.addresses 192.168.122.10/24 \
        ipv4.gateway 192.168.122.1 ipv4.dns 192.168.122.1
    nmcli con up enp1s0

    التغيير يُحفظ في ملف التعريف. والأمر con up يستخدمه الآن مباشرة.

  4. 4إضافة عنوان ثانٍ بدون حذف الأول

    nmcli con mod enp1s0 +ipv4.addresses 192.168.122.110/24
    nmcli con up enp1s0

    استخدم علامة الطرح لحذف عنوان واحد مرة أخرى: -ipv4.addresses 192.168.122.110/24.

  5. 5إنشاء ملف تعريف جديد بعنوان ثابت

    nmcli con add con-name app-net type ethernet ifname enp2s0 \
        ipv4.method manual ipv4.addresses 10.10.20.15/24 ipv4.gateway 10.10.20.1 ipv4.dns 10.10.20.53

    مفيد لبطاقة شبكة ثانية، مثل شبكة منفصلة للنسخ الاحتياطي أو لقواعد البيانات.

  6. 6استخدام خوادم DNS الخاصة بك فقط (تجاهل DHCP)

    nmcli con mod enp1s0 ipv4.dns "10.0.0.53 10.0.1.53" ipv4.ignore-auto-dns yes ipv4.dns-search corp.example.com
    nmcli con up enp1s0
    cat /etc/resolv.conf

    يكتب NetworkManager الملف /etc/resolv.conf بدلًا منك. الخادم المؤمَّن يجب أن يستخدم فقط خوادم DNS الداخلية التي تسجّل الطلبات.

  7. 7إضافة مسار ثابت إلى شبكة أخرى

    nmcli con mod enp1s0 +ipv4.routes "10.20.0.0/16 192.168.122.254"
    nmcli con up enp1s0
    ip route show 10.20.0.0/16

    شائع لشبكة الإدارة أو لبوابة VPN. المسار يبقى بعد إعادة التشغيل، على عكس ip route add.

  8. 8الحصول على قيمة واحدة لسكربت

    nmcli -g IP4.ADDRESS device show enp1s0
    192.168.122.10/24
    nmcli -t -f NAME,DEVICE con show --active
    enp1s0:enp1s0

    الخياران ‎-g و ‎-t يعطيان مخرجات نظيفة بدون عناوين. استخدمهما في سكربتات التجهيز وفحوصات الصحة.

  9. 9إنشاء واجهة VLAN لشبكة منفصلة

    nmcli con add type vlan con-name vlan30 dev enp1s0 id 30 \
        ipv4.method manual ipv4.addresses 172.16.30.5/24
    nmcli con up vlan30

    شبكات VLAN تفصل حركة البيانات، مثل منطقة DMZ للخوادم العامة. يجب أن يسمح منفذ السويتش بالشبكة VLAN 30.

  10. 10إنشاء bond من بطاقتين للتبديل عند العطل

    nmcli con add type bond con-name bond0 ifname bond0 bond.options "mode=active-backup,miimon=100" \
        ipv4.method manual ipv4.addresses 192.168.50.10/24 ipv4.gateway 192.168.50.1
    nmcli con add type ethernet port-type bond controller bond0 con-name bond0-p1 ifname enp3s0
    nmcli con add type ethernet port-type bond controller bond0 con-name bond0-p2 ifname enp4s0
    nmcli con up bond0

    إذا تعطل كابل أو سويتش تعمل البطاقة الأخرى مكانه. تحقق بالأمر cat /proc/net/bonding/bond0.

  11. 11وضع ملف تعريف في منطقة firewalld

    nmcli con mod enp2s0 connection.zone internal
    nmcli con up enp2s0
    firewall-cmd --get-active-zones

    كل بطاقة شبكة يمكن أن تكون لها قواعد جدار ناري خاصة: public لجهة الإنترنت و internal للجهة الخاصة.

  12. 12إيقاف IPv6 في ملف تعريف

    nmcli con mod enp1s0 ipv6.method disabled
    nmcli con up enp1s0

    افعل ذلك فقط إذا طلبته سياسة الشركة. خدمات كثيرة تعمل جيدًا مع IPv6.

  13. 13ضبط اسم الجهاز

    nmcli general hostname web01.example.com
    hostnamectl --static
    web01.example.com

    نفس نتيجة hostnamectl set-hostname.

  14. 14معرفة من يُسمح له بتغيير الشبكة

    nmcli general permissions

    عبر SSH يحصل المستخدم العادي غالبًا على "no" أو "auth". استخدم sudo.

  15. 15قراءة ملف تعريف عُدّل يدويًا مرة أخرى

    vim /etc/NetworkManager/system-connections/enp1s0.nmconnection
    nmcli con reload
    nmcli con up enp1s0

    الأمر reload يقرأ الملفات فقط. والأمر up يجعل الإعدادات الجديدة نشطة.

  16. 16متابعة تغييرات الشبكة مباشرة

    nmcli monitor

    مفيد عندما تفصل كابلًا أو تعيد تشغيل سويتش. اضغط Ctrl+C للإيقاف.

انتبه

  • الأمر nmcli con mod يغيّر ملف التعريف فقط. نفّذ nmcli con up NAME لاستخدام التغيير الآن.
  • عبر SSH، العنوان أو البوابة الخاطئة يقطع اتصالك أنت. اترك شاشة console مفتوحة.
  • بدون + فإن إعدادًا مثل ipv4.addresses يستبدل كل القيم القديمة.
  • ملفا تعريف لجهاز واحد وكلاهما فيه autoconnect: لن تعرف أيهما سيبدأ بعد إعادة التشغيل.
  • الإعداد ipv4.method manual يحتاج عنوانًا واحدًا على الأقل في ipv4.addresses، وإلا يفشل الأمر.
  • لا تعدّل /etc/resolv.conf يدويًا. NetworkManager يكتبه مرة أخرى.

الملفات

/etc/NetworkManager/system-connections/
ملفات التعريف، ملف keyfile واحد (.nmconnection) لكل ملف تعريف. لـ root فقط (صلاحيات 600).
/etc/NetworkManager/NetworkManager.conf
الإعدادات الرئيسية لـ NetworkManager.
/etc/NetworkManager/conf.d/
ملفات إعدادات إضافية تُقرأ بعد الملف الرئيسي.
/run/NetworkManager/system-connections/
ملفات تعريف غير محفوظة على القرص (تختفي بعد إعادة التشغيل).
/etc/resolv.conf
إعدادات DNS. يكتبها NetworkManager.

نصائح للحفظ

  • تذكّر الترتيب: show ← modify ← up ← تحقّق.
  • الأمر nmcli con show NAME يعرض كل إعدادات ملف التعريف. ابحث فيها بـ | grep ipv4.
  • تهت بين الكلمات؟ اضغط Tab مرتين بعد أي كلمة، أو اكتب nmcli con mod NAME ipv4. ثم Tab.
  • صفحة man nmcli-examples فيها أمثلة كثيرة جاهزة.

الدليل الكامل

هذه الصفحة تشرح الأمر بكلمات بسيطة. الدليل الأصلي فيه كل التفاصيل.

في الطرفية: man nmcli