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

Назначение статического IPv4-адреса через `nmcli`

> [!Применимость] > **ALT Linux:** 10.4–11.x · **Доступ:** локальный терминал · **Инструмент:** NetworkManager / `nmcli` ## Оглавление - [[#Исходные данные|Исходные данные]] - [[#Настройка|Настройка

[!Применимость]
ALT Linux: 10.4–11.x · Доступ: локальный терминал · Инструмент: NetworkManager / nmcli

Оглавление

  • [[#Исходные данные|Исходные данные]]
  • [[#Настройка|Настройка]]
  • [[#Проверка|Проверка]]
  • [[#Откат|Откат]]
  • [[#Типовые ошибки|Типовые ошибки]]

Исходные данные

Параметр Значение
IP-адрес 10.0.0.112/24
Шлюз 10.0.0.1
DNS 10.1.1.1, 10.2.2.2

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

Перед применением убедиться, что 10.0.0.112 выделен этому ПК или свободен.

Настройка

1. Проверить NetworkManager

systemctl is-active NetworkManager network systemd-networkd

Продолжать только если активен NetworkManager. Если активен network или systemd-networkd, остановиться.

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

nmcli -f DEVICE,TYPE,STATE,CONNECTION device status
nmcli -f NAME,TYPE,DEVICE connection show

Указать найденные значения:

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

Проверить физический линк:

nmcli -g WIRED-PROPERTIES.CARRIER device show "$IFACE"

Ожидается on.

3. Проверить IP на конфликт

При наличии arping:

sudo arping -D -I "$IFACE" -c 3 10.0.0.112

Если получен ответ от другого устройства, адрес занят.

4. Изменить существующий профиль

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

BACKUP="${PROFILE}-backup-$(date +%Y%m%d-%H%M%S)"
sudo nmcli connection clone "$PROFILE" "$BACKUP"
sudo nmcli connection modify "$BACKUP" connection.autoconnect no

Задать параметры:

sudo nmcli connection modify "$PROFILE" \
  connection.interface-name "$IFACE" \
  connection.autoconnect yes \
  ipv4.method manual \
  ipv4.addresses "10.0.0.112/24" \
  ipv4.gateway "10.0.0.1" \
  ipv4.dns "10.1.1.1 10.2.2.2" \
  ipv4.routes "" \
  ipv4.never-default no \
  ipv4.may-fail no

Перейти к [[#Применить профиль|применению профиля]].

5. Создать профиль, если его нет

PROFILE="static-$IFACE"

sudo nmcli connection add \
  type ethernet \
  ifname "$IFACE" \
  con-name "$PROFILE" \
  connection.autoconnect yes \
  ipv4.method manual \
  ipv4.addresses "10.0.0.112/24" \
  ipv4.gateway "10.0.0.1" \
  ipv4.dns "10.1.1.1 10.2.2.2" \
  ipv4.never-default no \
  ipv4.may-fail no

Применить профиль

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

Проверка

nmcli -f GENERAL.STATE,GENERAL.CONNECTION,IP4.ADDRESS,IP4.GATEWAY,IP4.DNS device show "$IFACE"
ip -4 address show dev "$IFACE"
ip -4 route
ping -c 4 10.0.0.1

Проверить DNS (Domain Name System) по известному доменному имени:

getent hosts <доменное_имя>

Постоянные параметры профиля:

nmcli -f connection.autoconnect,ipv4.method,ipv4.addresses,ipv4.gateway,ipv4.dns connection show "$PROFILE"

Изменения сохраняются после перезагрузки.

Откат

Изменялся существующий профиль

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

Создавался новый профиль

sudo nmcli connection down "$PROFILE"
sudo nmcli connection delete "$PROFILE"

Типовые ошибки

Ошибка Проверка
NetworkManager is not running Проверить активный сетевой менеджер.
WIRED-PROPERTIES.CARRIER: off Проверить кабель и порт коммутатора.
unknown connection Выполнить nmcli connection show.
No suitable device found Проверить переменную IFACE.
Not authorized Использовать sudo или оболочку root.