Перейти к содержанию

Статический IPv4-адрес: пошаговая настройка

Статический адрес нужен, когда IP сервера должен оставаться неизменным: например, для внутренней базы данных, VPN-шлюза или сервера с фиксированной маршрутизацией. В НАЙС.ОС CLOUD это делается не через netplan или nmcli, а через файл .network службы systemd-networkd.

Не меняйте управляющий интерфейс без обратного доступа

Если работаете по SSH, используйте консоль виртуальной машины или согласованное окно обслуживания. Новая конфигурация может удалить текущую DHCP-аренду и маршрут до завершения сеанса. Примеры ниже не являются командами для безусловного выполнения на удалённом сервере.

Предположения примера

Параметр Иллюстративное значение
Интерфейс ens3
Адрес сервера 192.0.2.10/24
Шлюз 192.0.2.1
DNS 192.0.2.53
Домен поиска example.test

Адреса 192.0.2.0/24 зарезервированы для документации, они не предназначены для непосредственного использования в вашей сети. Подставьте реальные адреса из вашего плана адресации.

Шаг 1. Зафиксируйте текущее состояние

ip -br addr
ip -4 route
networkctl status ens3
resolvectl status ens3
sudo ls -la /etc/systemd/network

Сохраните прежние профили и вывод в защищённом каталоге (локально и/или в системе резервного копирования). Например:

sudo mkdir -p /root/network-backup
sudo cp -a /etc/systemd/network \
  /root/network-backup/network-before-static

Если каталог назначения уже существует, сначала проверьте его содержимое и выберите уникальное имя резервной копии.

Шаг 2. Определите владельца конфигурации

networkctl status ens3 должен показывать конфигурацию, управляющую интерфейсом. Если интерфейс настраивается cloud-init — сперва изучите соответствующее руководство и политику источника облачной конфигурации.

Шаг 3. Создайте .network

Файл /etc/systemd/network/10-ens3.network:

[Match]
Name=ens3

[Network]
Address=192.0.2.10/24
Gateway=192.0.2.1
DNS=192.0.2.53
Domains=example.test
DHCP=no

Вместо Gateway= допустимо описывать статические маршруты отдельными секциями [Route], если так требует схема сети. Для простого одного шлюза приведённая запись понятнее.

DNS и IP — разные настройки

Назначение IP не гарантирует работающий DNS. systemd-resolved должен быть доступен, а resolv.conf — правильно связан с действующим резолвером. Диагностика: resolvectl status и getent hosts.

Шаг 4. Примените настройки через консоль

sudo networkctl reload
sudo networkctl reconfigure ens3

reload перечитывает конфигурационные файлы, а reconfigure применяет конфигурацию интерфейса. Это не обязательно равнозначно полному перезапуску networkd. Если адрес и маршруты изменились не полностью, исследуйте журнал и решайте вопрос о повторной инициализации интерфейса через консоль; не выполняйте ip link set ens3 down на недоступном удалённом хосте.

Шаг 5. Проверьте каждый уровень

networkctl status ens3
ip -4 addr show dev ens3
ip -4 route
ip -4 route get 192.0.2.1
resolvectl status ens3
getent ahostsv4 niceos.ru

Последнюю проверку нужно интерпретировать с учётом исходящей политики iptables и наличия выхода в Интернет. В изолированном контуре проверяйте собственные DNS-имена и ресурсы.

Шаг 6. Убедитесь, что SSH действительно доступен

Откройте новое SSH-соединение с компьютера администратора. Не закрывайте старый сеанс до подтверждения нового. После перезагрузки убедитесь, что статические параметры сохранились.

Откат и восстановление

Через резервную консоль верните сохранённый профиль либо удалите ошибочный 10-ens3.network, если до изменения его не существовало:

# Ниже пример восстановления ранее сохранённой конфигурации.
# Выберите правильный исходный каталог после просмотра резервной копии.
sudo ls -la /root/network-backup/network-before-static

После восстановления файлов примените networkctl reload и networkctl reconfigure ens3, затем проверьте текущий адрес и маршруты. Не удаляйте все .network-файлы без оценки зависимостей.