Networkmanager (العربية)

ملاحظة
ترجمت هذه الصفحة
بتصرف
من المقالة اﻷصلية باللغة الإنجليزية.
NetworkManager
هو برنامج يوفر الكشف عن الشبكات وإعداد الاتصالات تلقائيًا.
يُفيد
NetworkManager
في الشبكات اللاسلكية والسلكية على حدٍّ سواء. في الشبكات اللاسلكية، يُفضّل NetworkManager الشبكات المعروفة مسبقًا، وبإمكانه التحويل إلى الشبكة الأكثر استقرارًا. يمكن للتطبيقات المدركة لـ NetworkManager التبديل بين وضعَي الاتصال وانقطاعه.
كما يُفضّل NetworkManager الاتصالات السلكية على اللاسلكية، ويدعم اتصالات المودم وأنواعًا معينة من الشبكات الافتراضية الخاصة (VPN).
تحذير
افتراضيًا، تكون كلمات السر — كلمات مرور Wi-Fi مثلًا — متاحةً للمستخدم الجذر (root) في نظام الملفات، وكذلك للمستخدمين الذين يمكنهم الوصول إلى الإعدادات عبر الواجهات الرسومية.  (كمثال
#nm-applet
). لمزيدٍ من المعلومات, تفقد
#Encrypted Wi-Fi passwords
.
التثبيت
يمكن
تثبيت
NetworkManager عبر الحزمة
networkmanager
، التي تحتوي على خادم خلفي، وواجهة سطر أوامر (
nmcli
)، وواجهة نصية قائمة على curses (
nmtui
).
تفعيل NetworkManager
بعد التثبيت، يجب
تشغيل وتفعيل
NetworkManager.service
. بمجرد تشغيل الخادم الخلفي لـ NetworkManager، سيتصل تلقائيًا بأي "اتصالات نظام" متاحة تم إعدادها مسبقًا. أما "اتصالات المستخدم" أو الاتصالات غير المُعدَّة فتتطلب استخدام
nmcli
أو أبلت للإعداد والاتصال.
ملاحظة
يجب أن تكون كل واجهةِ شبكةٍ تحت إدارة
عميل DHCP أو مدير شبكة
واحد فقط، لذا يُنصح بتشغيل عميل DHCP أو مدير شبكة واحد فقط على النظام. يمكن عرض قائمة الخدمات الجارية حاليًا باستخدام
systemctl --type=service
، ثم
إيقاف
أو إعادة إعداد الخدمات المتعارضة.
إن لم يكن
systemd-resolved
مُشغَّلًا
، ستبدأ رسائل خطأ بالتراكم في سجلاتك. راجع
#Unit dbus-org.freedesktop.resolve1.service not found
لمزيد من المعلومات.
واجهات إضافية
nm-connection-editor
لواجهة مستخدم رسومية،
network-manager-applet
لأبلت شريط النظام (راجع قسم
#nm-applet
).
دعم النطاق العريض المحمول
يستخدم NetworkManager برنامج
ModemManager
لدعم اتصالات النطاق العريض المحمول.
ثبِّت
modemmanager
و
usb_modeswitch
، ثم
فعِّل
ModemManager.service
وشغِّله
.
قد يكون من الضروري
إعادة تشغيل
NetworkManager.service
لكي يتعرف على ModemManager. بعد إعادة التشغيل، أعد توصيل المودم وسيتم التعرف عليه.
أضف الاتصالات من واجهة أمامية (مثل
nm-connection-editor
) واختر النطاق العريض المحمول نوعًا للاتصال. بعد اختيار مزود الخدمة (ISP) وخطة الاشتراك، ينبغي أن تُملَأ إعدادات
APN
وغيرها تلقائيًا باستخدام معلومات من
mobile-broadband-provider-info
.
دعم PPPoE / DSL
ثبِّت
حزمة
ppp
للحصول على دعم اتصالات PPPoE / DSL. لإضافة اتصال PPPoE فعليًا، استخدم
nm-connection-editor
وأضف اتصال DSL/PPPoE جديدًا.
دعم VPN
يتوفر في NetworkManager منذ الإصدار 1.16 دعم أصيل لـ
WireGuard
، ولا يحتاج إلا إلى وحدة النواة
wireguard
. اطلع على
مقالة مدونة WireGuard في NetworkManager
للتفاصيل.
يعتمد دعم أنواع VPN الأخرى على نظام الإضافات، وهي متوفرة في الحزم التالية:
networkmanager-openconnect
لـ
OpenConnect
networkmanager-openvpn
لـ
OpenVPN
networkmanager-pptp
لـ
PPTP Client
networkmanager-strongswan
لـ
strongSwan
networkmanager-vpnc
networkmanager-fortisslvpn
AUR
networkmanager-iodine-git
AUR
networkmanager-libreswan
AUR
networkmanager-l2tp
networkmanager-ssh
AUR
network-manager-sstp
تحذير
ثمة
أخطاء
كثيرة مرتبطة بدعم VPN. تحقق من صحة خيارات الخادم الخلفي المُعيَّنة عبر الواجهة الرسومية، وأعد التحقق مع كل إصدار جديد من الحزمة.
ملاحظة
لضمان عمل DNS بشكل صحيح عند استخدام VPN، يجب إعداد
التوجيه الشرطي
.
قد لا تمتلك هذه الإضافات واجهة سطر أوامر موثقة، أو قد لا تعمل أصلًا بدون تشغيل أبلت. لا يُشكّل هذا مشكلة في بيئات سطح المكتب المعتادة؛ أما إن لم تكن تستخدم إحداها، فيجب تشغيل
#nm-applet
أثناء إعداد الاتصال أو تنشيطه لتظهر مربعات الحوار اللازمة.
[١]
الاستخدام
يأتي NetworkManager مع
nmcli(1)
و
nmtui(1)
.
أمثلة على nmcli
عرض شبكات Wi-Fi القريبة:
$ nmcli device wifi list
الاتصال بشبكة Wi-Fi:
$ nmcli device wifi connect
SSID_or_BSSID
password
password
الاتصال بشبكة Wi-Fi مخفية:
$ nmcli device wifi connect
SSID_or_BSSID
password
password
hidden yes
الاتصال بشبكة Wi-Fi عبر الواجهة
wlan1
:
$ nmcli device wifi connect
SSID_or_BSSID
password
password
ifname wlan1
profile_name
قطع الاتصال بواجهة شبكة:
$ nmcli device disconnect ifname eth0
الحصول على قائمة الاتصالات مع أسمائها ومعرّفاتها UUID وأنواعها والأجهزة المرتبطة بها:
$ nmcli connection show
تنشيط اتصال (أي الاتصال بشبكة باستخدام ملف تعريف موجود):
$ nmcli connection up
name_or_uuid
حذف اتصال:
$ nmcli connection delete
name_or_uuid
عرض قائمة أجهزة الشبكة وحالتها:
$ nmcli device
إيقاف تشغيل Wi-Fi:
$ nmcli radio wifi off
تعديل اتصال
للاطلاع على قائمة شاملة بالإعدادات، راجع
nm-settings(5)
.
أولًا، احصل على قائمة الاتصالات:
$ nmcli connection
NAME                UUID                                  TYPE      DEVICE
Wired connection 2  e7054040-a421-3bef-965d-bb7d60b7cecf  ethernet  enp5s0
Wired connection 1  997f2782-f0fc-301d-bfba-15421a2735d8  ethernet  enp0s25
MY-HOME-WIFI-5G     92a0f7b3-2eba-49ab-a899-24d83978f308  wifi       --
يمكن استخدام العمود الأول كمعرّف للاتصال (connection-id) في الأوامر اللاحقة. في هذا المثال، نختار
Wired connection 2
معرّفًا للاتصال.
ثمة ثلاث طرق لإعداد الاتصال
Wired connection 2
بعد إنشائه:
محرر nmcli التفاعلي
nmcli connection edit 'Wired connection 2'
.
الاستخدام موثق بشكل جيد داخل المحرر.
واجهة سطر أوامر nmcli
nmcli connection modify 'Wired connection 2'
setting
.
property
value
. راجع
nmcli(1)
للاستخدام. على سبيل المثال، يمكن تغيير مقياس مسار IPv4 إلى 200 باستخدام الأمر
nmcli connection modify 'Wired connection 2' ipv4.route-metric 200
.
لإزالة إعداد ما، مرر حقلًا فارغًا ("") كما يلي:
nmcli connection modify 'Wired connection 2'
setting
.
property
""
ملف الاتصال
في
/etc/NetworkManager/system-connections/
، عدِّل ملف
Wired connection 2.nmconnection
المقابل.
لا تنسَ إعادة تحميل ملف الإعداد باستخدام
nmcli connection reload
.
nmtui
يتضمن NetworkManager واجهة مستخدم نصية (TUI) لإدارة الاتصالات واسم المضيف ومفاتيح الراديو. يمكن تشغيلها بتنفيذ
nmtui
.
الواجهات الأمامية
لتوفير التكامل مع
بيئة سطح المكتب
، سيرغب معظم المستخدمين في تثبيت أبلت. لا يوفر هذا الأبلت سهولة في اختيار الشبكات وإعدادها فحسب، بل يوفر أيضًا الوكيل الضروري لتخزين كلمات السر بأمان. تمتلك بيئات سطح المكتب المختلفة أبلتاتها الخاصة؛ وإلا يمكنك استخدام
#nm-applet
.
GNOME
تمتلك
GNOME
أداةً مدمجة يمكن الوصول إليها من إعدادات الشبكة.
KDE Plasma
ثبِّت
حزمة
plasma-nm
. بعد ذلك، أضفها إلى شريط مهام KDE عبر قائمة
خيارات اللوحة > إضافة أدوات > الشبكات
.
nm-applet
network-manager-applet
هو واجهة أمامية بـ GTK 3 تعمل في بيئات Xorg التي تدعم صينية النظام systray.
لتخزين كلمات سر الاتصالات، ثبِّت تطبيقًا يُطبِّق
واجهة D-Bus الخاصة بخدمة Secret Service
مثل
GNOME/Keyring
أو
KDE Wallet
أو
KeePassXC
وأعد إعداده.
انتبه إلى أنه عند تفعيل خيار
Make available to other users
لاتصال ما، يخزّن NetworkManager كلمة المرور بنص عادي، وإن كان الملف المقابل لا يمكن الوصول إليه إلا من قِبل الجذر (أو مستخدمين آخرين عبر
nm-applet
). راجع
#Encrypted Wi-Fi passwords
.
لتشغيل
nm-applet
بدون صينية نظام، يمكن استخدام
trayer
AUR
أو
stalonetray
. على سبيل المثال، يمكن إضافة سكريبت كهذا في مسارك:
nmgui
#!/bin/sh
nm-applet    2>&1 > /dev/null &
stalonetray  2>&1 > /dev/null
killall nm-applet
عند إغلاق نافذة
stalonetray
، يُغلَق
nm-applet
أيضًا، فلا يُستهلك ذاكرة إضافية بعد الانتهاء من إعدادات الشبكة.
يمكن للأبلت عرض إشعارات للأحداث كالاتصال بشبكة Wi-Fi أو قطع الاتصال عنها. لعرض هذه الإشعارات، تأكد من وجود خادم إشعارات مثبت - راجع
Desktop notifications
. إن استخدمت الأبلت بدون خادم إشعارات، قد تظهر بعض الرسائل في stdout/stderr وقد يتوقف الأبلت. راجع
[٢]
.
لتشغيل
nm-applet
مع تعطيل الإشعارات، شغّل الأبلت بالأمر التالي:
$ nm-applet --no-agent
Tip
قد يُشغَّل
nm-applet
تلقائيًا عبر
ملف autostart
؛ لإضافة الخيار
--no-agent
، عدِّل سطر Exec فيه كما يلي:
Exec=nm-applet --no-agent
Warning
في
i3
، إن شُغِّل nm-applet بالخيار
--no-agent
، لن يكون بالإمكان الاتصال بشبكة Wi-Fi مشفرة جديدة بالنقر على العنصر في القائمة، إذ لن تظهر نافذة إدخال كلمة المرور. سيُظهر
journal
الرسالة
no secrets: No agents were available for this request
.
Appindicator
اعتبارًا من الإصدار 1.18.0، أصبح دعم Appindicator
متاحًا
في حزمة
network-manager-applet
الرسمية. لاستخدام nm-applet في بيئة Appindicator، شغّل الأبلت بالأمر التالي:
$ nm-applet --indicator
networkmanager-dmenu
بديلًا لذلك، تتوفر
networkmanager-dmenu
وهي سكريبت صغير لإدارة اتصالات NetworkManager باستخدام
dmenu
أو
rofi
بدلًا من
nm-applet
. توفر جميع الميزات الأساسية: الاتصال بالشبكات السلكية واللاسلكية الموجودة، والاتصال بشبكات Wi-Fi جديدة، وطلب عبارة المرور عند الحاجة، والاتصال بشبكات VPN موجودة، وتفعيل/تعطيل الشبكة، وتشغيل واجهة
nm-connection-editor
الرسومية، والاتصال بشبكات Bluetooth.
switchboard
يوفر
switchboard
الخاص بـ Pantheon طريقة مستقلة عن بيئة سطح المكتب لإعداد NetworkManager عند دمجه مع
switchboard-plug-network
و
nm-connection-editor
. يمكن تشغيله بالأمر التالي:
$ io.elementary.settings
الإعداد
قد يحتاج NetworkManager إلى بعض الخطوات الإضافية ليعمل بشكل صحيح. تأكد من إعداد
/etc/hosts
كما هو موضح في قسم
Network configuration#Set the hostname
.
يمتلك NetworkManager ملف إعداد عام في
/etc/NetworkManager/NetworkManager.conf
. يمكن وضع ملفات إعداد إضافية في
/etc/NetworkManager/conf.d/
. في العادة، لا يلزم تغيير الإعدادات الافتراضية العامة.
بعد تعديل ملف إعداد، يمكن تطبيق التغييرات بتنفيذ:
# nmcli general reload
NetworkManager-wait-online
يؤدي تفعيل
NetworkManager.service
إلى تفعيل
NetworkManager-wait-online.service
أيضًا، وهي خدمة نظام تُنفَّذ مرة واحدة وتنتظر اكتمال إعداد الشبكة. تمتلك هذه الأخيرة
WantedBy=network-online.target
، لذا لن تكتمل إلا عند تفعيل
network-online.target
أو استدعائه من وحدة أخرى. راجع أيضًا
systemd#Running services after the network is up
.
افتراضيًا، تنتظر
NetworkManager-wait-online.service
اكتمال بدء تشغيل NetworkManager، لا توافر الاتصال بالشبكة تحديدًا (راجع
nm-online(1)
). إن أكملت
NetworkManager-wait-online.service
قبل أن تكون الشبكة جاهزة فعليًا مما أدى إلى فشل خدمات عند الإقلاع،
وسِّع الوحدة
لإزالة
-s
من سطر
ExecStart
:
[Service]
ExecStart=
ExecStart=/usr/bin/nm-online -q
انتبه إلى أن هذا قد يسبب
مشكلات أخرى
.
في بعض الحالات، ستفشل الخدمة في الإقلاع بسبب قِصَر مهلة الانتظار.
عدِّل
الخدمة لزيادة قيمة
NM_ONLINE_TIMEOUT
عن
60
.
إعداد صلاحيات PolicyKit
افتراضيًا، يُسمح لجميع المستخدمين في الجلسات المحلية النشطة بتغيير معظم إعدادات الشبكة دون كلمة مرور. راجع
General troubleshooting#Session permissions
للتحقق من نوع جلستك. في معظم الحالات، يعمل كل شيء تلقائيًا.
بعض الإجراءات (كتغيير اسم المضيف) تتطلب كلمة مرور المسؤول. في هذه الحالة، يجب
إضافة
نفسك إلى مجموعة
wheel
وتشغيل
وكيل مصادقة Polkit
الذي سيطلب كلمة مرورك.
للجلسات البعيدة (مثل
VNC بلا شاشة
)، ثمة عدة خيارات للحصول على الصلاحيات اللازمة لاستخدام NetworkManager:
أضف
نفسك إلى مجموعة
wheel
. ستحتاج إلى إدخال كلمة مرورك عند كل إجراء. لاحظ أن حسابك قد يُمنح صلاحيات أخرى أيضًا، كاستخدام
sudo
دون إدخال كلمة مرور الجذر.
أضف
نفسك إلى مجموعة
network
وأنشئ
/etc/polkit-1/rules.d/50-org.freedesktop.NetworkManager.rules
بالمحتوى التالي:
polkit.addRule(function(action, subject) {
  if (action.id.indexOf("org.freedesktop.NetworkManager.") == 0 && subject.isInGroup("network")) {
    return polkit.Result.YES;
  }
});
سيتمكن جميع المستخدمين في مجموعة
network
من إضافة الشبكات وإزالتها دون كلمة مرور (مما يعني عدم الحاجة إلى تشغيل وكيل مصادقة Polkit، فيعمل هذا الخيار في جلسات SSH أيضًا).
إعدادات الوكيل
يدعم NetworkManager بعض إعدادات الوكيل. وبينما لا يمكن تعديلها مباشرة عبر
nmtui
، يدعمها كل من
nm-applet
و
nmcli
.
راجع إعدادات الوكيل في
nm-settings-nmcli(5)
.
يمكن دائمًا تشغيل أوامر وكيل مخصصة باستخدام سكريبتات الموزِّع، راجع
#Dispatcher examples
.
راجع أيضًا
Proxy settings
.
فحص الاتصال
يمكن لـ NetworkManager محاولة الوصول إلى خادم ويب بعد الاتصال بشبكة لتحديد ما إذا كان خلف بوابة مقيّدة مثلًا. المضيف الافتراضي (المُعدَّ في
/usr/lib/NetworkManager/conf.d/20-connectivity.conf
) هو
ping.archlinux.org
(اسم CNAME مستعار لـ redirect.archlinux.org). لاستخدام خادم ويب مختلف أو تعطيل فحص الاتصال، أنشئ
/etc/NetworkManager/conf.d/20-connectivity.conf
، راجع
NetworkManager.conf(5) § CONNECTIVITY SECTION
. فيما يلي مثال على استخدام خوادم GNOME (لا يتطلب استخدام
GNOME
):
/etc/NetworkManager/conf.d/20-connectivity.conf
[connectivity]
uri=http://nmcheck.gnome.org/check_network_status.txt
لتعطيل فحص الاتصال في NetworkManager، استخدم الإعداد التالي. قد يكون هذا مفيدًا عند الاتصال بـ VPN يحجب فحوصات الاتصال.
/etc/NetworkManager/conf.d/20-connectivity.conf
[connectivity]
enabled=false
Note
على الرغم من أن فحوصات الاتصال التلقائية تُشكّل تسربًا محتملًا للخصوصية، فإن عنوان URL الافتراضي لـ Arch Linux لا يسجّل أي وصول. راجع
[٣]
[٤]
.
البوابات المقيّدة
This article or section needs language, wiki syntax or style improvements. See
Help:Style
for reference.
Reason:
Complex scripts should not be maintained on the wiki. (Discuss in
Talk:Networkmanager (العربية)
)
بالنسبة للمستخدمين خلف
بوابة مقيّدة
، قد يفتح مدير سطح المكتب نافذةً تلقائيًا تطلب بيانات الاعتماد. إن لم يفعل ذلك، يمكنك استخدام حزمة
capnet-assist
(إلا أن سكريبت الموزِّع الخاص بها مكسور حاليًا). بدلًا من ذلك، يمكنك إنشاء سكريبت موزِّع لـ NetworkManager بالمحتوى التالي:
/etc/NetworkManager/dispatcher.d/90-open_captive_portal
#!/bin/sh -e
# Script to dispatch NetworkManager events
#
# Runs shows a login webpage on walled garden networks.
# See NetworkManager(8) for further documentation of the dispatcher events.

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

if [ -x "/usr/bin/logger" ]; then
    logger="/usr/bin/logger -s -t captive-portal"
else
    logger=":"
fi

wait_for_process() {
    PNAME=$1
    while [ -z "$(/usr/bin/pgrep $PNAME)" ]; do
        sleep 3;
    done
}

start_browser() {
    local user="$1"
    local display="$2"

    export DISPLAY="$display"
    wait_for_process nm-applet

    export XAUTHORITY="/home/$user/.Xauthority"

    $logger "Running browser as '$user' with display '$display' to login in captive portal"
    sudo -u "$user" --preserve-env=DISPLAY,XAUTHORITY -H xdg-open http://capnet.elementary.io 2>&1 > /dev/null
}

case "$2" in
    connectivity-change)
    $logger -p user.debug "dispatcher script triggered on connectivity change: $CONNECTIVITY_STATE"
    if [ "$CONNECTIVITY_STATE" = "PORTAL" ]; then
        who | awk '$NF ~ /\(:[0-9]+\)/ { print $1 " " substr($NF, 2, length($NF)-2) };' | \
        while read user display; do
            start_browser $user $display || $logger -p user.err "Failed for user: '$user' display: '$display'"
        done
    fi
    ;;
    *)
    exit 0
    ;;
esac
اجعل السكريبت
قابلًا للتنفيذ
. لاحظ أن هذا السكريبت يفترض استخدامك لـ X ويفتح صفحة http فحسب، وقد لا يعمل مع الجميع.
ستحتاج إلى
إعادة تشغيل
NetworkManager.service
أو إعادة الإقلاع لبدء عمل السكريبت. بعد ذلك، سيفتح سكريبت الموزِّع نافذة تسجيل الدخول عند اكتشاف وجودك خلف بوابة مقيّدة.
حل بسيط هو
captive-portal-sh
— سكريبت shell يحصل على عنوان URL للبوابة المقيّدة ويفتحه في متصفحك الافتراضي (لمستخدمي Wayland فقط).
حل آخر هو
captive-browser-git
AUR
المعتمد على Google Chrome.
دعم iwd للبوابات المقيّدة على الأجهزة القديمة
بعض شرائح Wi-Fi القديمة (كـ Broadcom BCM4360) تتطلب مشغّل
wl
الخاص، الذي يفتقر إلى دعم مصافحة OWE/المنحنى الإهليجي التي تستخدمها كثير من نقاط الاتصال ذات البوابة المقيّدة. بتبديل خلفية Wi-Fi في NetworkManager إلى
iwd
(راجع
#Using iwd as the Wi-Fi backend
)، الذي يُطبِّق تبادل مفاتيح OWE الكامل في مستوى المستخدم عبر المشغّل الحالي، يمكنك إتمام الارتباط المشفر والحصول على تأجير DHCP وتفعيل حالة "PORTAL". بعد ذلك، سيفتح أي سكريبت موزِّع أو مشغّل متصفح صفحة تسجيل الدخول بشكل موثوق على الأجهزة التي لم تكن قادرة على الاتصال من قبل.
عميل DHCP
يستخدم NetworkManager افتراضيًا عميل DHCP الداخلي. يعتمد مكوّن DHCPv4 الداخلي على مكتبة
n-dhcp4 من nettools
، بينما يعتمد مكوّن DHCPv6 الداخلي على كود مشتق من systemd-networkd.
لاستخدام عميل DHCP مختلف،
ثبِّت
أحد البدائل:
dhcpcd
-
dhcpcd
dhclient
-
dhclient
لتغيير خلفية عميل DHCP، عيِّن الخيار
main.dhcp=
dhcp_client_name
في ملف إعداد ضمن
/etc/NetworkManager/conf.d/
. مثلًا:
/etc/NetworkManager/conf.d/dhcp-client.conf
[main]
dhcp=dhcpcd
Note
لا تُفعِّل وحدات systemd المرفقة مع حزمتَي
dhclient
و
dhcpcd
. ستتعارض مع NetworkManager، راجع الملاحظة في
قسم التثبيت
للتفاصيل.
إدارة DNS
إدارة DNS في NetworkManager موصوفة في صفحة ويكي مشروع GNOME—
Projects/NetworkManager/DNS
.
تخزين DNS مؤقتًا والتوجيه الشرطي
يمتلك NetworkManager مكوّنًا لتفعيل تخزين DNS مؤقتًا والتوجيه الشرطي (
كان يُسمى سابقًا
"split DNS" في توثيق NetworkManager) باستخدام
dnsmasq
أو
systemd-resolved
. تتمثل مزايا هذا الإعداد في تخزين استعلامات DNS مؤقتًا مما يُقلّل أوقات الحل، وتوجيه استعلامات DNS لمضيفي VPN إلى خوادم DNS الخاصة بذلك VPN. هذا مفيد بشكل خاص إن كنت متصلًا بأكثر من شبكة VPN واحدة.
Note
إن كان
/etc/resolv.conf
رابطًا رمزيًا إلى
/run/systemd/resolve/stub-resolv.conf
أو
/run/systemd/resolve/resolv.conf
أو
/lib/systemd/resolv.conf
أو
/usr/lib/systemd/resolv.conf
، سيختار NetworkManager systemd-resolved تلقائيًا. لاستخدام dnsmasq، يجب أولًا إزالة هذا الرابط الرمزي ثم إعادة تشغيل NetworkManager.
dnsmasq
تأكد من تثبيت
dnsmasq
. ثم عيِّن
main.dns=dnsmasq
في ملف إعداد ضمن
/etc/NetworkManager/conf.d/
:
/etc/NetworkManager/conf.d/dns.conf
[main]
dns=dnsmasq
الآن نفِّذ
nmcli general reload
كجذر. سيُشغِّل NetworkManager dnsmasq تلقائيًا ويضيف
127.0.0.1
إلى
/etc/resolv.conf
. يمكن إيجاد خوادم DNS الأصلية في
/run/NetworkManager/no-stub-resolv.conf
. يمكنك التحقق من استخدام dnsmasq بإجراء نفس استعلام DNS مرتين عبر
drill example.com
والتحقق من الخادم وأوقات الاستعلام.
Note
لا تحتاج إلى تشغيل
dnsmasq.service
أو تعديل
/etc/dnsmasq.conf
. سيشغّل NetworkManager dnsmasq دون استخدام خدمة systemd ودون قراءة ملفات الإعداد الافتراضية لـ dnsmasq.
ستستمع نسخة dnsmasq التي يشغّلها NetworkManager على
127.0.0.1:53
، ولا يمكن تشغيل أي برنامج آخر (بما في ذلك
dnsmasq.service
) على نفس العنوان والمنفذ.
إعداد dnsmasq مخصص
يمكن إنشاء إعدادات مخصصة لـ
dnsmasq
بإنشاء ملفات إعداد في
/etc/NetworkManager/dnsmasq.d/
. على سبيل المثال، لتغيير حجم ذاكرة التخزين المؤقت لـ DNS (المخزّنة في الذاكرة):
/etc/NetworkManager/dnsmasq.d/cache.conf
cache-size=1000
يمكن التحقق من صحة ملف الإعداد بـ:
$ dnsmasq --test --conf-file=/dev/null --conf-dir=/etc/NetworkManager/dnsmasq.d
راجع
dnsmasq(8)
لجميع الخيارات المتاحة.
IPv6
The factual accuracy of this article or section is disputed.
Reason:
This does not solve the issue because NetworkManager does not add
::1
to
/etc/resolv.conf
. Unless
@::1
is manually passed to drill, it will still fail with
Error: error sending query: No (valid) nameservers defined in the resolver
. (Discuss in
Talk:Networkmanager (العربية)
)
قد يتسبب تفعيل
dnsmasq
في NetworkManager في تعطّل استعلامات DNS الخاصة بـ IPv6 فقط (أي
drill -6 [hostname]
). لحل هذه المشكلة، يُعدُّ إنشاء الملف التالي لإعداد
dnsmasq
للاستماع على حلقة IPv6 الداخلية:
/etc/NetworkManager/dnsmasq.d/ipv6-listen.conf
listen-address=::1
علاوة على ذلك، لا يُعطي dnsmasq الأولوية لخوادم DNS الخاصة بـ IPv6. للأسف لا يعالج NetworkManager هذا (
خطأ Ubuntu
). حل مؤقت هو تعطيل DNS الخاص بـ IPv4 في إعداد NetworkManager إن وُجد.
DNSSEC
لن تتحقق نسخة dnsmasq التي يشغّلها NetworkManager من صحة
DNSSEC
افتراضيًا. لتفعيل التحقق من DNSSEC مما قد يُعطِّل حل DNS مع خوادم أسماء لا تدعمه، أنشئ ملف الإعداد التالي:
/etc/NetworkManager/dnsmasq.d/dnssec.conf
conf-file=/usr/share/dnsmasq/trust-anchors.conf
dnssec
systemd-resolved
This article or section needs expansion.
Reason:
NetworkManager 1.16 adds a new setting
main.systemd-resolved
[٥]
(enabled by default). It unconditionally sends DNS configuration to systemd-resolved. Related to "Preserving resolv.conf" from
systemd-resolved#DNS
? (Discuss in
Talk:Networkmanager (العربية)
)
يمكن لـ NetworkManager استخدام
systemd-resolved
كمحلِّل DNS وذاكرة تخزين مؤقت. تأكد من إعداد
systemd-resolved
بشكل صحيح وأن
systemd-resolved.service
مُشغَّل
قبل استخدامه.
سيُستخدم systemd-resolved تلقائيًا إن كان
/etc/resolv.conf
رابطًا رمزيًا
إلى
/run/systemd/resolve/stub-resolv.conf
أو
/run/systemd/resolve/resolv.conf
أو
/usr/lib/systemd/resolv.conf
.
يمكن تفعيله صراحةً بتعيين
main.dns=systemd-resolved
في ملف إعداد ضمن
/etc/NetworkManager/conf.d/
:
/etc/NetworkManager/conf.d/dns.conf
[main]
dns=systemd-resolved
محلِّل DNS مع مشترك openresolv
إن امتلك
openresolv
مشتركًا لـ
محلِّل DNS
المحلي، أعدَّ المشترك
وإعداد NetworkManager لاستخدام openresolv
.
نظرًا لأن NetworkManager يُعلن عن "واجهة" واحدة فقط لـ
resolvconf
، لا يمكن تطبيق التوجيه الشرطي بين اتصالين في NetworkManager. راجع
مشكلة NetworkManager 153
.
يمكن تخفيف هذا جزئيًا بتعيين
private_interfaces="*"
في
/etc/resolvconf.conf
[٦]
. لن تُوجَّه الاستعلامات الخاصة بالنطاقات غير الموجودة في قائمة نطاقات البحث، وستُعالَج وفق إعداد المحلِّل المحلي.
خوادم DNS مخصصة
تعيين خوادم DNS عامة مخصصة
لتعيين خوادم DNS لجميع الاتصالات، حدِّدها في
NetworkManager.conf(5)
باستخدام الصيغة
servers=
serveripaddress1
,
serveripaddress2
,
serveripaddress3
في قسم يُسمى
[global-dns-domain-*]
. مثلًا:
/etc/NetworkManager/conf.d/dns-servers.conf
[global-dns-domain-*]
servers=::1,127.0.0.1
Note
إن كنت تستخدم
مكوّن dnsmasq أو systemd-resolved في NetworkManager
أو
مشتركي openresolv
، فلا تحدد عناوين حلقة الاسترداد مع خيار
servers=
لأن ذلك قد يُعطِّل حل DNS.
لا تُرسَل الخوادم المحددة إلى
systemd-resolved
، وتُستخدم خوادم DNS الخاصة بالاتصال بدلًا منها. راجع
مشكلة NetworkManager 1366
و
مشكلة systemd 33754
.
تعيين خوادم DNS مخصصة في اتصال
تعيين خوادم DNS مخصصة في اتصال (واجهة رسومية)
يعتمد الإعداد على نوع الواجهة الأمامية المستخدمة؛ تتضمن العملية عادةً النقر بالزر الأيمن على الأبلت، وتعديل (أو إنشاء) ملف تعريف، ثم اختيار نوع DHCP كـ
تلقائي (تحديد عناوين)
. ستحتاج إلى إدخال عناوين DNS وتأخذ في العادة هذا الشكل:
127.0.0.1,
DNS-server-one
, ...
.
تعيين خوادم DNS مخصصة في اتصال (nmcli / ملف الاتصال)
لتعيين خوادم DNS لاتصال معين، عدِّل إعدادي
ipv4.dns
و
ipv6.dns
(وما يرتبط بهما من
dns-search
و
dns-options
) في
إعدادات الاتصال
.
إن كان
method
مضبوطًا على
auto
(عند استخدام DHCP/RA)، يجب تعيين
ignore-auto-dns
على
yes
.
لاستخدام DNS عبر TLS (
يتطلب systemd-resolved
)، حدِّد خوادم DNS باستخدام الصيغة
dns=
ip.address
#
servername
;
وعيِّن إعداد
connection.dns-over-tls
على
2
. على سبيل المثال، لاستخدام Quad9:
/etc/NetworkManager/system-connections/Example Wi-Fi.nmconnection
...
[connection]
...
dns-over-tls=2

[ipv4]
...
dns=9.9.9.9#dns.quad9.net;149.112.112.112#dns.quad9.net;
ignore-auto-dns=true

[ipv6]
...
dns=2620:fe::fe#dns.quad9.net;2620:fe::9#dns.quad9.net;
ignore-auto-dns=true
Note
يستخدم هذا المثال Quad9. استبدله بمحلِّل DNS تثق به. راجع
Domain name resolution#Third-party DNS services
.
/etc/resolv.conf
يُعدَّل وضع إدارة
/etc/resolv.conf
في NetworkManager بالإعداد
main.rc-manager
. تضبطه حزمة
networkmanager
على
symlink
بدلًا من الافتراضي الأصلي
auto
. الإعداد وقيمه موثقة في صفحة الدليل
NetworkManager.conf(5)
.
Tip
يتيح استخدام openresolv لـ NetworkManager التعايش مع برامج أخرى تدعم
resolvconf
، أو تشغيل محلِّل DNS محلي مع ذاكرة تخزين مؤقت وتوجيه شرطي تدعمه openresolv عبر
مشترك
. لاحظ أن التوجيه الشرطي
غير مدعوم بالكامل بعد
عند استخدام NetworkManager مع openresolv.
يوفر
NetworkManager
أيضًا خطّافات عبر سكريبتات الموزِّع لتعديل
/etc/resolv.conf
بعد تغييرات الشبكة. راجع
#Network services with NetworkManager dispatcher
و
NetworkManager(8)
لمزيد من المعلومات.
Note
إن كان NetworkManager مُعدًّا لاستخدام
dnsmasq
أو
systemd-resolved
، ستُكتب عناوين حلقة الاسترداد المناسبة في
/etc/resolv.conf
.
يمكن إيجاد ملف
resolv.conf
الذي يكتبه NetworkManager أو سيكتبه في
/run/NetworkManager/resolv.conf
.
يمكن إيجاد ملف
resolv.conf
المحتوي على خوادم الأسماء ونطاقات البحث المكتسبة في
/run/NetworkManager/no-stub-resolv.conf
.
/etc/resolv.conf غير مُدار
لإيقاف تعديل NetworkManager لـ
/etc/resolv.conf
، عيِّن
main.dns=none
في ملف إعداد ضمن
/etc/NetworkManager/conf.d/
:
/etc/NetworkManager/conf.d/dns.conf
[main]
dns=none
Tip
قد تُريد أيضًا تعيين
main.systemd-resolved=false
لمنع NetworkManager من إرسال إعداد DNS إلى
systemd-resolved
.
Note
راجع
#DNS caching and conditional forwarding
لإعداد NetworkManager باستخدام خلفيات DNS أخرى كـ
dnsmasq
وsystemd-resolved
بدلًا من
main.dns=none
.
بعد ذلك قد يكون
/etc/resolv.conf
رابطًا رمزيًا معطوبًا تحتاج إلى إزالته. ثم أنشئ ملف
/etc/resolv.conf
جديدًا.
استخدام openresolv
Note
لا يدعم NetworkManager استخدام واجهة
resolvconf
الخاصة بـ systemd-resolved (
resolvectl(1) § COMPATIBILITY WITH RESOLVCONF(8)
) التي توفرها
systemd-resolvconf
.
لا تعيِّن
main.rc-manager=resolvconf
عند استخدام
systemd-resolved
؛ بدلًا من ذلك تأكد من
إنشاء رابط /etc/resolv.conf الرمزي بشكل صحيح
أو
إعداد NetworkManager لاستخدام systemd-resolved صراحةً
.
تأكد من عدم تثبيت حزمة
systemd-resolvconf
عند عدم استخدام systemd-resolved. ما لم يُشغَّل
systemd-resolved.service
، ستُعطِّل جميع برامج الشبكات التي تستخدم resolvconf (ليس NetworkManager فحسب).
لإعداد NetworkManager لاستخدام
openresolv
، عيِّن
main.rc-manager=resolvconf
في ملف إعداد ضمن
/etc/NetworkManager/conf.d/
:
/etc/NetworkManager/conf.d/rc-manager.conf
[main]
rc-manager=resolvconf
جدار الحماية
يمكنك
تعيين منطقة firewalld
بناءً على اتصالك الحالي. مثلًا، جدار حماية مقيِّد في العمل وآخر أقل تقييدًا في المنزل.
يمكن تحقيق ذلك أيضًا باستخدام
موزِّع NetworkManager
.
خدمات الشبكة مع موزِّع NetworkManager
ثمة خدمات شبكة عديدة لا تُريد تشغيلها حتى يرفع NetworkManager واجهةً. يمتلك NetworkManager القدرة على تشغيل خدمات عند الاتصال بشبكة وإيقافها عند قطع الاتصال (مثلًا عند استخدام
NFS
أو
SMB
أو
NTPd
).
لتفعيل هذه الميزة، يجب
تفعيل
NetworkManager-dispatcher.service
وتشغيله
.
بعد تشغيل الخدمة، يمكن إضافة سكريبتات إلى مجلد
/etc/NetworkManager/dispatcher.d
.
يجب أن تكون السكريبتات مملوكة لـ
root
، وإلا لن يُنفِّذها الموزِّع. لمزيد من الأمان، عيِّن ملكية المجموعة لـ root أيضًا:
# chown root:root /etc/NetworkManager/dispatcher.d/
10-script.sh
تأكد أن الملف
قابل للتنفيذ
.
تُنفَّذ السكريبتات بترتيب أبجدي عند الاتصال، وبترتيب أبجدي عكسي عند قطع الاتصال. لضمان ترتيب التنفيذ، يشيع استخدام أرقام قبل اسم السكريبت (مثل
10-portmap
أو
30-netfs
) لضمان تشغيل portmapper قبل محاولة تركيب NFS.
تستقبل السكريبتات الوسيطات التالية:
اسم الواجهة:
مثل
eth0
الإجراء:
up
،
down
،
vpn-up
،
vpn-down
، ... (راجع
NetworkManager-dispatcher(8)
للقائمة الكاملة)
Warning
إن اتصلت بشبكات عامة أو غير موثوقة، انتبه إلى الخدمات التي تُشغِّلها والخوادم التي تتوقع أن تكون متاحة. قد تُشكِّل ثغرة أمنية بتشغيل خدمات خاطئة عند الاتصال بشبكة عامة.
تجنّب مهلة الموزِّع
إن كان ما سبق يعمل، فهذا القسم غير ذي صلة. إلا أن ثمة مشكلة عامة تتعلق بتشغيل سكريبتات موزِّع تستغرق وقتًا أطول. كانت المهلة الداخلية ثلاث ثوانٍ فقط في البداية، وإن لم تكتمل السكريبت في الوقت المحدد أُنهيت. لاحقًا مُدِّدت المهلة إلى نحو 20 ثانية (راجع
متتبع الأخطاء
لمزيد من المعلومات). إن استمرت المهلة في التسبب بمشكلات، يمكن كحل مؤقت استخدام
ملف drop-in
لـ
NetworkManager-dispatcher.service
للبقاء نشطًا بعد الخروج:
/etc/systemd/system/NetworkManager-dispatcher.service.d/remain_after_exit.conf
[Service]
RemainAfterExit=yes
الآن شغِّل خدمة
NetworkManager-dispatcher
المعدَّلة وفعِّلها.
Warning
إضافة سطر
RemainAfterExit
ستمنع الموزِّع من الإغلاق. للأسف،
يجب
أن يُغلق الموزِّع قبل أن يتمكن من تشغيل سكريبتاتك مرة أخرى. مع هذا الإعداد لن يُغلق الموزِّع، مما يعني أن السكريبتات ستُنفَّذ مرة واحدة فقط لكل إقلاع. لذا لا تُضف هذا السطر إلا إذا كانت المهلة تُسبِّب مشكلة فعلية.
أمثلة على الموزِّع
ضبط المنطقة الزمنية تلقائيًا
أنشئ
سكريبت موزِّع لـ NetworkManager
واجعله
قابلًا للتنفيذ
:
/etc/NetworkManager/dispatcher.d/09-timezone
#!/bin/sh
case "$2" in
    up)
        timedatectl set-timezone "$(curl --fail https://ipapi.co/timezone)"
    ;;
esac
Tip
يمكن استخدام
connectivity-change
بدلًا من
up
لمنع تغيير المنطقة الزمنية عند الاتصال بشبكات VPN كـ
OpenConnect
.
بدلًا من ذلك، تضبط أداة
tzupdate
AUR
المنطقة الزمنية تلقائيًا بناءً على الموقع الجغرافي لعنوان IP.
تركيب مجلد بعيد باستخدام sshfs
نظرًا لتشغيل السكريبت في بيئة مقيّدة للغاية، يجب تصدير
SSH_AUTH_SOCK
للاتصال بوكيل SSH. راجع
هذه الرسالة
لمزيد من المعلومات. المثال أدناه يعمل مع
GNOME Keyring
وسيطلب كلمة المرور إن لم تكن محلولةً مسبقًا.
UUID
المراد مطابقته يمكن إيجاده بالأمر
nmcli connection status
أو
nmcli connection list
.
#!/bin/sh
USER='username'
REMOTE='user@host:/remote/path'
LOCAL='/local/path'

interface=$1 status=$2
if [ "$CONNECTION_UUID" = "
uuid
" ]; then
  case $status in
    up)
      SSH_AUTH_SOCK=$(find /tmp -maxdepth 1 -type s -user "$USER" -name 'ssh')
      export SSH_AUTH_SOCK
      su "$USER" -c "sshfs $REMOTE $LOCAL"
      ;;
    down)
      fusermount -u "$LOCAL"
      ;;
  esac
fi
تركيب مشاركات SMB
بعض مشاركات
SMB
متاحة فقط على شبكات أو مواقع معينة. يمكنك استخدام الموزِّع لتركيب مشاركات SMB المتاحة في موقعك الحالي فقط.
السكريبت التالي سيتحقق من الاتصال بشبكة محددة ويُركِّب المشاركات وفقًا لذلك:
/etc/NetworkManager/dispatcher.d/30-mount-smb.sh
#!/bin/sh

if [ "$2" = "up" ]; then
  if [ "$CONNECTION_UUID" = "uuid" ]; then
    mount /your/mount/point & 
  fi
fi
السكريبت التالي سيفكّ تركيب جميع مشاركات SMB قبل قطع الاتصال ببرنامج من شبكة محددة:
/etc/NetworkManager/dispatcher.d/pre-down.d/30-umount-smb.sh
#!/bin/sh

if [ "$CONNECTION_UUID" = "uuid" ]; then
  umount -a -l -t cifs
fi
Note
تأكد من وضع هذا السكريبت في المجلد الفرعي
pre-down.d
كما هو موضح، وإلا سيفكّ تركيب جميع المشاركات عند أي تغيير في حالة الاتصال.
السكريبت التالي سيحاول فكّ تركيب جميع مشاركات SMB بعد قطع الاتصال غير المتوقع بشبكة محددة:
/etc/NetworkManager/dispatcher.d/40-umount-smb.sh
#!/bin/sh

if [ "$CONNECTION_UUID" = "uuid" ]; then
  if [ "$2" = "down" ]; then
    umount -a -l -t cifs
  fi
fi
Note
منذ NetworkManager 0.9.8، لا تُنفَّذ أحداث
pre-down
و
down
عند الإغلاق أو إعادة التشغيل، راجع
هذا التقرير
لمزيد من المعلومات.
سكريبتات
umount
السابقة قد تظل تترك التطبيقات التي تصل فعليًا إلى نقطة التركيب في حالة "تعليق".
بديلًا لذلك، يمكن استخدام السكريبت الموضح في
NFS#Using a NetworkManager dispatcher
:
/etc/NetworkManager/dispatcher.d/30-smb.sh
#!/bin/sh

WANTED_CON_UUID="CHANGE-ME-NOW-9c7eff15-010a-4b1c-a786-9b4efa218ba9"

if [ "$CONNECTION_UUID" = "$WANTED_CON_UUID" ]; then
    case "$2" in
        "up")
            mount -a -t cifs
            ;;
        "down"|"pre-down"|"vpn-pre-down")
            umount -l -a -t cifs >/dev/null
            ;;
    esac
fi
Note
يتجاهل هذا السكريبت نقاط التركيب التي تحمل الخيار
noauto
؛ أزل هذا الخيار أو استخدم
auto
للسماح للموزِّع بإدارة هذه النقاط.
أنشئ رابطًا رمزيًا داخل
/etc/NetworkManager/dispatcher.d/pre-down/
لالتقاط أحداث
pre-down
:
# ln -s ../30-smb.sh /etc/NetworkManager/dispatcher.d/pre-down.d/30-smb.sh
تركيب مشاركات NFS
راجع
NFS#Using a NetworkManager dispatcher
.
استخدام الموزِّع للتبديل التلقائي بين Wi-Fi وكابل LAN
الفكرة هي تشغيل Wi-Fi فقط عند فصل كابل LAN (مثلًا عند فصل الحاسوب المحمول من قاعدة الإرساء)، وتعطيل Wi-Fi تلقائيًا عند توصيل كابل LAN مرة أخرى.
أنشئ سكريبت الموزِّع التالي
[٧]
، مع استبدال
Your_Ethernet_Interface
باسم واجهة Ethernet لديك.
Note
يمكن الحصول على قائمة الواجهات باستخدام
nmcli
(
nmcli d | grep ethernet
). تبدأ واجهات Ethernet بـ
en
أو
eth
، مثل
enp0s5
أو
eth0
.
تذكر جعل السكريبت
قابلًا للتنفيذ
. يمكن التحقق من عمله بـ
إعادة تشغيل
NetworkManager.service
وتنفيذ
ip a
والتحقق أن واجهة Wi-Fi في الحالة
DOWN
. إن واجهت سلوكًا غير متوقع، تحقق من
سجل
NetworkManager-dispatcher.service
.
/etc/NetworkManager/dispatcher.d/99-wifi-auto-toggle.sh
#!/bin/sh

LOG_PREFIX="WiFi Auto-Toggle"
ETHERNET_INTERFACE="
Your_Ethernet_Interface
"

if [ "$1" = "$ETHERNET_INTERFACE" ]; then
    case "$2" in
        up)
            echo "$LOG_PREFIX ethernet up"
            nmcli radio wifi off
            ;;
        down)
            echo "$LOG_PREFIX ethernet down"
            nmcli radio wifi on
            ;;
    esac
elif [ "$(nmcli -g GENERAL.STATE device show $ETHERNET_INTERFACE)" = "20 (unavailable)" ]; then
    echo "$LOG_PREFIX failsafe"
    nmcli radio wifi on
fi
Note
يوجد ضمان أمان لحالة كان فيها كابل LAN موصولًا عند آخر إغلاق ثم فُصل أثناء توقف الحاسوب. في هذه الحالة سيظل الراديو معطلًا عند الإقلاع، ومع فصل كابل LAN لن تكون لديك أي شبكة.
استخدام الموزِّع للاتصال بـ VPN بعد اتصال الشبكة
في هذا المثال نريد الاتصال تلقائيًا باتصال VPN مُعرَّف مسبقًا بعد الاتصال بشبكة Wi-Fi محددة.
The factual accuracy of this article or section is disputed.
Reason:
A scripting without
iwgetid
does work too and may be more reliable? (Discuss in
Talk:Networkmanager (العربية)#Fixes for automatic VPN dispatcher script
)
Note
يتطلب هذا السكريبت
wireless_tools
لاستخدام
iwgetid
.
/etc/NetworkManager/dispatcher.d/vpn-up
#!/bin/sh
VPN_NAME="name of VPN connection defined in NetworkManager"
ESSID="Wi-Fi network ESSID (not connection name)"

interface=$1 status=$2
case $status in
  up|vpn-down)
    if iwgetid | grep -qs ":\"$ESSID\""; then
      nmcli connection up id "$VPN_NAME"
    fi
    ;;
  down)
    if iwgetid | grep -qs ":\"$ESSID\""; then
      if nmcli connection show --active | grep "$VPN_NAME"; then
        nmcli connection down id "$VPN_NAME"
      fi
    fi
    ;;
esac
إن أردت محاولة الاتصال بـ VPN تلقائيًا لجميع شبكات Wi-Fi، يمكنك استخدام التعريف التالي لـ ESSID:
ESSID=$(iwgetid -r)
. تذكر ضبط صلاحيات السكريبت
وفقًا لذلك
.
قد تفشل محاولة الاتصال بالسكريبت أعلاه مع شكوى
NetworkManager-dispatcher.service
من 'no valid VPN secrets'، بسبب
طريقة تخزين أسرار VPN
. لحسن الحظ، ثمة خيارات مختلفة لمنح السكريبت الوصول إلى كلمة مرور VPN.
1: أحدها يتطلب تعديل ملف إعداد اتصال VPN لجعل NetworkManager يخزّن الأسرار بنفسه بدلًا من تخزينها داخل keyring
الذي لن يكون متاحًا لـ root
: افتح
/etc/NetworkManager/system-connections/
name of your VPN connection
.nmconnection
وغيِّر
password-flags
و
secret-flags
من
1
إلى
0
.
إن لم ينجح ذلك وحده، قد تحتاج إلى إنشاء
passwd-file
في مكان آمن بنفس الصلاحيات والملكية كسكريبت الموزِّع، يحتوي على:
/path/to/passwd-file
vpn.secrets.password:YOUR_PASSWORD
يجب تعديل السكريبت وفقًا لذلك للحصول على كلمة المرور من الملف:
/etc/NetworkManager/dispatcher.d/vpn-up
#!/bin/sh
VPN_NAME="name of VPN connection defined in NetworkManager"
ESSID="Wi-Fi network ESSID (not connection name)"

interface=$1 status=$2
case $status in
  up|vpn-down)
    if iwgetid | grep -qs ":\"$ESSID\""; then
      nmcli connection up id "$VPN_NAME" passwd-file /path/to/passwd-file
    fi
    ;;
  down)
    if iwgetid | grep -qs ":\"$ESSID\""; then
      if nmcli connection show --active | grep "$VPN_NAME"; then
        nmcli connection down id "$VPN_NAME"
      fi
    fi
    ;;
esac
2: بدلًا من ذلك، غيِّر
password-flags
وضع كلمة المرور مباشرة في ملف الإعداد بإضافة قسم
vpn-secrets
:
[vpn]
 ....
 password-flags=0

 [vpn-secrets]
 password=
your_password
Note
قد يكون من الضروري إعادة فتح محرر اتصال NetworkManager وحفظ أسرار/كلمات مرور VPN مرة أخرى.
استخدام الموزِّع لتعطيل IPv6 على اتصالات مزودي VPN
كثير من
مزودي VPN التجاريين
يدعمون IPv4 فقط، مما يعني أن كل حركة مرور IPv6 تتجاوز VPN وتجعله عديم الفائدة فعليًا. لتفادي ذلك، يمكن استخدام الموزِّع لتعطيل كل حركة مرور IPv6 طوال مدة اتصال VPN.
/etc/NetworkManager/dispatcher.d/10-vpn-ipv6
#!/bin/sh

case "$2" in
	vpn-up)
		echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6
		;;
	vpn-down)
		echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6
		;;
esac
Note
لا يعمل السكريبت أعلاه مع WireGuard إذ لا يُرسل NetworkManager أحداث
vpn-up/down
له. يجب بدلًا من ذلك الاعتماد على الأحداث العامة لواجهات WireGuard كما هو موضح في
[٨]
.
كبديل، يمكن استخدام الموزِّع لضبط وضع IPv6 للجهاز المستخدم من اتصال VPN مؤقتًا على
link-local
. لن يعمل هذا السكريبت إن وفّر أكثر من جهاز أو اتصال واحد اتصال IPv6، إلا أنه يمكن تعديله للتكرار على أجهزة متعددة.
/etc/NetworkManager/dispatcher.d/10-vpn-ipv6
#!/bin/sh

case "$2" in
	vpn-up)
		nmcli device modify "${DEVICE_IFACE}" ipv6.method link-local
		;;
	vpn-down)
		nmcli device reapply "${DEVICE_IFACE}"
		;;
esac
OpenNTPD
راجع
OpenNTPD#Using NetworkManager dispatcher
.
الضبط الديناميكي لخوادم NTP المستلمة عبر DHCP مع systemd-timesyncd
عند التنقل بين شبكات مختلفة (شبكة LAN في الشركة، Wi-Fi في المنزل، وشبكات أخرى متنوعة) قد ترغب في ضبط خوادم NTP التي يستخدمها timesyncd على تلك التي يوفرها DHCP. إلا أن NetworkManager بحد ذاته غير قادر على التواصل مع systemd-timesyncd لضبط خوادم NTP.
يمكن للموزِّع حل هذه المشكلة.
أنشئ
مجلد التراكب لإعداد systemd-timesyncd
/etc/systemd/timesyncd.conf.d
إن لم يكن موجودًا. داخل
/etc/NetworkManager/dispatcher.d
، ضع ما يلي:
/etc/NetworkManager/dispatcher.d/10-update-timesyncd
#!/bin/sh

[ -z "$CONNECTION_UUID" ] && exit 0
INTERFACE="$1"
ACTION="$2"

case $ACTION in
up | dhcp4-change | dhcp6-change)
	set -- ${DHCP6_DHCP6_NTP_SERVERS-} ${DHCP4_NTP_SERVERS-}
	servers=$*
	[ -n "$servers" ] || exit 0
	mkdir -p /etc/systemd/timesyncd.conf.d
	cat <<-THE_END >"/etc/systemd/timesyncd.conf.d/${CONNECTION_UUID}.conf"
		[Time]
		NTP=$servers
	THE_END
	systemctl restart systemd-timesyncd.service
	;;
down)
	rm -f "/etc/systemd/timesyncd.conf.d/${CONNECTION_UUID}.conf"
	systemctl restart systemd-timesyncd.service
	;;
esac
في كل مرة يُنشئ فيها NetworkManager اتصال شبكة جديد (
ACTION=up
) أو يتلقى تحديثًا لاتصال قائم (
ACTION=dhcp4-change
أو
ACTION=dhcp6-change
) وتحتوي بيانات الاتصال على معلومات حول خوادم NTP، يُكتب ملف إعداد تراكب خاص بالاتصال في
/etc/systemd/timesyncd.conf.d
. عند إيقاف الاتصال (
ACTION=down
) يُحذف ملف التراكب الخاص به. بعد كل تغيير في إعداد systemd-timesyncd تُعاد تشغيل الخدمة لأخذ الإعداد المحدَّث بعين الاعتبار.
Note
DHCP6_DHCP6_NTP_SERVERS
بـ DHCP6 مضاعفة هو اسم المتغير الصحيح كما تم التحقق منه بـ
printenv
اعتبارًا من NetworkManager 1.56.0-1
الاختبار
صُمِّمت أبلتات NetworkManager للتحميل عند تسجيل الدخول لذا لا يلزم في العادة أي إعداد إضافي لمعظم المستخدمين. إن كنت قد عطّلت إعدادات شبكتك السابقة وقطعت اتصالك بالشبكة، يمكنك الآن اختبار ما إذا كان NetworkManager سيعمل. الخطوة الأولى هي
تشغيل
NetworkManager.service
.
ستوفر بعض الأبلتات ملف
.desktop
لتحميل أبلت NetworkManager عبر قائمة التطبيقات. إن لم يكن كذلك، ستحتاج إلى اكتشاف الأمر المناسب أو تسجيل الخروج والدخول مجددًا لتشغيل الأبلت. بمجرد تشغيله، سيبدأ على الأرجح في استطلاع اتصالات الشبكة للإعداد التلقائي مع خادم DHCP.
لتشغيل أبلت GNOME في مديري النوافذ غير المتوافقين مع xdg كـ
awesome
:
nm-applet --sm-disable &
للعناوين الثابتة، ستحتاج إلى إعداد NetworkManager ليتعامل معها. تتضمن العملية عادةً النقر بالزر الأيمن على الأبلت واختيار شيء كـ "تعديل الاتصالات".
نصائح وحيل
كلمات مرور Wi-Fi المشفرة
افتراضيًا، يخزّن NetworkManager كلمات المرور بنص عادي في ملفات الاتصال في
/etc/NetworkManager/system-connections/
. لطباعة كلمات المرور المخزّنة، استخدم الأمر التالي:
# grep -r '^psk=' /etc/NetworkManager/system-connections/
كلمات المرور متاحة للمستخدم الجذر في نظام الملفات وللمستخدمين الذين يمكنهم الوصول إلى الإعدادات عبر الواجهة الرسومية (مثل
nm-applet
).
من الأفضل تخزين كلمات المرور بشكل مشفر في خزنة مفاتيح بدلًا من النص العادي. عيب ذلك أن الاتصالات يجب إعدادها لكل مستخدم على حدة.
لقراءة الخزنة والكتابة إليها، يجب توافر وكيل أسرار. يمكن أن يكون:
nmcli
مع الخيار
--ask
إحدى الواجهات الرسومية من
#Front-ends
إن لم يتوفر أي من هذين، ستفشل المصادقة بالخطأ
no secrets: No agents were available for this request.
استخدام GNOME Keyring
يجب أن يكون خادم الخزنة مُشغَّلًا ومفتوحة الخزنة لكي يعمل ما يلي.
علاوة على ذلك، يجب إعداد NetworkManager لعدم تخزين كلمة المرور لجميع المستخدمين. باستخدام
network-manager-applet
من GNOME، شغِّل
nm-connection-editor
من الطرفية، اختر اتصال شبكة، انقر
تعديل
، اختر تبويب
أمان Wi-Fi
وانقر على الأيقونة اليمنى لكلمة المرور ثم اختر
تخزين كلمة المرور لهذا المستخدم فقط
.
استخدام KDE Wallet
باستخدام
plasma-nm
من KDE، انقر على الأبلت، ثم انقر على أيقونة
الإعدادات
في أعلى اليمين، انقر على اتصال شبكة، وفي تبويب
الإعداد العام
، أزل علامة الاختيار عن
يمكن لجميع المستخدمين الاتصال بهذه الشبكة
. إن ظل الخيار مفعَّلًا، ستُخزَّن كلمات المرور بنص عادي حتى عند تشغيل خادم خزنة.
إن كان الخيار محددًا سابقًا وأزلت علامة الاختيار، قد تحتاج إلى استخدام خيار
reset
أولًا لإزالة كلمة المرور من الملف. بدلًا من ذلك، احذف الاتصال وأعد إعداده.
مشاركة الاتصال بالإنترنت عبر Wi-Fi
يمكنك مشاركة اتصالك بالإنترنت (مثلًا اتصال 3G أو سلكي) ببضع نقرات. لاحظ أن
جدار الحماية
قد يتعارض مع مشاركة الإنترنت.
ستحتاج إلى بطاقة Wi-Fi تدعم وضع AP، راجع
Software access point#Wi-Fi device must support AP mode
للتفاصيل.
ثبِّت
حزمة
dnsmasq
لتتمكن من مشاركة الاتصال فعليًا. لاحظ أن NetworkManager يشغّل نسخته الخاصة من
dnsmasq
كخادم DHCP بشكل مستقل عن
dnsmasq.service
. راجع
#dnsmasq
للتحذيرات.
أنشئ الاتصال المشترك:
انقر على الأبلت واختر
إنشاء شبكة لاسلكية جديدة
.
اتبع المعالج (اختر WPA2 أو أحدث، وتأكد من استخدام كلمة مرور لا تقل عن 8 أحرف، أي طول أقل سيفشل).
اختر إما
Hotspot
أو Ad-hoc كوضع Wi-Fi.
سيُحفظ الاتصال للاستخدام في المرات القادمة.
Note
لا يدعم Android الاتصال بشبكات Ad-hoc. لمشاركة اتصال مع Android، استخدم وضع البنية التحتية (أي اضبط وضع Wi-Fi على "Hotspot").
مشاركة الاتصال بالإنترنت عبر Ethernet
السيناريو: جهازك متصل بالإنترنت عبر Wi-Fi وتريد مشاركة الاتصال مع أجهزة أخرى عبر Ethernet.
المتطلبات:
ثبِّت
حزمتَي
dnsmasq
و
nm-connection-editor
لتتمكن من مشاركة الاتصال فعليًا. لاحظ أن NetworkManager يشغّل نسخته الخاصة من
dnsmasq
كخادم DHCP بشكل مستقل عن
dnsmasq.service
. راجع
#dnsmasq
للتحذيرات.
جهازك المتصل بالإنترنت والأجهزة الأخرى متصلة عبر كابل Ethernet مناسب (عادةً كابل crossover أو محوّل بينهما).
مشاركة الإنترنت غير محجوبة بـ
جدار حماية
.
الخطوات:
شغِّل
nm-connection-editor
من الطرفية.
أضف اتصال Ethernet جديدًا.
أعطه اسمًا واضحًا، مثل "إنترنت مشترك".
اذهب إلى "إعدادات IPv4".
في "الطريقة:"، اختر "مشاركة مع أجهزة أخرى".
احفظ.
الآن يجب أن يظهر "إنترنت مشترك" كخيار ضمن الاتصالات السلكية في NetworkManager.
التحقق من الاتصال بالشبكة داخل مهمة cron أو سكريبت
This article or section is out of date.
Reason:
nm-tool
was removed from NetworkManager for long time now
[٩]
.
nmcli
should be used instead. (Discuss in
Talk:Networkmanager (العربية)
)
بعض مهام
cron
تتطلب توافر الشبكة للنجاح. لتجنّب تشغيل هذه المهام عند انقطاع الشبكة، أضف اختبار
if
للشبكة يستعلم
nm-tool
الخاص بـ NetworkManager ويتحقق من حالة الشبكة. يَنجح الاختبار الموضح هنا إن كانت أي واجهة متصلة، ويفشل إن كانت جميعها غير متصلة.
if [ $(nm-tool|grep State|cut -f2 -d' ') == "connected" ]; then
    #Whatever you want to do if the network is online
else
    #Whatever you want to do if the network is offline
fi
الاتصال بشبكة تتطلب كلمة سر عند الإقلاع
افتراضيًا، لن يتصل NetworkManager تلقائيًا بشبكات تتطلب كلمة سر عند الإقلاع. يعود ذلك إلى أنه يربط هذه الاتصالات بالمستخدم الذي أنشأها افتراضيًا، ولا يتصل إلا بعد تسجيل دخوله. لتغيير ذلك:
انقر بالزر الأيمن على أيقونة
nm-applet
في لوحتك واختر "تعديل الاتصالات"، ثم افتح تبويب اللاسلكي.
اختر الاتصال المطلوب وانقر على "تعديل".
ضع علامة على "الاتصال تلقائيًا" و"متاح لجميع المستخدمين".
تأكد أيضًا من أنه في "أمان Wi-Fi"، محددٌ خيار "تخزين كلمة المرور لجميع المستخدمين (غير مشفرة)".
سجّل الخروج وأعد الدخول لإتمام العملية.
OpenConnect مع كلمة المرور في KWallet
بينما يمكنك إدخال كلتا القيمتين وقت الاتصال، تستطيع
plasma-nm
0.9.3.2-1 وما فوقها استرداد اسم مستخدم OpenConnect وكلمة مروره مباشرة من
KWallet
.
افتح "مدير KDE Wallet" وابحث عن اتصال OpenConnect VPN تحت "Network Management|Maps". انقر "عرض القيم" وأدخل بيانات اعتمادك في مفتاح "VpnSecrets" بهذا الشكل (استبدل
username
و
password
بالقيم الصحيحة):
form:main:username%SEP%
username
%SEP%form:main:password%SEP%
password
في المرة القادمة التي تتصل فيها، يجب أن يظهر اسم المستخدم وكلمة المرور تلقائيًا في مربع حوار "أسرار VPN".
تجاهل أجهزة معينة
في بعض الأحيان قد ترغب في جعل NetworkManager يتجاهل أجهزة معينة ولا يحاول إعداد عناوين ومسارات لها. يمكنك تجاهل الأجهزة بسرعة عبر MAC أو اسم الواجهة في
/etc/NetworkManager/conf.d/unmanaged.conf
:
[keyfile]
unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth0
بعد تعديل الملف، نفِّذ
nmcli general reload
كجذر. بعدها ستتمكن من إعداد الواجهات دون أن يُغيِّر NetworkManager ما ضبطته.
إعداد عشوائية عنوان MAC
This article or section is a candidate for merging with
NetworkManager/Privacy#MAC Randomization
.
Notes:
There is a dedicated sub-page for Privacy now. (Discuss in
Talk:Networkmanager (العربية)
)
Note
قد يكون تعطيل عشوائية عنوان MAC ضروريًا للحصول على اتصال مستقر
[١٠]
و/أو في الشبكات التي تقيّد الأجهزة بناءً على عنوان MAC أو لديها سعة شبكة محدودة.
يمكن استخدام عشوائية MAC لتعزيز الخصوصية بعدم الكشف عن عنوان MAC الفعلي للشبكة.
يدعم NetworkManager نوعين من عشوائية عنوان MAC: العشوائية أثناء الفحص وللاتصالات الشبكية. يمكن إعداد كلا الوضعين بتعديل
/etc/NetworkManager/NetworkManager.conf
أو بإنشاء ملف إعداد منفصل في
/etc/NetworkManager/conf.d/
وهو الموصى به.
عشوائية Wi-Fi أثناء الفحص مفعَّلة افتراضيًا، لكن يمكن تعطيلها بإضافة ما يلي:
/etc/NetworkManager/conf.d/wifi_rand_mac.conf
[device]
wifi.scan-rand-mac-address=no
تتضمن أهم الأوضاع
stable
و
random
. يولّد
stable
عنوان MAC عشوائيًا عند الاتصال بشبكة جديدة ويربطهما باستمرار، فتستخدم نفس العنوان في كل مرة. في المقابل، يولّد
random
عنوان MAC جديدًا في كل مرة. يمكن إعداد العشوائية بإضافة:
/etc/NetworkManager/conf.d/wifi_rand_mac.conf
[device-mac-randomization]
wifi.scan-rand-mac-address=yes

[connection-mac-randomization]
ethernet.cloned-mac-address=random
wifi.cloned-mac-address=stable
راجع
مقالة مدونة GNOME
لمزيد من التفاصيل.
إيقاف إرسال اسم المضيف
يُرسل NetworkManager افتراضيًا اسم المضيف إلى خادم DHCP.
لتعطيل إرسال اسم المضيف إلى خادم DHCP لجميع الاتصالات عالميًا، عيِّن الخيارين
ipv4.dhcp-send-hostname=0
و
ipv6.dhcp-send-hostname=0
في ملف إعداد ضمن
/etc/NetworkManager/conf.d/
:
/etc/NetworkManager/conf.d/dhcp-send-hostname.conf
[connection]
ipv4.dhcp-send-hostname=0
ipv6.dhcp-send-hostname=0
لتعطيل إرسال اسم المضيف لاتصال محدد (أو تفعيله إن كان معطلًا عالميًا)، أضف ما يلي إلى ملف اتصال الشبكة:
/etc/NetworkManager/system-connections/
your_connection_file
.nmconnection
...
[ipv4]
dhcp-send-hostname=false
...
[ipv6]
dhcp-send-hostname=false
...
Note
تُكرَّم هذه الخيارات فقط من قِبل
عميل DHCP الداخلي
الافتراضي. لحذف إرسال اسم المضيف عند استخدام NetworkManager مع dhcpcd، عدِّل
/etc/dhcpcd.conf
وأضف
anonymous
كآخر سطر.
تفعيل امتدادات خصوصية IPv6
راجع
IPv6#NetworkManager
.
إعداد DUID فريد لكل اتصال
DUID الخاص بـ DHCPv6 هو قيمة يستخدمها عميل DHCPv6 للتعريف عن نفسه لخوادم DHCPv6. يدعم NetworkManager 3 أنواع من DUID:
DUID-UUID (
RFC 6355
): مولَّد من معرف فريد عالميًا (UUID).
DUID-LL (
RFC 3315
): مولَّد من عنوان طبقة الرابط (عنوان MAC).
DUID-LLT (
RFC 3315
): مولَّد من عنوان طبقة الرابط مع طابع زمني.
إن كان عميل DHCP الداخلي لـ NetworkManager قيد الاستخدام (الافتراضي)، سيُعرِّف عن نفسه بـ DUID-UUID عالمي ودائم مولَّد من machine-id (
/etc/machine-id
). هذا يعني أن جميع الاتصالات تشترك في نفس UUID، وهو ما قد يُشكِّل انتهاكًا للخصوصية.
لحسن الحظ، يمكن لـ NetworkManager توفير DUIDs فريدة لكل اتصال. يمكن تفعيل ذلك بإضافة الإعداد التالي:
/etc/NetworkManager/conf.d/duid.conf
[connection]
ipv6.dhcp-duid=stable-uuid
تُدعم أيضًا قيم
stable-ll
و
stable-llt
.
العمل مع الاتصالات السلكية
افتراضيًا، يولّد NetworkManager ملف تعريف اتصال لكل اتصال ethernet سلكي يجده. يُسمّي الاتصال الأول "Wired connection 1". يمكن تجنّب توليد هذا الاتصال بإعداد
no-auto-default
(راجع
NetworkManager.conf(5)
)، أو بحذفه ببساطة. بعدها لن يولِّد NetworkManager اتصالًا لهذه الواجهة مرة أخرى.
يمكنك أيضًا تعديل الاتصال وحفظه أو حذفه، ثم تغيير الاسم كما تشاء. يمكن استخدام
nm-connection-editor
لهذه المهمة.
استخدام iwd كخلفية Wi-Fi
Note
لا تُفعِّل
iwd.service
أو تُعدِّل
iwd
يدويًا. سيُشغِّله NetworkManager ويديره بنفسه.
راجع
المشكلات الموجودة
قبل التبديل إلى
iwd
.
لتفعيل
خلفية iwd التجريبية
،
ثبِّت
iwd
أولًا ثم أنشئ ملف الإعداد التالي:
/etc/NetworkManager/conf.d/wifi_backend.conf
[device]
wifi.backend=iwd
بدلًا من ذلك، يمكن تثبيت
networkmanager-iwd
AUR
، وهي حزمة معدَّلة تعمل حصريًا مع
iwd
.
Note
قد تحتاج إلى
تحويل ملفات تعريف شبكة NetworkManager الموجودة
بعد التبديل إلى
iwd
.
التشغيل في مساحة شبكة منعزلة
إن أردت تشغيل NetworkManager داخل مساحة شبكة منعزلة (namespace)، أوقف الجهاز قبل نقله إلى المساحة المنعزلة:
$ ip link set dev
MY_DEVICE
down
$ ip link set dev
MY_DEVICE
netns
MY_NAMESPACE
$ ip netns exec
MY_NAMESPACE
NetworkManager
...
$ ip netns exec
MY_NAMESPACE
killall NetworkManager
وإلا سيفشل NetworkManager لاحقًا في تأسيس الاتصال مع خطأ
device is strictly unmanaged
.
الاتصال التلقائي بـ VPN
يمكن ضبط NetworkManager للاتصال تلقائيًا بـ VPN عند الاتصال بالإنترنت، على أساس كل شبكة على حدة. يمكن إضافة اتصال VPN في واجهة NetworkManager الأمامية لـ GNOME، لكن لجعله يتصل تلقائيًا يجب استخدام
nmcli
.
أولًا، تأكد من إتاحة اتصال VPN لجميع المستخدمين. في GNOME يتم ذلك بتحديد خانة تحت تبويب
details
. في تبويب
Identity
، في حقل كلمة المرور، انقر الأيقونة على اليمين واضبطها على
Store the password for all users
.
ثم ابحث عن UUID لاتصال VPN وأضفه إلى
connection.secondaries
لاتصال الإنترنت:
# UUID=$(nmcli --get-values connection.uuid connection show
name-of-VPN-connection
)
# nmcli connection modify
name-of-Internet-connection
connection.secondaries "$UUID"
عند إعادة تشغيل NetworkManager والاتصال باتصال الإنترنت المُعدَّ، يجب أن يتصل بـ VPN تلقائيًا.
استكشاف الأخطاء وإصلاحها
لا يظهر مربع إدخال كلمة المرور لشبكات Wi-Fi المحمية
عند محاولة الاتصال بشبكة Wi-Fi محمية، لا يظهر مربع حوار لإدخال كلمة المرور ولا يتم الاتصال. يحدث ذلك عند عدم تثبيت أي حزمة خزنة مفاتيح. الحل البسيط هو تثبيت
gnome-keyring
. إن أردت تخزين كلمات المرور بشكل مشفر، اتبع
GNOME Keyring
لإعداد
gnome-keyring-daemon
.
إدارة الشبكة معطلة
عند إغلاق NetworkManager مع بقاء ملف pid (الحالة)، ستظهر رسالة
Network management disabled
. إن حدث ذلك، احذف الملف يدويًا:
# rm /var/lib/NetworkManager/NetworkManager.state
مشكلات مع عميل DHCP الداخلي
إن واجهت مشكلات في الحصول على عنوان IP باستخدام عميل DHCP الداخلي، جرِّب استخدام عميل DHCP آخر، راجع
#DHCP client
. قد يحل هذا المشكلات في الشبكات اللاسلكية الكبيرة كـ eduroam.
مشكلات DHCP مع dhclient
إن واجهت مشكلات في الحصول على عنوان IP عبر DHCP، جرِّب إضافة ما يلي إلى
/etc/dhclient.conf
:
interface "eth0" {
   send dhcp-client-identifier 01:
aa:bb:cc:dd:ee:ff
;
 }
حيث
aa:bb:cc:dd:ee:ff
هو عنوان MAC لهذه البطاقة الشبكية. يمكن إيجاد عنوان MAC باستخدام الأمر
ip link show
interface
من حزمة
iproute2
.
عدم اكتشاف مودم 3G
راجع
Mobile broadband modem#NetworkManager
.
إيقاف تشغيل Wi-Fi على الحواسيب المحمولة
في بعض الأحيان لن يعمل NetworkManager عند تعطيل بطاقة Wi-Fi بمفتاح على الحاسوب المحمول ثم محاولة إعادة تفعيلها. غالبًا ما تكون المشكلة مع
rfkill
. للتحقق مما إذا كان المشغّل يُخبر
rfkill
بحالة البطاقة اللاسلكية، استخدم:
$ watch -n1 rfkill list all
إن ظل أحد المعرّفات محجوبًا بعد تشغيل البطاقة، يمكنك محاولة رفع الحجب يدويًا (حيث X هو رقم المعرّف من المخرج أعلاه):
# rfkill event unblock X
إعادات عنوان IP الثابت إلى DHCP
This article or section is out of date.
Reason:
This section is
added in 2010
and describes an ancient version of
nm-applet
. Is this still relevant in 2024? (Discuss in
Talk:Networkmanager (العربية)
)
بسبب خطأ غير محلول، عند تغيير الاتصالات الافتراضية إلى عنوان IP ثابت، قد لا يحفظ
nm-applet
التغيير بشكل صحيح ويعود إلى DHCP التلقائي.
للتحايل على هذه المشكلة، عدِّل الاتصال الافتراضي (مثل "Auto eth0") في
nm-applet
، وغيِّر اسم الاتصال (مثل "my eth0")، وأزل علامة الاختيار عن "متاح لجميع المستخدمين"، وغيِّر إعدادات عنوان IP الثابت كما تريد، ثم انقر
تطبيق
. سيحفظ هذا اتصالًا جديدًا بالاسم المُعطى.
بعد ذلك، تأكد من عدم الاتصال التلقائي للاتصال الافتراضي. لفعل ذلك، شغِّل
nm-connection-editor
(
ليس
كجذر). في محرر الاتصالات، عدِّل الاتصال الافتراضي (مثل "Auto eth0") وأزل علامة الاختيار عن "الاتصال تلقائيًا". انقر
تطبيق
وأغلق المحرر.
تعذّر تعديل الاتصالات كمستخدم عادي
راجع
#Set up PolicyKit permissions
.
نسيان شبكة Wi-Fi مخفية
نظرًا لعدم ظهور الشبكات المخفية في قائمة الاختيار في عرض اللاسلكي، لا يمكن نسيانها (إزالتها) عبر الواجهة الرسومية. يمكن حذفها بالأمر التالي:
# rm /etc/NetworkManager/system-connections/
SSID
.nmconnection
يعمل هذا لأي اتصال آخر أيضًا.
VPN لا يعمل في GNOME
عند إعداد اتصالات OpenConnect أو vpnc في NetworkManager أثناء استخدام GNOME، قد لا يظهر مربع الحوار أحيانًا ويظهر الخطأ التالي في
/var/log/errors.log
:
localhost NetworkManager[399]: <error> [1361719690.10506] [nm-vpn-connection.c:1405] get_secrets_cb(): Failed to request VPN secrets #3: (6) No agents were available for this request.
يحدث هذا لأن أبلت NetworkManager لـ GNOME يتوقع وجود سكريبتات الحوار في
/usr/lib/gnome-shell
، بينما تضعها حزم NetworkManager في
/usr/lib/networkmanager
.
كحل مؤقت، أنشئ الروابط الرمزية التالية:
لـ OpenConnect:
ln -s /usr/lib/nm-openconnect-auth-dialog /usr/lib/gnome-shell/
لـ VPNC (أي Cisco VPN):
ln -s /usr/lib/nm-vpnc-auth-dialog /usr/lib/gnome-shell/
تعذّر الاتصال بشبكات لاسلكية أوروبية مرئية
تأتي شرائح WLAN بـ
نطاق تنظيمي
افتراضي. إن كانت نقطة الوصول لا تعمل ضمن هذه الحدود، لن تتمكن من الاتصال بالشبكة. الحل بسيط:
ثبِّت
wireless-regdb
.
أزل التعليق عن رمز البلد الصحيح في
/etc/conf.d/wireless-regdom
.
أعد تشغيل النظام لأن الإعداد لا يُقرأ إلا عند الإقلاع.
الاتصال التلقائي بـ VPN عند الإقلاع لا يعمل
تحدث المشكلة عندما يحاول النظام (أي NetworkManager كمستخدم جذر) إنشاء اتصال VPN، لكن كلمة المرور غير متاحة لأنها مخزّنة في GNOME Keyring الخاص بمستخدم معين.
الحل هو الاحتفاظ بكلمة مرور VPN بنص عادي كما هو موضح في الخطوة (2.) من
#Use dispatcher to connect to a VPN after a network connection is established
.
اختناق systemd
بمرور الوقت يمكن أن تكبر ملفات السجل (
/var/log/journal
) كثيرًا، مما قد يُأثر تأثيرًا كبيرًا على أداء الإقلاع عند استخدام NetworkManager. راجع:
systemd#Boot time increasing over time
.
انقطاعات شبكة منتظمة وتأخر وفقدان حزم (Wi-Fi)
يُجري NetworkManager فحصًا كل دقيقتين.
بعض مشغّلات Wi-Fi تواجه مشكلات عند فحص نقاط الاتصال أثناء الاتصال. تتضمن الأعراض انقطاع VPN وإعادة اتصاله، وفقدان الحزم، وفشل تحميل صفحات الويب ثم نجاحها عند التحديث.
سيُشير تشغيل
journalctl -f
كجذر إلى حدوث ذلك، وستظهر رسائل كالتالية في السجلات بفترات منتظمة:
NetworkManager[410]: <info>  (wlp3s0): roamed from BSSID 00:14:48:11:20:CF (my-wifi-name) to (none) ((none))
إن لم يكن التجوال مهمًا، يمكن تعطيل سلوك الفحص الدوري بقفل BSSID لنقطة الوصول في ملف تعريف اتصال Wi-Fi.
تعذّر تشغيل Wi-Fi على حواسيب Lenovo المحمولة (IdeaPad، Legion، إلخ)
ثمة مشكلة في وحدة
ideapad_laptop
على بعض طرازات Lenovo بسبب إبلاغ مشغّل Wi-Fi خطأً عن حجب ناعم. لا تزال البطاقة قابلة للتحكم بـ
netctl
، لكن مديري الشبكات كـ NetworkManager يتعطلون. يمكن التحقق من المشكلة بفحص مخرج
rfkill list
بعد تبديل المفتاح الصلب ورؤية استمرار الحجب الناعم.
تفريغ
وحدة
ideapad_laptop
يجب أن يحل المشكلة. (
تحذير
: قد يُعطِّل هذا لوحة المفاتيح ولوحة اللمس على الحاسوب المحمول!).
اختفاء nm-applet في i3wm
إن كنت تستخدم
xfce4-notifyd.service
للإشعارات، يجب
تعديل
الوحدة وإضافة ما يلي:
/etc/systemd/user/xfce4-notifyd.service.d/display_env.conf
[Service]
Environment="DISPLAY=:0.0"
بعد إعادة تحميل الخدمات،
أعد تشغيل
xfce4-notifyd.service
. اخرج من i3 وأعد تشغيله وسيظهر الأبلت في الصينية.
الوحدة dbus-org.freedesktop.resolve1.service غير موجودة
إن لم يكن
systemd-resolved.service
مُشغَّلًا، سيحاول NetworkManager تشغيله عبر D-Bus ويفشل:
dbus-daemon[991]: [system] Activating via systemd: service name='org.freedesktop.resolve1' unit='dbus-org.freedesktop.resolve1.service' requested by ':1.23' (uid=0 pid=1012 comm="/usr/bin/NetworkManager --no-daemon ")
dbus-daemon[991]: [system] Activation via systemd failed for unit 'dbus-org.freedesktop.resolve1.service': Unit dbus-org.freedesktop.resolve1.service not found.
يحدث هذا لأن NetworkManager سيحاول إرسال معلومات DNS إلى
systemd-resolved
بغض النظر عن إعداد
main.dns=
في
NetworkManager.conf(5)
.
يمكن تعطيل ذلك بملف إعداد في
/etc/NetworkManager/conf.d/
:
/etc/NetworkManager/conf.d/no-systemd-resolved.conf
[main]
systemd-resolved=false
راجع
FS#62138
.
الأسرار مطلوبة لكن لم تُوفَّر
إن تلقيت الخطأ التالي عند محاولة الاتصال بشبكة:
$ nmcli device wifi connect
SSID
password
password
Error: Connection activation failed: (7) Secrets were required, but not provided
قد يكون لهذا الخطأ أسباب عديدة، وينبغي قراءة
السجل
(مع فلترته بـ
-u NetworkManager
). على سبيل المثال، إن استغرق NetworkManager وقتًا طويلًا لتأسيس الاتصال، سيعتبر أن كلمة المرور خاطئة. يمكنك محاولة حذف ملف تعريف الاتصال وإنشاء جديد:
$ nmcli connection delete
SSID
$ nmcli device wifi connect
SSID
password
password
يمكنك أيضًا تجربة تعطيل عشوائية عنوان MAC:
/etc/NetworkManager/conf.d/wifi_rand_mac.conf
[device]
wifi.scan-rand-mac-address=no
اتصال WPA Enterprise مع iwd
إن حاولت الاتصال بشبكة WPA Enterprise كـ 'eduroam' مع NetworkManager باستخدام
خلفية iwd
، ستحصل على الخطأ التالي:
Connection 'eduroam' is not avialable on device wlan0 because profile is not compatible with device (802.1x connections must have IWD provisioning files)
يحدث هذا لأن NetworkManager لا يمكنه إعداد شبكة WPA Enterprise. لذا يجب إعدادها باستخدام ملف إعداد iwd
/var/lib/iwd/
essid
.8021x
كما هو موضح في
iwd#WPA Enterprise
.
فشل طلب أسرار VPN
إن حصلت على هذا الخطأ:
Failed to request VPN secrets #1: No agents were available for this request.
إما أن كلمة المرور فارغة أو يجب
إعداد صلاحيات PolicyKit
.
فشل اتصالات OpenVPN مع تحذير "secrets: failed to request VPN secrets"
This article or section is being considered for removal.
Reason:
This does not warrant a troubleshooting section. Optional dependencies are pointed out by pacman, if this is not clear enough it should be covered in
#VPN support
. (Discuss in
Talk:Networkmanager (العربية)#Remove unnecessary section 8.22
)
تتطلب حزمة
networkmanager-openvpn
وجود
libnma-gtk4
واختياريًا
libnma
(Gtk3) عند التكامل مع GNOME-Shell. إن كان
libnma
مطلوبًا وغير مثبَّت، ستُطبَع رسالة في سجل النظام:
NetworkManager[642]: <warn>  [...] vpn[..."name_of_vpn_profile VPN"]: secrets: failed to request VPN secrets #3: No agents were available for this request.
فشل اتصالات OpenVPN مع خطأ OpenSSL "ca md too weak"
منذ تحديث
openssl
إلى الإصدار 3، تُرفض الشهادات المولّدة بخوارزميات تشفير قديمة افتراضيًا. قد يؤدي استخدام
networkmanager-openvpn
مع إعداد كهذا إلى الخطأ التالي في السجلات:
nm-openvpn[14359]: OpenSSL: error:0A00018E:SSL routines::ca md too weak
nm-openvpn[14359]: Cannot load certificate file /home/archie/.local/share/networkmanagement/certificates/my_issued_cert.crt
nm-openvpn[14359]: Exiting due to fatal error
النهج الصحيح هو مطالبة مدير خادم OpenVPN بإصدار شهادات أكثر أمانًا. كحل مؤقت، يتطلب OpenVPN
tls-cipher "DEFAULT:@SECLEVEL=0"
. قد يتعذر ذلك عبر واجهة المكوّن الرسومية، لكنه ممكن مع
nmcli
. كما ستحتاج إلى تفعيل موفّر
legacy
في OpenSSL.
أولًا، احصل على اسم اتصال VPN المعني من مخرج:
$ nmcli connection show
بافتراض أن اسم الاتصال هو
vpn.example.com
، استخدم
nmcli
كما يلي:
$ nmcli connection modify vpn.example.com +vpn.data tls-cipher=DEFAULT:@SECLEVEL=0
بعد ذلك، عدِّل
/etc/ssl/openssl.cnf
كما هو موضح في
ويكي OpenSSL
.
أضف
legacy = legacy_sect
في نهاية قسم
[provider_sect]
. أزل التعليق عن
activate = 1
في
[default_sect]
. أخيرًا، أضف قسمًا جديدًا
[legacy_sect]
يحتوي أيضًا على
activate = 1
. النتيجة النهائية ستبدو كما يلي:
/etc/ssl/openssl.cnf
openssl_conf = openssl_init

[openssl_init]
providers = provider_sect

[provider_sect]
default = default_sect
legacy = legacy_sect

[default_sect]
activate = 1

[legacy_sect]
activate = 1
أخيرًا،
أعد تشغيل
NetworkManager.service
لتفعيل إعداد OpenSSL الجديد.
فشل مصادقة اتصالات WPA Enterprise مع خطأ OpenSSL "unsupported protocol"
منذ تحديث
openssl
إلى الإصدار 3، "تعمل SSL 3 وTLS 1.0 وTLS 1.1 وDTLS 1.0 فقط على مستوى الأمان 0"
افتراضيًا
. قد يؤدي محاولة المصادقة على شبكة Wi-Fi تدعم فقط معايير أقدم إلى الخطأ التالي في السجلات:
wpa_supplicant[3320]: SSL: SSL3 alert: write (local SSL3 detected an error):fatal:protocol version
wpa_supplicant[3320]: OpenSSL: openssl_handshake - SSL_connect error:0A000102:SSL routines::unsupported protocol
wpa_supplicant[3320]: wlp3s0: CTRL-EVENT-EAP-FAILURE EAP authentication failed
النهج الصحيح هو إقناع مدير المؤسسة بترقية بروتوكول النفق المشفر إلى TLS 1.3. كحل مؤقت، يمكن ضبط المستوى المستخدم من wpa_supplicant مباشرة كما هو موضح في
BBS#286417
. لتغيير الاتصال المتأثر فقط، يمكن تعيين
phase1-auth-flags=32
أو
phase1-auth-flags=64
في قسم
[802-1x]
من ملف إعداد الاتصال.
احصل أولًا على اسم اتصال Wi-Fi المعني:
$ nmcli connection show
بافتراض أن الاتصال يستخدم TLS 1.0 واسمه
Example Wi-Fi
:
$ nmcli connection modify 'Example Wi-Fi' 802-1x.phase1-auth-flags 32
ولاتصال TLS 1.1، اكتب "64" بدلًا من ذلك:
$ nmcli connection modify 'Example Wi-Fi' 802-1x.phase1-auth-flags 64
Note
الرقم الذي تكتبه يُشير إلى نتيجة رفع 2 للأس
n
، حيث
n
هو فهرس بت مصادقة الشبكة المقروء من اليمين إلى اليسار. تشغيل البت الخامس يُفعِّل TLS 1.0 [log(2) 32] والبت السادس يُفعِّل TLS 1.1 [log(2) 64].
أخيرًا،
أعد تشغيل
NetworkManager.service
لتفعيل الإعداد الجديد.
انظر أيضًا
NetworkManager للمسؤولين - الجزء الأول