Устранение конфликта сетевых менеджеров
> [!INFO] Применимость > **ALT Linux 10.4–11.x** · локальная работа через CLI/TTY > Цель: оставить **NetworkManager** единственным менеджером сети и управлять подключением через `nmcli`. > > `nmcli`
[!INFO] Применимость
ALT Linux 10.4–11.x · локальная работа через CLI/TTY
Цель: оставить NetworkManager единственным менеджером сети и управлять подключением черезnmcli.
nmcliне является отдельной службой. Это консольный клиент NetworkManager.
Оглавление
- [[#Порядок действий|Порядок действий]]
- [[#Обнаружить конфликт|Обнаружить конфликт]]
- [[#Зафиксировать рабочую конфигурацию|Зафиксировать рабочую конфигурацию]]
- [[#Определить источник настроек|Определить источник настроек]]
- [[#Создать native-профиль NetworkManager|Создать native-профиль NetworkManager]]
- [[#Переключить интерфейс на NetworkManager|Переключить интерфейс на NetworkManager]]
- [[#Отключить второй менеджер|Отключить второй менеджер]]
- [[#Убрать старые конфигурации интерфейса|Убрать старые конфигурации интерфейса]]
- [[#Проверить результат|Проверить результат]]
- [[#Откатить изменения|Откатить изменения]]
- [[#Типовые проблемы|Типовые проблемы]]
Порядок действий
- Найти интерфейс и конфликтующие службы.
- Сохранить текущие адреса, маршруты, DNS и конфигурационные файлы.
- Создать неактивный native-профиль NetworkManager.
- Остановить второй менеджер.
- Активировать профиль через
nmcli. - Проверить связь.
- Только после успешной проверки отключить автозапуск второго менеджера.
- Проверить систему после перезагрузки.
Осторожно
Работа выполняется с локальной консоли. Во время переключения сеть кратковременно пропадёт.
Обнаружить конфликт
Проверить службы
systemctl is-active NetworkManager
systemctl is-active network
systemctl is-active systemd-networkd
systemctl is-enabled NetworkManager
systemctl is-enabled network
systemctl is-enabled systemd-networkd
На клиентском ПК после исправления ожидается:
NetworkManager: active, enabled
network: inactive, disabled
systemd-networkd: inactive, disabled
Проверить интерфейсы
nmcli -f DEVICE,TYPE,STATE,CONNECTION device status
ip -br link
ip -br -4 address
ip -4 route
Проверить, видит ли интерфейс systemd-networkd:
networkctl list
Проверить процессы DHCP
ps -ef | grep -E '[d]hclient|[d]hcpcd|[u]dhcpc'
Отдельный DHCP-клиент может менять адреса и маршруты независимо от NetworkManager.
Проверить журналы
journalctl -b \
-u NetworkManager \
-u network \
-u systemd-networkd \
--no-pager
Признаки конфликта:
- адрес или маршрут появляется и затем исчезает;
- один интерфейс получает несколько адресов;
- меняется маршрут по умолчанию;
- NetworkManager показывает интерфейс как
unmanaged; - разные службы одновременно сообщают о настройке одного интерфейса.
Зафиксировать рабочую конфигурацию
Определить рабочий интерфейс:
ip -4 route show default
nmcli -f DEVICE,TYPE,STATE,CONNECTION device status
Подставить его имя:
IFACE="enp1s0"
Создать каталог резервной копии:
BACKUP="/root/network-backup-$(date +%Y%m%d-%H%M%S)"
sudo mkdir -p "$BACKUP"
sudo chmod 700 "$BACKUP"
Сохранить текущее состояние:
ip -d link show > "$BACKUP/ip-link.txt"
ip -4 address show > "$BACKUP/ip-address.txt"
ip -4 route show table all > "$BACKUP/ip-route.txt"
ip -4 rule show > "$BACKUP/ip-rule.txt"
nmcli general status > "$BACKUP/nm-general.txt" 2>&1
nmcli device show > "$BACKUP/nm-device.txt" 2>&1
nmcli connection show > "$BACKUP/nm-connections.txt" 2>&1
cp -a /etc/resolv.conf "$BACKUP/resolv.conf"
Скопировать конфигурации, если они существуют:
sudo cp -a /etc/NetworkManager "$BACKUP/" 2>/dev/null || true
sudo cp -a /etc/net "$BACKUP/" 2>/dev/null || true
sudo cp -a /etc/systemd/network "$BACKUP/systemd-network" 2>/dev/null || true
Сохранить параметры нужного интерфейса:
ip -4 address show dev "$IFACE"
ip -4 route show dev "$IFACE"
nmcli device show "$IFACE"
Перед продолжением зафиксировать:
Интерфейс:
Режим IPv4: DHCP или статический
IPv4-адрес и префикс:
Шлюз:
DNS:
Дополнительные маршруты:
Определить источник настроек
NetworkManager native
Профили находятся в:
/etc/NetworkManager/system-connections/
Проверка:
sudo ls -la /etc/NetworkManager/system-connections/
Etcnet
Настройки интерфейса находятся в:
/etc/net/ifaces/<интерфейс>/
Проверка:
sudo find "/etc/net/ifaces/$IFACE" -maxdepth 1 -type f -print 2>/dev/null
systemctl status network --no-pager
systemd-networkd
Настройки находятся в:
/etc/systemd/network/
Проверка:
sudo grep -RInE \
"Name=.*$IFACE|OriginalName=.*$IFACE|Interface=.*$IFACE" \
/etc/systemd/network 2>/dev/null
systemctl status systemd-networkd --no-pager
Проверить режим NetworkManager
sudo NetworkManager --print-config
В ALT Linux возможны:
- NetworkManager native — профили из
/etc/NetworkManager/system-connections/; - NetworkManager с etcnet — NetworkManager читает
/etc/net/ifaces/; - Etcnet — интерфейсом управляет
network.service; - systemd-networkd — интерфейсом управляет
systemd-networkd.service.
Примечание
Наличие файлов etcnet само по себе не доказывает конфликт. Конфликт подтверждается, когда две службы фактически настраивают один интерфейс.
Создать native-профиль NetworkManager
Создать новый профиль, не активируя его:
PROFILE="nm-native-$IFACE"
Вариант A. Текущая сеть работает через DHCP
sudo nmcli connection add \
type ethernet \
ifname "$IFACE" \
con-name "$PROFILE" \
connection.autoconnect no \
ipv4.method auto
Разрешить получение шлюза, DNS и маршрутов:
sudo nmcli connection modify "$PROFILE" \
ipv4.ignore-auto-dns no \
ipv4.ignore-auto-routes no \
ipv4.never-default no
Вариант B. Используется статическая конфигурация
Подставить сохранённые фактические значения:
ADDRESS="<IPv4-адрес/префикс>"
GATEWAY="<IPv4-шлюз>"
DNS="<DNS1> <DNS2>"
Создать профиль:
sudo nmcli connection add \
type ethernet \
ifname "$IFACE" \
con-name "$PROFILE" \
connection.autoconnect no \
ipv4.method manual \
ipv4.addresses "$ADDRESS" \
ipv4.gateway "$GATEWAY" \
ipv4.dns "$DNS"
Если шлюз отсутствует:
sudo nmcli connection modify "$PROFILE" \
ipv4.gateway "" \
ipv4.never-default yes
Добавить подтверждённые статические маршруты по одному:
sudo nmcli connection modify "$PROFILE" \
+ipv4.routes "<сеть/префикс> <шлюз>"
Проверить профиль до переключения
nmcli -f \
connection.id,connection.interface-name,connection.autoconnect,\
ipv4.method,ipv4.addresses,ipv4.gateway,ipv4.dns,ipv4.routes \
connection show "$PROFILE"
Переключить интерфейс на NetworkManager
1. Убедиться, что NetworkManager запущен
sudo systemctl enable NetworkManager
sudo systemctl start NetworkManager
2. Остановить подтверждённо конфликтующий менеджер
Etcnet
sudo systemctl stop network
systemd-networkd
sudo systemctl stop systemd-networkd
sudo systemctl stop systemd-networkd-wait-online 2>/dev/null || true
Останавливать только найденную конфликтующую службу.
3. Передать интерфейс NetworkManager
sudo nmcli device set "$IFACE" managed yes
Проверить:
nmcli -f DEVICE,TYPE,STATE,CONNECTION device status
4. Активировать подготовленный профиль
sudo nmcli connection up "$PROFILE" ifname "$IFACE"
Если профиль активирован успешно:
sudo nmcli connection modify "$PROFILE" connection.autoconnect yes
Отключить второй менеджер
Выполнять только после успешной проверки сети.
Etcnet
sudo systemctl disable network
Проверить:
systemctl is-active network
systemctl is-enabled network
systemd-networkd
sudo systemctl disable systemd-networkd
sudo systemctl disable systemd-networkd-wait-online 2>/dev/null || true
Проверить:
systemctl is-active systemd-networkd
systemctl is-enabled systemd-networkd
Предупреждение
Не отключать:
NetworkManager-wait-online;NetworkManager-dispatcher;wpa_supplicant;systemd-resolved;dbus.
Они не являются вторым менеджером сетевых интерфейсов.
Не удалять пакеты etcnet или systemd-networkd без отдельной необходимости. Для устранения конфликта достаточно отключить службу и убрать конфигурацию проблемного интерфейса.
Убрать старые конфигурации интерфейса
Выполнять только после успешной работы native-профиля.
Архивировать конфигурацию etcnet
if [ -d "/etc/net/ifaces/$IFACE" ]; then
sudo mv \
"/etc/net/ifaces/$IFACE" \
"/etc/net/ifaces/${IFACE}.disabled-$(date +%Y%m%d-%H%M%S)"
fi
Архивировать конфигурацию systemd-networkd
Сначала найти относящиеся к интерфейсу файлы:
sudo grep -RIlE \
"Name=.*$IFACE|OriginalName=.*$IFACE|Interface=.*$IFACE" \
/etc/systemd/network 2>/dev/null
Каждый подтверждённый файл переименовать:
sudo mv \
"/etc/systemd/network/<файл>" \
"/etc/systemd/network/<файл>.disabled"
Не перемещать неизвестные файлы, относящиеся к другим интерфейсам, VLAN, bridge или VPN.
Перезапустить NetworkManager:
sudo systemctl restart NetworkManager
sudo nmcli connection up "$PROFILE" ifname "$IFACE"
Проверить результат
Службы
systemctl is-active NetworkManager
systemctl is-active network
systemctl is-active systemd-networkd
systemctl is-enabled NetworkManager
systemctl is-enabled network
systemctl is-enabled systemd-networkd
Интерфейс и профиль
nmcli general status
nmcli -f DEVICE,TYPE,STATE,CONNECTION device status
nmcli connection show --active
Адреса и маршруты
ip -br -4 address
ip -4 route
ip -4 rule
Проверить, что:
- на интерфейсе нет неожиданных дублирующих адресов;
- присутствует только ожидаемый маршрут по умолчанию;
- маршрут не исчезает через несколько секунд;
- активен созданный native-профиль.
DNS и связь
cat /etc/resolv.conf
ping -c 3 <IP-адрес_шлюза>
getent hosts <имя_доменного_ресурса>
Журналы
journalctl -b \
-u NetworkManager \
-u network \
-u systemd-networkd \
--no-pager \
| tail -n 100
Проверка после перезагрузки
sudo reboot
После загрузки:
systemctl is-active NetworkManager
systemctl is-active network
systemctl is-active systemd-networkd
nmcli connection show --active
ip -br -4 address
ip -4 route
Откатить изменения
Использовать локальную консоль.
1. Отключить новый профиль
sudo nmcli connection down "$PROFILE"
sudo nmcli connection modify "$PROFILE" connection.autoconnect no
2. Вернуть старые конфигурационные файлы
Etcnet
Найти архив:
sudo find /etc/net/ifaces \
-maxdepth 1 \
-type d \
-name "${IFACE}.disabled-*"
Вернуть каталог:
sudo mv \
"/etc/net/ifaces/${IFACE}.disabled-<дата>" \
"/etc/net/ifaces/$IFACE"
systemd-networkd
sudo mv \
"/etc/systemd/network/<файл>.disabled" \
"/etc/systemd/network/<файл>"
3. Вернуть прежний менеджер
Etcnet
sudo systemctl enable --now network
systemd-networkd
sudo systemctl enable --now systemd-networkd
4. Проверить сеть
ip -br -4 address
ip -4 route
cat /etc/resolv.conf
Типовые проблемы
| Симптом | Проверка и действие |
|---|---|
Интерфейс остаётся unmanaged |
Проверить NetworkManager --print-config, правила unmanaged-devices и NM_UNMANAGED |
| После остановки второго менеджера адрес пропал | Активировать подготовленный профиль: nmcli con up "$PROFILE" |
| Появились два одинаковых адреса | Проверить, что второй менеджер действительно остановлен |
| Маршрут по умолчанию меняется | Проверить активные профили, DHCP-клиенты и метрики маршрутов |
NetworkManager показывает System <интерфейс> |
Вероятно, используется профиль etcnet, а не native-профиль |
| Новый профиль не активируется | Проверить интерфейс, carrier, адресный конфликт и журнал NetworkManager |
| После перезагрузки вернулся старый менеджер | Проверить is-enabled, systemd-unit и доменные политики |
| Работает IP, но не DNS | Проверить /etc/resolv.conf, DNS профиля и используемый DNS-компонент |
Остановлен systemd-networkd, но конфликт остаётся |
Проверить отдельные DHCP-клиенты и скрипты запуска |
NetworkManager и network.service активны, но интерфейсы разные |
Это не обязательно конфликт; проверять владельца конкретного интерфейса |