Блог "Дети ОИТа"
/поиск

Перевод существующего соединения на DHCP через `nmcli`

> [!INFO] Применимость > **ALT Linux 10.4–11.x** · **NetworkManager** · локальная работа через CLI/TTY > Изменяется только конфигурация **IPv4**. Настройки IPv6 не затрагиваются.

[!INFO] Применимость
ALT Linux 10.4–11.x · NetworkManager · локальная работа через CLI/TTY
Изменяется только конфигурация IPv4. Настройки IPv6 не затрагиваются.

Оглавление

  • [[#Исходные условия|Исходные условия]]
  • [[#Найти интерфейс и профиль|Найти интерфейс и профиль]]
  • [[#Сохранить резервную копию|Сохранить резервную копию]]
  • [[#Перевести профиль на DHCP|Перевести профиль на DHCP]]
  • [[#Применить настройки|Применить настройки]]
  • [[#Проверить результат|Проверить результат]]
  • [[#Откатить изменения|Откатить изменения]]
  • [[#Типовые проблемы|Типовые проблемы]]

Исходные условия

На ПК уже существует профиль NetworkManager со статическими параметрами IPv4.

Необходимо получать по DHCP (Dynamic Host Configuration Protocol):

  • IPv4-адрес и маску;
  • шлюз по умолчанию;
  • DNS-серверы;
  • маршруты, передаваемые DHCP-сервером.

Предупреждение

При переключении интерфейс кратковременно потеряет сеть. Работу выполнять с локальной консоли.

Найти интерфейс и профиль

nmcli -f DEVICE,TYPE,STATE,CONNECTION device status

Пример:

DEVICE  TYPE      STATE      CONNECTION
enp1s0  ethernet  connected  Проводное соединение 1

Подставить найденные значения:

IFACE="enp1s0"
PROFILE="Проводное соединение 1"

Проверить текущие параметры:

nmcli -f \
ipv4.method,ipv4.addresses,ipv4.gateway,ipv4.dns,ipv4.dns-search,ipv4.routes \
connection show "$PROFILE"

Сохранить резервную копию

BACKUP="${PROFILE}-static-backup-$(date +%Y%m%d-%H%M%S)"

sudo nmcli connection clone "$PROFILE" "$BACKUP"
sudo nmcli connection modify "$BACKUP" connection.autoconnect no

Проверить наличие копии:

nmcli -f NAME,TYPE,DEVICE,AUTOCONNECT connection show

Перевести профиль на DHCP

sudo nmcli connection modify "$PROFILE" \
  ipv4.method auto \
  ipv4.addresses "" \
  ipv4.gateway "" \
  ipv4.dns "" \
  ipv4.dns-search "" \
  ipv4.routes "" \
  ipv4.ignore-auto-dns no \
  ipv4.ignore-auto-routes no \
  ipv4.never-default no \
  ipv4.may-fail no

Команда удаляет сохранённые статические параметры IPv4 и разрешает принимать адрес, шлюз, DNS и маршруты от DHCP-сервера.

Применить настройки

sudo nmcli connection down "$PROFILE"
sudo nmcli connection up "$PROFILE" ifname "$IFACE"

Успешное подключение завершается сообщением:

Connection successfully activated

Проверить результат

Проверить параметры профиля

nmcli -f \
ipv4.method,ipv4.addresses,ipv4.gateway,ipv4.dns,ipv4.routes,ipv4.ignore-auto-dns \
connection show "$PROFILE"

Ожидаемые ключевые значения:

ipv4.method:            auto
ipv4.addresses:         --
ipv4.gateway:           --
ipv4.dns:               --
ipv4.routes:            --
ipv4.ignore-auto-dns:   no

Примечание

Это сохранённые параметры профиля. Полученные по DHCP значения проверяются на самом интерфейсе.

Проверить полученные параметры DHCP

nmcli -f \
GENERAL.STATE,GENERAL.CONNECTION,IP4.ADDRESS,IP4.GATEWAY,IP4.DNS,IP4.ROUTE \
device show "$IFACE"

Дополнительно:

ip -4 address show dev "$IFACE"
ip -4 route

Должны присутствовать:

  • IPv4-адрес рабочей сети;
  • маршрут до локальной подсети;
  • маршрут по умолчанию через полученный шлюз;
  • DNS-серверы.

Адрес вида 169.254.x.x не является нормальным DHCP-адресом рабочей сети.

Проверить связь

ping -c 3 <IP-адрес_шлюза>
getent hosts <имя_доменного_ресурса>

Откатить изменения

Отключить изменённый профиль:

sudo nmcli connection down "$PROFILE"
sudo nmcli connection modify "$PROFILE" connection.autoconnect no

Вернуть резервную копию:

sudo nmcli connection modify "$BACKUP" connection.autoconnect yes
sudo nmcli connection up "$BACKUP" ifname "$IFACE"

Проверить восстановленные параметры:

nmcli -f \
GENERAL.CONNECTION,IP4.ADDRESS,IP4.GATEWAY,IP4.DNS,IP4.ROUTE \
device show "$IFACE"

Типовые проблемы

Симптом Проверка
IPv4-адрес не получен Проверить кабель, линк, VLAN и доступность DHCP-сервера
Получен адрес 169.254.x.x DHCP-сервер не ответил; проверить сетевой сегмент
Остался старый статический адрес Проверить имя изменённого профиля и повторно активировать его
Адрес получен, шлюза нет Проверить параметры DHCP-сервера и ipv4.never-default no
DNS не получен Проверить ipv4.ignore-auto-dns no и параметры DHCP-сервера
Активировался другой профиль Проверить nmcli connection show --active и приоритет автоподключения