LinuxRuLinux без лишней теории
Сеть в Linux

Настройка сети в Linux: статический IP через nmcli, netplan и ip

Редакция LinuxRu6 мин чтенияИнструкции

Статический IP в Ubuntu задаётся через netplan на сервере и через NetworkManager (nmcli или настройки) на десктопе, а команда ip показывает, что получилось. Главное правило: менять настройки через тот менеджер, который реально управляет сетью, иначе после перезагрузки всё откатится. Ниже примеры для nmcli, netplan, Debian и порядок проверки соединения.

Настройка сети в Linux: статический IP через nmcli, netplan и ip
Фото: DiscDepotDundee.co.uk (Disk Depot Ltd.), CC BY-SA 4.0, Wikimedia Commons
Содержание
  1. Кто управляет сетью
  2. Команда ip
  3. nmcli
  4. netplan
  5. Debian и ifupdown
  6. DNS
  7. Проверка соединения
  8. Откат ошибок
  9. Частые вопросы

Сначала выясните, кто управляет сетью

Половина проблем с настройкой сети в Linux возникает из-за того, что человек правит не тот файл. В системе обычно работает один менеджер сети, и изменения надо вносить именно через него, иначе после перезагрузки всё вернётся.

СистемаКто управляетГде настройкиЧем менять
Ubuntu Desktop, Linux Mint, Fedora, Arch с GNOME или KDENetworkManager/etc/NetworkManager/system-connections/, в Ubuntu ещё /etc/netplan/90-NM-*.yamlnmcli, nmtui, графические настройки
Ubuntu Server 24.04 и 26.04systemd-networkd через netplan/etc/netplan/*.yamlредактор и netplan
Debian 13 без графикиifupdown/etc/network/interfacesредактор и ifup, ifdown
Fedora Server, RHEL и клоныNetworkManagerkeyfile в /etc/NetworkManager/nmcli

Проверить, что запущено у вас, можно так:

systemctl is-active NetworkManager systemd-networkd
ls /etc/netplan/ 2>/dev/null
cat /etc/network/interfaces 2>/dev/null

Команда ip: посмотреть адрес, маршруты и временно поменять

Утилита ip из пакета iproute2 есть в любом дистрибутиве и показывает состояние сети независимо от менеджера. Старый ifconfig из net-tools давно не ставится по умолчанию, привыкайте к ip.

ip -br a          # интерфейсы и адреса коротко
ip -br link       # состояние UP или DOWN, MAC-адреса
ip r              # таблица маршрутов, строка default - шлюз
ip -6 r           # то же для IPv6
ip neigh          # соседи в сети, аналог arp -a

Имена интерфейсов предсказуемые: enp3s0 или eno1 для проводной карты, wlp2s0 для Wi-Fi, lo для локальной петли. Через ip можно назначить адрес вручную, но такие изменения живут до перезагрузки или до первой реакции менеджера сети:

sudo ip addr add 192.168.1.50/24 dev enp3s0
sudo ip link set dev enp3s0 up
sudo ip route add default via 192.168.1.1
sudo ip addr del 192.168.1.50/24 dev enp3s0

Временный адрес удобен в двух случаях: быстро проверить гипотезу и поднять сеть на Live USB, где настраивать менеджер ради одного раза нет смысла.

Настройка nmcli: статический IP через NetworkManager

На десктопе и в Fedora статический адрес задают через NetworkManager. Графический путь очевиден, а nmcli выручает на сервере и по SSH. Сначала посмотрите устройства и имена соединений:

nmcli device status
nmcli connection show

Соединение и интерфейс не одно и то же: у enp3s0 может быть соединение с именем "Проводное подключение 1" или "netplan-enp3s0". Меняют настройки соединения, после чего его перезапускают:

sudo nmcli connection modify "Проводное подключение 1" \
  ipv4.method manual \
  ipv4.addresses 192.168.1.50/24 \
  ipv4.gateway 192.168.1.1 \
  ipv4.dns "1.1.1.1 77.88.8.8"
sudo nmcli connection up "Проводное подключение 1"

Вернуть получение адреса по DHCP:

sudo nmcli connection modify "Проводное подключение 1" ipv4.method auto ipv4.addresses "" ipv4.gateway "" ipv4.dns ""
sudo nmcli connection up "Проводное подключение 1"

Wi-Fi и текстовый интерфейс

Список сетей и подключение с запросом пароля, чтобы он не остался в истории оболочки:

nmcli device wifi list
nmcli --ask device wifi connect "ИмяСети"

Если лень запоминать параметры, запустите nmtui: это меню в терминале с теми же возможностями. Когда адаптер вообще не видит сетей, причина обычно в драйвере или блокировке, разбор в статье не работает Wi-Fi в Linux.

Статический IP в Ubuntu Server: пример netplan

На Ubuntu Server сеть описывается YAML-файлами в /etc/netplan/. Netplan превращает их в настройки systemd-networkd или NetworkManager. После установки там обычно лежит 50-cloud-init.yaml. Пример файла со статическим адресом:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      dhcp4: false
      addresses:
        - 192.168.1.50/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses: [1.1.1.1, 77.88.8.8]

Отступы только пробелами, табуляция ломает разбор. Ключ gateway4, который встречается в старых инструкциях, устарел: шлюз теперь задаётся через routes с to: default. Файл должен быть доступен только root, иначе netplan выдаст предупреждение. Полный список ключей есть в документации netplan.

sudo chmod 600 /etc/netplan/50-cloud-init.yaml
sudo netplan try      # применить с автоматическим откатом через 120 секунд
sudo netplan apply    # применить окончательно
sudo netplan get      # итоговая конфигурация после разбора всех файлов
sudo netplan status   # адреса, маршруты и DNS по интерфейсам

Чтобы cloud-init не перезаписал настройки

На облачных и виртуальных серверах cloud-init при загрузке может заново сгенерировать файл сети. Отключите это, создав /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg со строкой network: {config: disabled}, и храните свою конфигурацию в отдельном файле, например 01-static.yaml.

Netplan на Ubuntu Desktop

В настольной Ubuntu netplan тоже есть, но рендерер у него NetworkManager. Соединения, созданные в настройках или через nmcli, сохраняются в файлы вида 90-NM-UUID.yaml. Править их руками не нужно, пользуйтесь nmcli.

Debian 13 без графики: файл interfaces

Минимальная установка Debian по-прежнему использует классический ifupdown. Статический адрес задаётся в /etc/network/interfaces:

auto enp3s0
iface enp3s0 inet static
    address 192.168.1.50/24
    gateway 192.168.1.1

DNS в этой схеме прописывается в /etc/resolv.conf строками nameserver. Применяйте изменения перезапуском интерфейса: sudo ifdown enp3s0 && sudo ifup enp3s0. Если работаете по SSH, выполняйте обе команды одной строкой, иначе после ifdown связь пропадёт и до ifup дело не дойдёт.

DNS: какие серверы реально используются

В Ubuntu, Fedora и большинстве современных систем запросы идут через systemd-resolved, а в /etc/resolv.conf указан локальный адрес 127.0.0.53. Поэтому смотреть настоящие DNS-серверы нужно так:

resolvectl status
resolvectl query ya.ru

Смена серверов, DNS over TLS и очистка кэша вынесены в отдельную статью DNS в Linux, здесь только диагностика.

Проверка соединения по шагам

Идите снизу вверх, от кабеля к сайтам. Так вы сразу поймёте, на каком уровне проблема:

  1. ip -br link - интерфейс в состоянии UP? Если DOWN или NO-CARRIER, проверьте кабель или Wi-Fi.
  2. ip -br a - есть ли адрес из вашей сети? Адрес вида 169.254.x.x значит, что DHCP не ответил.
  3. ping -c 4 192.168.1.1 - отвечает ли шлюз?
  4. ping -c 4 1.1.1.1 - есть ли интернет по IP?
  5. ping -c 4 ya.ru - работает ли DNS? Если по IP пинг есть, а по имени нет, проблема в DNS.
ip route get 1.1.1.1      # через какой интерфейс и шлюз пойдёт пакет
tracepath ya.ru           # где теряются пакеты по пути
sudo ss -tulpn            # какие порты слушает сама машина
curl -I https://ya.ru     # отвечает ли HTTPS

Если статический адрес нужен для доступа к машине из локальной сети, например для удалённого рабочего стола или домашнего сервера, альтернатива - резервирование адреса по MAC в DHCP роутера. Тогда на самой машине ничего настраивать не придётся.

Если сеть пропала после изменений

Хуже всего потерять сеть на удалённом сервере. Несколько привычек, которые от этого страхуют:

  • На Ubuntu Server всегда применяйте netplan try, а не apply. Если не подтвердить изменения нажатием Enter, через 120 секунд вернётся старая конфигурация.
  • Перед правкой копируйте файл: sudo cp /etc/netplan/50-cloud-init.yaml /root/.
  • Для NetworkManager держите запасной вариант: nmcli connection clone создаёт копию соединения, к которой можно вернуться командой nmcli connection up.
  • У VPS почти всегда есть консоль в панели провайдера. Узнайте, где она, до того как она понадобится.

Если ошиблись в адресе на домашней машине, проще всего вернуть DHCP через графические настройки или nmtui и начать заново. Логи помогают понять причину: journalctl -u NetworkManager -b или journalctl -u systemd-networkd -b.

Не задавайте статический адрес из диапазона, который раздаёт DHCP роутера. Иначе рано или поздно роутер выдаст этот же адрес телефону или телевизору, и начнутся пропадания связи, похожие на проблемы с кабелем. Посмотрите диапазон в настройках роутера и возьмите адрес за его пределами.

Частые вопросы

Почему после перезагрузки статический IP пропал?

Скорее всего, адрес задали через ip addr add, а такие изменения временные. Либо настройки перезаписал cloud-init или другой менеджер сети. Задавайте адрес через nmcli или файл netplan.

Чем netplan try отличается от netplan apply?

try применяет конфигурацию и ждёт подтверждения, а без него через 120 секунд откатывает назад. apply применяет сразу и без страховки.

Как узнать шлюз в Linux?

Командой ip r: адрес после слов default via и есть шлюз по умолчанию.

Можно ли использовать nmcli на Ubuntu Server?

Можно, если поставить NetworkManager и указать в netplan renderer: NetworkManager. Смешивать два менеджера на одном интерфейсе не стоит, выберите один.

Где в Linux ifconfig?

В пакете net-tools, который больше не ставится по умолчанию. Всё то же самое и больше умеет команда ip из iproute2.

Документация и источники

Читайте также

Команды проверены на актуальных версиях дистрибутивов на момент обновления. Перед изменением системных настроек сделайте резервную копию.