Статический 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 | Маршрут в другие сети |
| DNS | 1.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.conf | resolvectl 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, затем повторить проверку после перезагрузки. Такой алгоритм помогает быстро восстановить сеть и не потерять доступ к серверу из-за одной неверной строки.