Настройка статического IP-адреса в Linux: шлюз, DNS и автозапуск интерфейса | AdminWiki

Настройка статического IP-адреса в Linux: шлюз, DNS и автозапуск интерфейса

09 сентября 2026 10 мин. чтения

Статический IPv4 в Linux задают четырьмя параметрами: IP-адресом, префиксом или маской подсети, шлюзом по умолчанию и DNS-серверами. Для разовой настройки используют команды ip и resolvectl. Чтобы конфигурация сохранилась после перезагрузки, параметры записывают в профиль NetworkManager, файл Netplan, /etc/network/interfaces или конфигурацию systemd-networkd.

Пример временной настройки интерфейса enp1s0:

sudo ip link set enp1s0 up
sudo ip addr add 192.168.1.50/24 dev enp1s0
sudo ip route replace default via 192.168.1.1 dev enp1s0
sudo resolvectl dns enp1s0 1.1.1.1 8.8.8.8

После выполнения команд проверьте адрес, маршрут, DNS и доступность шлюза. Для постоянной конфигурации сначала определите активный сетевой менеджер, затем используйте только его настройки. Одновременное управление интерфейсом через NetworkManager, Netplan, ifupdown и systemd-networkd часто приводит к конфликтам.

Комментарии

Статический адрес нужен серверу, когда к нему обращаются по известному IP: для SSH, веб-сервиса, хранилища, мониторинга, DNS, Kubernetes-узла или маршрутизатора. Адрес выбирают из подсети, которую обслуживает локальный шлюз.

  • IP-адрес: например, 192.168.1.50.
  • Префикс: /24, он соответствует маске 255.255.255.0.
  • Шлюз: например, 192.168.1.1. Через него система отправляет трафик в другие сети.
  • DNS: адреса серверов, которые преобразуют имена узлов в IP-адреса.
  • Автозапуск: настройка, которая поднимает интерфейс и применяет адрес после загрузки системы.

Перед изменением конфигурации сохраните текущие параметры:

ip -br addr
ip route
resolvectl status

При работе по SSH не выполняйте ip addr flush без доступа к консоли, KVM или панели управления сервером. Удаление текущего адреса сразу разорвёт соединение. Для общего обзора базовых команд и устройства Linux пригодится руководство по Linux для IT-специалистов.

Как выбрать свободный адрес

Адрес не должен совпадать с IP другого устройства и не должен выдаваться DHCP-сервером. Если маршрутизатор раздаёт адреса в диапазоне 192.168.1.100-192.168.1.200, для статической настройки обычно выбирают адрес вне этого диапазона, например 192.168.1.50. В корпоративной сети значение согласуют с администратором адресного пространства.

ПараметрПримерНазначение
Адрес192.168.1.50Идентификатор узла в локальной сети
Префикс/24Размер локальной подсети
Шлюз192.168.1.1Маршрут в другие сети
DNS1.1.1.1, 8.8.8.8Разрешение доменных имён

Журналируемые и нежурналируемые файловые системы

Сетевые параметры, заданные командой ip, хранятся только в памяти ядра. После перезагрузки адрес, маршрут и состояние интерфейса исчезают. Постоянная конфигурация должна находиться на файловой системе, которая монтируется во время загрузки.

Для этой задачи достаточно обычной корневой файловой системы с доступным для записи каталогом /etc. Журналируемые файловые системы, например ext4 и XFS, сохраняют изменения конфигурационных файлов надёжнее при штатной работе и помогают восстановить согласованное состояние после сбоя питания.

  • /etc обычно содержит постоянную конфигурацию системы.
  • /run обычно размещён в tmpfs и очищается после перезагрузки.
  • /sys/class/net показывает сетевые устройства, созданные ядром.
  • /proc/net содержит виртуальные сведения о сетевых подсистемах и маршрутизации.

Файл в /run может отражать текущую активную конфигурацию, но не заменяет постоянный профиль. Например, созданный вручную маршрут появится в выводе ip route, однако после перезапуска его не будет, если маршрут не записан в конфигурацию менеджера сети.

Файлы

Способ настройки зависит от дистрибутива и сетевого менеджера. Перед редактированием определите, какой компонент управляет интерфейсом:

systemctl is-active NetworkManager
systemctl is-active systemd-networkd
nmcli general status
networkctl list

Наиболее распространённые файлы имеют такие назначения:

  • /etc/NetworkManager/system-connections/, профили NetworkManager.
  • /etc/netplan/*.yaml, декларативные файлы Netplan в Ubuntu и некоторых производных системах.
  • /etc/network/interfaces, конфигурация ifupdown в Debian и совместимых системах.
  • /etc/systemd/network/*.network, профили systemd-networkd.
  • /etc/resolv.conf, текущий интерфейс настройки DNS, который часто создаётся автоматически.

Не редактируйте несколько таких файлов одновременно без понимания цепочки загрузки. Сначала сохраните резервную копию:

sudo cp -a /etc/resolv.conf /etc/resolv.conf.backup 2>/dev/null || true
sudo cp -a /etc/netplan /etc/netplan.backup 2>/dev/null || true
sudo cp -a /etc/network/interfaces /etc/network/interfaces.backup 2>/dev/null || true

NetworkManager и nmcli

NetworkManager удобно использовать на рабочих станциях, виртуальных машинах и серверах, где этот сервис уже включён. Команда ниже создаёт профиль со статическим IPv4 и автоподключением:

sudo nmcli connection add type ethernet ifname enp1s0 con-name lan-static ipv4.method manual ipv4.addresses 192.168.1.50/24 ipv4.gateway 192.168.1.1 ipv4.dns 1.1.1.1,8.8.8.8 connection.autoconnect yes
sudo nmcli connection up lan-static

Если профиль уже существует, измените его:

sudo nmcli connection modify lan-static ipv4.method manual ipv4.addresses 192.168.1.50/24 ipv4.gateway 192.168.1.1 ipv4.dns 1.1.1.1,8.8.8.8 connection.autoconnect yes
sudo nmcli connection up lan-static

Проверка профиля:

nmcli connection show lan-static
nmcli device show enp1s0
nmcli -f connection.autoconnect connection show lan-static

Параметр connection.autoconnect yes включает автозапуск профиля. Если на устройстве несколько профилей, задайте приоритет через connection.autoconnect-priority, чтобы система не выбрала DHCP-профиль вместо статического.

Netplan

Netplan хранит декларативное описание сети в YAML-файлах каталога /etc/netplan. Создайте файл, например /etc/netplan/01-static.yaml:

network:
  version: 2
  ethernets:
    enp1s0:
      dhcp4: false
      addresses:
        - 192.168.1.50/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses:
          - 1.1.1.1
          - 8.8.8.8
      optional: true

В YAML критичны отступы. Используйте пробелы, а не символы табуляции. Перед применением проверьте права и синтаксис:

sudo chmod 600 /etc/netplan/01-static.yaml
sudo netplan try

netplan try временно применяет конфигурацию и предлагает подтвердить её. Если соединение потеряно и подтверждение не получено, Netplan возвращает прежние параметры. После проверки можно применить настройки окончательно:

sudo netplan apply
ip -br addr show enp1s0
ip route

Поле optional: true не даёт загрузке системы долго ждать интерфейс, если линк временно отсутствует. Само включение интерфейса после загрузки выполняет выбранный Netplan backend.

ifupdown в Debian

Для ifupdown добавьте профиль в /etc/network/interfaces:

auto enp1s0
iface enp1s0 inet static
    address 192.168.1.50
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 1.1.1.1 8.8.8.8

Строка auto enp1s0 поднимает интерфейс во время загрузки. Параметр dns-nameservers работает через интеграцию с resolvconf или другим DNS-менеджером. Если такой компонент не установлен, задайте DNS через активный resolver.

sudo ifdown enp1s0
sudo ifup enp1s0

Команды ifdown и ifup опасно запускать по удалённому SSH-соединению: первая команда отключает интерфейс.

systemd-networkd

Создайте файл /etc/systemd/network/20-enp1s0.network:

[Match]
Name=enp1s0

[Network]
Address=192.168.1.50/24
Gateway=192.168.1.1
DNS=1.1.1.1
DNS=8.8.8.8

Включите службу и проверьте состояние:

sudo systemctl enable --now systemd-networkd
networkctl status enp1s0
ip route

NetworkManager и systemd-networkd не должны одновременно назначать адреса одному физическому интерфейсу. Перед переключением менеджера подготовьте консольный доступ и окно для восстановления подключения.

Устройства

Имя интерфейса не всегда выглядит как eth0. В системах с предсказуемыми именами встречаются enp1s0, ens18 и eno1. Виртуальные устройства могут называться lo, docker0, virbr0, veth... или br0.

ip -br link
ip -br addr
ls -l /sys/class/net

В выводе ip -br link состояние UP показывает административно включённый интерфейс. Наличие физического линка проверяют отдельно:

sudo ethtool enp1s0
cat /sys/class/net/enp1s0/carrier

Значение 1 в файле carrier обычно означает, что физическое соединение обнаружено. Если интерфейс выключен, включите его:

sudo ip link set dev enp1s0 up

Временное назначение адреса

Команда ip addr add добавляет адрес до следующей перезагрузки или до удаления адреса менеджером сети:

sudo ip addr add 192.168.1.50/24 dev enp1s0
ip addr show dev enp1s0

Для удаления конкретного адреса используйте:

sudo ip addr del 192.168.1.50/24 dev enp1s0

Если на интерфейсе остался старый DHCP-адрес, система может выбрать его как исходный. Проверяйте список адресов и удаляйте старый параметр только после подготовки нового маршрута.

Шлюз и таблица маршрутизации

Шлюз должен быть достижим через локальную подсеть. При адресе 192.168.1.50/24 шлюз 192.168.1.1 подходит, а адрес 192.168.2.1 требует другого маршрута или другого префикса.

sudo ip route replace default via 192.168.1.1 dev enp1s0
ip route get 1.1.1.1
ip route

Строка с default via показывает маршрут по умолчанию. Команда ip route get сообщает, через какой интерфейс и с какого исходного адреса уйдёт пакет.

Монтирование устройств

Сетевой интерфейс не монтируют как диск. Он создаётся ядром и появляется в пространстве имён сети. Монтирование требуется для файловой системы, где хранятся конфигурации NetworkManager, Netplan или systemd-networkd.

Если каталог /etc находится на отдельном разделе, проверьте его доступность до запуска сетевого сервиса:

findmnt /etc
mountpoint /etc
mount | grep ' /etc '

На сервере с read-only root настройка может поступать через cloud-init, образ виртуальной машины или систему управления конфигурациями. В таком случае ручное редактирование файла иногда откатывается при следующей загрузке.

  • Проверьте, не создаёт ли cloud-init новый профиль.
  • Проверьте время изменения сетевых файлов после перезагрузки.
  • Сравните активную конфигурацию с содержимым /etc.
  • Уточните, не работает ли интерфейс внутри отдельного network namespace или контейнера.

Для виртуальной машины полезно проверить имя интерфейса после клонирования. MAC-адрес и схема имён могут измениться, поэтому профиль, привязанный к старому имени, перестанет применяться.

Каталоги файловой системы РЕД ОС

В РЕД ОС сетевые файлы и службы нужно искать по фактической конфигурации конкретной версии. Базовые каталоги Linux сохраняют привычное назначение: /etc содержит настройки, /var/log логи, /run временное состояние, /sys/class/net сведения об интерфейсах.

Сначала определите активный менеджер:

cat /etc/os-release
systemctl is-active NetworkManager
systemctl is-active systemd-networkd
nmcli device status
networkctl list

Если активен NetworkManager, используйте nmcli и профили в /etc/NetworkManager/system-connections. Если сеть контролирует systemd-networkd, ищите файлы *.network в /etc/systemd/network. Переносить YAML Netplan или настройки Debian в РЕД ОС без проверки менеджера нельзя.

Проверка автозапуска

Для NetworkManager проверьте автоподключение профиля:

nmcli -f NAME,DEVICE,AUTOCONNECT connection show

Для systemd-networkd проверьте службу:

systemctl is-enabled systemd-networkd
systemctl is-active systemd-networkd

Для ifupdown найдите строку auto в /etc/network/interfaces. Один параметр отвечает за подключение интерфейса при загрузке, другой, например allow-hotplug, реагирует на появление устройства. Выбор зависит от сценария загрузки и используемого сервиса.

Основные команды для работы с файлами и файловой системой

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

Проверка адреса, линка и маршрута

ip -br link
ip -br addr show enp1s0
ip route
ip route get 8.8.8.8
ip neigh show dev enp1s0

Сосед 192.168.1.1 должен появиться в таблице ARP после обращения к шлюзу. Состояние FAILED указывает на проблему канального уровня, неверный адрес шлюза, VLAN или фильтрацию ARP.

Проверка доступности

ping -c 3 192.168.1.1
ping -c 3 1.1.1.1
getent hosts example.org
resolvectl status
resolvectl query example.org

Тесты выполняйте последовательно. Если не отвечает шлюз, проверяйте кабель, VLAN, маску и адрес интерфейса. Если шлюз доступен, но не отвечает 1.1.1.1, ищите проблему в маршрутизации или фильтрации. Если IP доступен, а имя не разрешается, проверяйте DNS и состояние /etc/resolv.conf.

Проверка файла resolv.conf

ls -l /etc/resolv.conf
cat /etc/resolv.conf
resolvectl status

Файл /etc/resolv.conf часто выступает символической ссылкой на файл в /run. Прямая правка в таком случае может исчезнуть после перезапуска NetworkManager или systemd-resolved. DNS лучше задавать в профиле активного менеджера: через ipv4.dns в nmcli, nameservers в Netplan или DNS= в systemd-networkd.

Логи сетевых служб

journalctl -b -u NetworkManager --no-pager
journalctl -b -u systemd-networkd --no-pager
systemctl status NetworkManager
systemctl status systemd-networkd

Сообщения в журнале помогают найти ошибки YAML, конфликт профилей, отказ DHCP, отсутствие линка и проблемы с DNS. Для загрузки конфигурации NetworkManager можно дополнительно посмотреть активные профили:

nmcli connection show --active
nmcli device status

Типичные ошибки

СимптомПричинаЧто проверить
Адрес исчез после перезагрузкиИспользована команда ip без постоянного профиляКонфигурацию NetworkManager, Netplan, ifupdown или networkd
Шлюз недоступенНеверная маска, VLAN, кабель или IP шлюзаip route, ip neigh, состояние линка
Сайты не открываются по имениНеверный DNS или перезаписанный resolv.confresolvectl status, getent hosts
SSH разрывается после примененияУдалён старый адрес или выбран неправильный интерфейсКонсоль, KVM, текущий адрес и таблицу маршрутов
Настройки применяются дваждыОдним интерфейсом управляют несколько сервисовСтатус NetworkManager, networkd, ifupdown и cloud-init
Netplan сообщает об ошибкеНеверные отступы или устаревший параметрYAML, команду netplan try и журнал backend

Проверка после перезапуска

После сохранения конфигурации проверьте её в безопасное окно обслуживания. Для удалённого сервера заранее подготовьте консольный доступ. После перезагрузки выполните:

ip -br addr
ip route
resolvectl status
systemctl --failed
ping -c 3 192.168.1.1
getent hosts example.org

В последней команде используйте обычное написание getent без скрытых символов:

getent hosts example.org

Если сервер нужен для экспериментов с маршрутизацией, статическими адресами и несколькими интерфейсами, можно использовать отдельный облачный сервер Timeweb Cloud. Это снижает риск изменить сетевую конфигурацию рабочей машины.

Для сценария, где Linux выступает шлюзом между WAN и LAN, одной статической адресации недостаточно. Потребуются IP-forwarding, маршруты, NAT и правила фильтрации. Пошаговая схема описана в материале о создании маршрутизатора на Debian и Ubuntu.

Рабочий порядок настройки выглядит так: определить имя интерфейса, записать текущую конфигурацию, выбрать один сетевой менеджер, задать IP и префикс, добавить шлюз и DNS, включить автозапуск, проверить маршрут и DNS, затем повторить проверку после перезагрузки. Такой алгоритм помогает быстро восстановить сеть и не потерять доступ к серверу из-за одной неверной строки.

Поделиться:
Сохранить гайд? В закладки браузера