Как отключить менеджер сети навсегда?

18

Я использую Ubuntu 18.04.1 LTS. Я хочу отключить сетевой менеджер на машине с Ubuntu, потому что (1) он мне не нужен, (2) я предпочитаю иметь жестко запрограммированную конфигурацию, и (3) сетевой менеджер регулярно вызывает проблемы, меняя конфигурацию DHCP.

Я пытался следовать официальной документации :

Остановить сетевой менеджер

sudo systemctl stop NetworkManager.service

Отключить сетевой менеджер (навсегда), чтобы избежать его перезапуска после перезагрузки

sudo systemctl disable NetworkManager.service

Несмотря на это, сетевой менеджер возвращается снова каждый раз, когда я перезагружаю машину.

Как я могу заставить его уйти?

Арсений Мурзенко
источник
1
Есть ли причина, по которой вы не можете просто удалить NM?
user535733
Что вы хотите использовать вместо NetworkManager - netplan как на сервере ?
Nrrbert
@ user535733: я не знал, что сетевой менеджер можно удалить. Я проверю это.
Арсений Мурзенко
2
@ N0rbert: просто жестко запрограммированная конфигурация в / etc / network / interfaces и в /etc/resolv.conf. Не знаю, есть ли официальное название для этого.
Арсений Мурзенко
@ArseniMourzenko Какая у вас среда рабочего стола? Если это GNOME, то очистка сетевого менеджера удалит gnome-control-center, который является неотъемлемой частью GNOME.
Nrrbert

Ответы:

20

Метод зависит от среды рабочего стола:

  • Для Ubuntu MATE 18.04.1 LTS продувка network-managerбезопасна. Вы можете просто запустить:

    sudo apt-get purge network-manager
    
  • Для Ubuntu 18.04.1 LTS с GNOME для рабочего промывочного network-managerпакет также будет очищать ubuntu-desktopи gnome-control-center(существенная часть рабочего стола GNOME). Так что это не вариант.

    Здесь вы должны отключить сервис NetworkManager (как вы уже сделали):

    sudo systemctl stop NetworkManager.service
    sudo systemctl disable NetworkManager.service
    

    и еще три услуги:

    sudo systemctl stop NetworkManager-wait-online.service
    sudo systemctl disable NetworkManager-wait-online.service
    
    sudo systemctl stop NetworkManager-dispatcher.service
    sudo systemctl disable NetworkManager-dispatcher.service
    
    sudo systemctl stop network-manager.service
    sudo systemctl disable network-manager.service
    

    и затем перезагрузите компьютер.


Примечания:

  1. Вы можете прочитать больше о конфигурации сети с /etc/network/interfacesот Ubuntu 16.04 LTS Руководство сервера .
  2. Современный сервер Ubuntu 18.04 LTS использует netplan, вы можете прочитать об этом в Руководстве сервера Ubuntu 18.04 LTS .
N0rbert
источник
Я всегда очищаю NetworkManager как один из моих первых шагов после установки - начиная с 14 лет. Возможно, эта проблема с удалением рабочего стола была ошибкой?
Стивен Бостон
Не ошибка, а проблема зависимости.
Норберт
Это было решено? Или есть разница между нашими репозиториями? У меня не было опыта, о котором вы сообщаете при чистке НМ. Я обнаружил, что некоторые приложения предполагают, что NM установлен и активен, но ни одно из них не было уникальным или необходимым.
Стивен Бостон
Для меня проблема сохраняется. Проверено на минимальной 18,04 LTS VM с sudo apt-get install ubuntu-desktop^последующим sudo apt-get purge network-manager.
Nrrbert
Как странно! У меня была ВМ 19.10, с которой я еще не играл, поэтому НМ все еще была установлена. Я очистил его, запустил обновление и обновление, и рабочий стол работает отлично. Я видел, что обновление думает об обновлении NM, но после перезагрузки он все еще не установлен.
Стивен Бостон
7

Попробуйте maskкоманду:

sudo systemctl stop NetworkManager.service
sudo systemctl mask NetworkManager.service

маска ИМЯ ...

Маска одного или нескольких единиц, как указано в командной строке. Это свяжет эти файлы модулей с / dev / null, что сделает невозможным их запуск.
Это более сильный вариант отключения, поскольку он запрещает все виды активации устройства, включая включение и ручную активацию. Используйте эту опцию с осторожностью. Это учитывает параметр --runtime, который временно маскирует только до следующей перезагрузки системы.
Опция --now может использоваться, чтобы гарантировать, что юниты также остановлены. Эта команда ожидает только допустимые имена модулей, она не принимает пути к файлам модулей.

abu_bua
источник