- Вопрос или проблема
- проверьте настройку по умолчанию
- Скажите менеджеру сети, что wlan0 должен быть неуправляемым
- Ответ или решение
- 1. Понимание проблемы
- 2. Отключение wpa_supplicant
- 3. Маскировка сервиса
- 4. Настройка NetworkManager
- 5. Отключение Wi-Fi
- 6. Проверка и перезагрузка
- 7. Разрешение на использование iwd
- Заключение
Вопрос или проблема
Я хотел отключить systemd
нежелательные попытки автоматически запускать wpa_supplicant
. Я думал, что смогу просто выполнить
sudo systemctl disable wpa_supplicant.service --global
и я больше не буду видеть wpa_supplicant
в выводе ps -ef
. В любом случае это не сработало.
Как сделать так, чтобы это сработало?
Моя проблема может быть лучше описана выводом команды
$>systemctl status wpa_supplicant*
● wpa_supplicant.service - WPA supplicant
Loaded: loaded (/usr/lib/systemd/system/wpa_supplicant.service; disabled; vendor preset: disabled)
Active: active (running) since Sun 2016-08-28 20:57:37 CEST; 14min ago
как вы можете видеть, disabled
служба в любом случае загружена и активна, благодаря тому, что systemd полностью помог мне сделать простую задачу 😉
Обновление
Похоже, мне повезло, попросту удалив эти файлы:
[email protected]
wpa_supplicant.service
[email protected]
[email protected]
из папки /usr/lib/systemd/system
. Угадайте, что? После перезагрузки wpa_supplicant
наконец не запускается системой systemd
. Однако меня удивляет, что должен был быть более мирный / консенсусный способ заставить systemd
не запускать данную службу.
sudo systemctl disable wpa_supplicant
+ sudo systemctl stop wpa_supplicant
ТОЛЬКО временно отключат сервис wpa_supplicant
до тех пор, пока менеджер сети перезапустится и/или система перезагрузится.
Таким образом, чтобы корректно и/или полностью отключить службу wpa_supplicant
от повторного запуска в будущем даже после того, как менеджер сети перезапустится и/или система перезагрузится, необходимо замаскировать службу, т.е.
systemctl mask wpa_supplicant.service
и т.д., как указано в этой статье. Это создаст символическую ссылку
/etc/systemd/system/wpa_supplicant.service → /dev/null
Надеюсь, это поможет.
Я столкнулся с той же проблемой. После некоторых поисков я нашел папку с названием:
/usr/share/dbus-1/system-services/fi.w1.wpa_supplicant1.service
Этот файл используется для того, чтобы позволить службе быть активируемой через d-bus. D-bus может активировать службу, даже если она отключена. Я подтвердил, что это происходит, переименовав файл, и затем перезагрузив систему. Я увидел, что на этом этапе wpa_supplicant
не был запущен! Чтобы разобраться с проблемой дальше, потребуется выяснить, какая программа активирует wpa_supplicant
через d-bus
. Я этого не сделал, так как маскировка юнит-файла работает хорошо для моих целей.
Все предыдущие ответы избыточны. Вы можете просто отключить использование wpa_supplicant
менеджером сети для управления клиентами wifi:
nmcli radio wifi off
После этого менеджер сети не будет пытаться управлять устройствами wifi в качестве клиентов. Теперь вы можете просто отключить/остановить службу wpa_supplicant
, не беспокоясь о том, что она будет запущена автоматически:
systemctl disable wpa_supplicant
systemctl stop wpa_supplicant
Обратите внимание, что менеджер сети может все еще управлять активным сетевым интерфейсом для соединения с wifi.
Чтобы остановить это, выполните nmcli c
, чтобы просмотреть интерфейсы, а затем:
nmcli c d wlan0
… для интерфейса wifi с именем wlan0
.
Я попробовал следовать совету BrettB, но это не оказало никакого влияния на мою систему. (Ubuntu 18.04.)
Тем не менее, следующее сработало:
sudo systemctl disable wpa_supplicant
На самом деле это не systemd
здесь причиняет неудобства, а NetworkManager
.
Вы можете сказать NetworkManager
игнорировать wlan0
.
В этой теме уже есть несколько хороших идей.
Я подумал, что добавлю то, что я делаю в этот список.
- Метод @GChuf – Заставить
NetworkManager
неудачно завершать работу, удалив файлы systemd. Удалите файлы, чтобыNetworkManager
кричал в пустоту. Я не уверен, сохранится ли этот метод после обновления пакетов. - Метод @Habibie – Заставить
NetworkManager
неудачно завершать работу, замаскировавwpa_supplicant
. Это заставляетNetworkManager
попробовать несколько раз, а затем сдаться. - Метод @ChalkTalk – Заставить
NetworkManager
неудачно завершать работу, выключив радиопередатчик. Похоже, он запускаетsystemd-rfkill.service
.
проверьте настройку по умолчанию
Настройка по умолчанию для NetworkManager
заключается в том, чтобы пытаться управлять всем, что можно захватить. NetworkManager
запускает wpa_supplicant
для управления интерфейсом WIFI wlan0
. Вот он в списке процессов.
[nick@rpi4 ~]$ ps -fC wpa_supplicant
UID PID PPID C STIME TTY TIME CMD
root 593 1 0 14:36 ? 00:00:00 /usr/sbin/wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -u -s
[nick@rpi4 ~]$
Wlan0 не подключается, а NetworkManager
продолжает пытаться.
Каждые несколько минут в журнале появляются такие сообщения.
[nick@rpi4 ~]$ journalctl -f
Mar 15 15:27:03 rpi4 NetworkManager[1526]: <info> [1615822023.9272] устройство (wlan0): set-hw-addr: установить MAC-адрес AA:9D:10:50:87:5B (сканирование)
Mar 15 15:27:03 rpi4 NetworkManager[1526]: <info> [1615822023.9359] устройство (wlan0): состояние интерфейса суппортера: отключено -> интерфейс_отключен
Mar 15 15:27:03 rpi4 NetworkManager[1526]: <info> [1615822023.9362] устройство (p2p-dev-wlan0): состояние управляющего интерфейса суппортера: отключено -> интерфейс_отключен
Mar 15 15:27:03 rpi4 NetworkManager[1526]: <info> [1615822023.9367] устройство (wlan0): состояние интерфейса суппортера: интерфейс_отключен -> неактивен
Mar 15 15:27:03 rpi4 NetworkManager[1526]: <info> [1615822023.9369] устройство (p2p-dev-wlan0): состояние управляющего интерфейса суппортера: интерфейс_отключен -> неактивен
Статус wlan0 – отключен.
[nick@rpi4 ~]$ nmcli device status
УСТРОЙСТВО ТИП СОСТОЯНИЕ СОЕДИНЕНИЕ
wlan0 wifi отключен --
Скажите менеджеру сети, что wlan0 должен быть неуправляемым
Отредактируйте конфигурацию менеджера сети и сообщите менеджеру сети игнорировать wlan0.
Остановите службы.
systemctl stop NetworkManager
systemctl stop wpa_supplicant
Добавьте эти строки в конец конфигурационного файла /etc/NetworkManager/NetworkManager.conf
.
Если вы хотите узнать, что такое unmanaged-devices, выполните man NetworkManager.conf
.
[keyfile]
unmanaged-devices=interface-name:wlan0
Затем выполните systemctl start NetworkManager
.
Состояние устройства меняется с отключенного на неуправляемый.
Процесс wpa_supplicant
не запускается снова, хотя он не замаскирован.
[nick@rpi4 ~]$ nmcli device status
УСТРОЙСТВО ТИП СОСТОЯНИЕ СОЕДИНЕНИЕ
wlan0 wifi неуправляемый --
...
[nick@rpi4 ~]$ ps -fC wpa_supplicant
UID PID PPID C STIME TTY TIME CMD
[nick@rpi4 ~]$
Как заставить systemd прекратить запуск нежелательной службы wpa_supplicant?
это тестировалось сегодня в RHEL-8.10
- если
nmcli g
показываетWIFI включен
, тогда чтобы сделать его отключенным, выполнитеnmcli radio all off
- если
ps aux | grep wpa
показывает работающий процессwpa_supplicant
в фоновом режиме… что является случаем, упомянутым в заголовке темы, тогда выполнитеsystemctl mask wpa_supplicant
, за которым последует перезагрузка и проверка его состояния как мертвого черезsystemctl status wpa_supplicant
, это остановит его. - дальнейшее действие, если вам нужно что-то подобное, чтобы спокойно спать ночью, может быть
rpm --erase --nodeps wpa_supplicant
, поскольку это удалит этот RPM-пакет и его исполняемые файлы из/sbin
, и, в основном, не сломает yum или систему полностью с множеством других удалений RPM-пакетов, которые являются зависимостями. И если возникнет проблема сNetworkManager
или каким-либо другим пакетом, вы можете просто исправить это с помощьюyum install wpa_supplicant
Сказать менеджеру сети, что wlan0 должен быть неуправляемым, как описано nickhardiman, кажется хорошим решением для полного отключения автоподключения для wlan0.
С другой стороны, хотя маскировка wpa_supplicant.service
похоже работает, это имеет свои недостатки: менеджер сети не будет знать о маскировке и будет продолжать пытаться управлять устройством.
Для справки, в моем случае я хотел использовать iwd
вместо wpa_supplicant
, что также требовало от менеджера сети воздерживаться от запуска wpa_supplicant
. Я сделал это, сообщив менеджеру сети, что iwd
должен использоваться в качестве бэкенда для wifi-сетей. Смотрите документацию Debian.
# /etc/NetworkManager/NetworkManager.conf
[device]
wifi.backend=iwd
Теперь перезапустите менеджер сети, чтобы применить новую конфигурацию, и отключите wpa_supplicant
.
sudo systemctl stop NetworkManager
sudo systemctl disable --now wpa_supplicant
sudo systemctl restart NetworkManager
Ответ или решение
Чтобы предотвратить автоматический запуск сервиса wpa_supplicant
в системе, использующей systemd
, необходимы определенные действия. Ниже представлено пошаговое руководство, которое поможет вам решить эту задачу.
1. Понимание проблемы
Проблема с автоматическим запуском wpa_supplicant
обычно связана с тем, как NetworkManager
управляет сетевыми интерфейсами. Даже если сервис wpa_supplicant
отключен, NetworkManager
может попытаться перезапустить его для управления беспроводными соединениями.
2. Отключение wpa_supplicant
Для начала можно попробовать отключить сервис с помощью следующей команды. Однако этот метод может быть временным, так как NetworkManager
может не осознавать отключение:
sudo systemctl disable wpa_supplicant
sudo systemctl stop wpa_supplicant
3. Маскировка сервиса
Рекомендуется выполнить маскировку сервиса, чтобы предотвратить его случайный запуск:
sudo systemctl mask wpa_supplicant.service
Маскировка создаст символическую ссылку на /dev/null
, эффективно блокируя любые попытки старта сервиса через systemd
. Чтобы подтвердить это, выполните команду:
systemctl status wpa_supplicant
В результате вы должны увидеть статус: masked.
4. Настройка NetworkManager
Для того чтобы NetworkManager
не пытался управлять вашим беспроводным интерфейсом (например, wlan0
), необходимо отредактировать конфигурацию NetworkManager
. Откройте файл /etc/NetworkManager/NetworkManager.conf
и добавьте следующие строки:
[device]
unmanaged-devices=interface-name:wlan0
Это сообщит NetworkManager
, что ваш интерфейс не нужно обрабатывать, что также снизит вероятность повторного запуска wpa_supplicant
.
5. Отключение Wi-Fi
Если ваша цель заключается в полном отключении Wi-Fi, вы можете выполнить следующую команду:
nmcli radio wifi off
Это отключит все радиопередатчики Wi-Fi, и wpa_supplicant
не будет активен.
6. Проверка и перезагрузка
После выполнения вышеуказанных действий перезагрузите систему:
sudo reboot
После перезагрузки выполните:
ps -ef | grep wpa_supplicant
Убедитесь, что wpa_supplicant
не запущен.
7. Разрешение на использование iwd
Если вам необходимо использовать другой менеджер Wi-Fi, например, iwd
, его можно активировать, изменив конфигурацию NetworkManager
:
[device]
wifi.backend=iwd
Не забудьте перезапустить NetworkManager
, чтобы ваши изменения вступили в силу:
sudo systemctl restart NetworkManager
Заключение
С помощью данного пошагового руководства вы сможете остановить автоматический запуск wpa_supplicant
и настроить управление беспроводными интерфейсами в вашей системе. Используйте рекомендации в зависимости от ваших целей, чтобы обеспечить эффективную работу сетевой конфигурации. Используйте эти методы для поддержания порядка в ваших системных службах.