Гид по технологиям

NetPlan: смена DNS и отладка в Ubuntu

6 min read Linux Обновлено 07 Nov 2025
NetPlan: смена DNS и отладка в Ubuntu
NetPlan: смена DNS и отладка в Ubuntu

NetPlan заменил прямое редактирование /etc/resolv.conf в современных версиях Ubuntu и управляет сетевыми настройками через YAML-файлы в /etc/netplan. Чтобы сменить DNS — отредактируйте (или создайте) YAML-файл, проверьте конфигурацию через sudo netplan try, затем примените sudo netplan apply. Для отладки используйте ip, netplan –debug generate и проверяйте сгенерированные файлы в /run/systemd/network.

Иллюстрация концепции NetPlan и управления сетью

Быстрые ссылки

  • Смена DNS в NetPlan
  • Поднятие и опускание интерфейсов
  • Отладка NetPlan
  • Заключение

До Ubuntu 18.04 DNS-серверы обычно указывались в файле /etc/resolv.conf. Этот файл был простым способом задать nameserver и быстро работал на большинстве систем. Пример старого файла resolv.conf:

nameserver 1.1.1.1  
nameserver 1.0.0.1  

Начиная с Ubuntu 18.04, сетевые настройки, включая DNS, управляются через интерфейс NetPlan. Даже до 18.04 изменения в /etc/resolv.conf могли применяться, но чаще за ним следил NetworkManager и его конфигурационные файлы.

Причина перехода — простота и гибкость. Читаемый YAML облегчает конфигурирование сложных сетевых схем, а также упрощает отладку и поиск ошибок.

Смена DNS в NetPlan

Как обновить DNS на Ubuntu 18.04+ с NetPlan? Вместо /etc/resolv.conf редактируйте YAML-файлы в /etc/netplan. Файлы загружаются в порядке: /run/netplan/.yaml, затем /etc/netplan/.yaml, затем /lib/netplan/*.yaml. Рекомендуемый формат имени — число-описание.yaml (например, 01-netconfig.yaml).

Поиск текущей конфигурации интерфейсов

Перед изменением проверьте текущие интерфейсы и IP-адреса с помощью команды ip:

user> ip a  

Вы увидите список интерфейсов и их состояния — пример на скриншоте ниже иллюстрирует вывод. Обратите внимание, что имена интерфейсов (eth0, enp0s3 и т. п.) зависят от системы.

Вывод текущей конфигурации интерфейсов: список интерфейсов и адресов

В этом руководстве мы используем интерфейс eth0 как пример.

Обновление YAML-конфигурации

Откройте существующий YAML-файл или создайте новый в /etc/netplan и добавьте/отредактируйте секцию. Пример для статического IP и интерфейса eth0:

network:  
  version: 2  
  ethernets:  
    eth0:  
      addresses:  
        - 10.10.10.2/24  
      gateway4: 10.10.10.1  
      nameservers:  
        addresses:  
        - 1.1.1.1  
        - 1.0.0.1  
        - 2606:4700:4700::1111  
        - 2606:4700:4700::1001  
      search: []  

Здесь показаны публичные DNS Cloudflare (IPv4 и IPv6). Замените их на те, что нужны вам.

Если вы используете DHCP, вы можете заменить статический блок на:

dhcp4: yes

и при необходимости отключить использование DNS от DHCP (чтобы задать свои nameserver):

dhcp4-overrides:  
  use-dns: false  

Альтернативный синтаксис списка адресов (короткая форма массива):

addresses: [1.1.1.1, 1.0.0.1, "2606:4700:4700::1111", "2606:4700:4700::1001"]  

Renderers

Иногда в конфигурации встречается параметр renderer. Доступны два варианта: NetworkManager и networkd. По умолчанию используется networkd. NetworkManager — это менеджер с GUI (часто применяется на десктопах), networkd — демон systemd для серверных сценариев. Обычно явно задавать renderer не обязательно.

Тестирование изменений

После создания или изменения файла удобно сначала попробовать настройки временно, чтобы система автоматически откатила изменения при ошибке. Для этого используется:

sudo netplan try  
Окно подтверждения при попытке применить новые настройки NetPlan

Если что-то пошло не так, настройки откатятся через 120 секунд. Можно открыть вторую сессию SSH и проверять доступность системы. Если всё работает — нажмите Enter, чтобы сохранить изменения.

Применение навсегда

После успешного тестирования примените конфигурацию командой:

sudo netplan apply  

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

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

Ранее использовалась ifconfig, теперь вместо неё применяют ip. Пример опускания и поднятия интерфейса eth0:

ip link set eth0 down  
ip link set eth0 up  

Если eth0 — единственный интерфейс на удалённом сервере, будьте аккуратны: опускание интерфейса лишит вас удалённого доступа.

Отладка NetPlan

Если конфигурация не работает, полезно проверить, какие systemd/network файлы сгенерированы. Сгенерированные файлы находятся в /run/systemd/network; там вы найдёте *.network, соответствующие правила и адреса.

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

sudo netplan --debug generate  

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

Пример вывода netplan --debug generate с информацией о сгенерированной конфигурации

Быстрый чек-лист отладки

  • Проверьте активные интерфейсы: ip a
  • Посмотрите сгенерированные файлы: ls -l /run/systemd/network
  • Сгенерируйте конфигурацию в режиме отладки: sudo netplan –debug generate
  • Попробуйте временно: sudo netplan try
  • Проверьте логи systemd: journalctl -u systemd-networkd

Когда NetPlan может не подойти

  • Очень старые дистрибутивы Ubuntu до 18.04, где NetPlan отсутствует.
  • Специфичные кастомные сетевые сценарии, требующие нестандартных системных скриптов.
  • CI-среды или контейнеры, где сеть управляется инструментом оркестрации (Docker, Kubernetes).

В таких случаях рассмотрите NetworkManager, systemd-networkd напрямую или управляющие инструменты оркестрации.

Альтернативные подходы

  • NetworkManager: подходит для десктопов и динамических конфигураций. Управляется nmcli и графическими средствами.
  • systemd-networkd: можно работать напрямую с .network и .netdev файлами, если нужен строгий контроль.
  • Скрипты и cloud-init: для автоматической конфигурации при развёртывании инстансов.

Мини-методология: как безопасно изменить DNS на сервере (шаги)

  1. Проверить текущую сетевую конфигурацию: ip a, ip route
  2. Создать резервную копию текущих netplan-файлов: sudo cp /etc/netplan/*.yaml /root/backup-netplan/
  3. Добавить/отредактировать YAML в /etc/netplan/01-netconfig.yaml
  4. Проверить синтаксис YAML (внимание на отступы)
  5. Запустить sudo netplan try и проверить доступность (ping 8.8.8.8, nslookup)
  6. Если всё ОК, выполнить sudo netplan apply
  7. Проверить, что /etc/resolv.conf (или systemd-resolved) содержит ожидаемые адреса

Ролевые чек-листы

Для системного администратора:

  • Сделать резервную копию текущих netplan-файлов
  • Убедиться в наличии консоли или альтернативного доступа
  • Применить изменения через netplan try прежде чем commit
  • Проверить логи networkd после применения

Для десктоп-пользователя:

  • Проверьте, использует ли система NetworkManager
  • Если да — внесите изменения через GUI или nmcli
  • Не забудьте перезагрузить NetworkManager при необходимости

Критерии приёмки

  • Интерфейс имеет правильный IP и маршрут
  • DNS-запросы разрешаются ожидаемыми серверами (nslookup/ dig)
  • Нет потери сетевого доступа после применения (или есть план отката)

Примеры тестов и критериев успеха

  • ping 1.1.1.1 — отвечает (сетевая связность)
  • nslookup example.com — ответ от нового nameserver
  • systemctl status systemd-networkd — сервис запущен без ошибок

План отката (Runbook)

  1. Если netplan try откатил — ничего делать не нужно.
  2. Если netplan apply привёл к потере связи:
    • Подключитесь через локальную консоль
    • Восстановите резервную копию: sudo cp /root/backup-netplan/*.yaml /etc/netplan/
    • sudo netplan apply
  3. Если проблема не решена — загрузитесь в Rescue/Single-user и проверьте конфигурации вручную.

Модель мышления (mental model)

Думайте о NetPlan как о трансляторе: вы указываете желаемое состояние сети в YAML, NetPlan переводит это в конфигурации для systemd-networkd или NetworkManager. Исправления и отладка обычно происходят на уровне сгенерированных файлов и логов systemd.

Меры безопасности и приватность

  • Не отправляйте ядра/ключи или конфигурации с закрытыми IP/паролями на публичные площадки.
  • При использовании сторонних DNS учитывайте политику логирования провайдера.

Короткий глоссарий

  • NetPlan: утилита Ubuntu для описания сетевого состояния в YAML
  • NetworkManager: сетевой менеджер с GUI, часто на десктопах
  • systemd-networkd: демон systemd для управления сетью
  • dhcp4-overrides: опции переопределения DHCP для IPv4

Решающее дерево для выбора метода (Mermaid)

flowchart TD
  A[Нужно сменить DNS?] --> B{Сервер или десктоп}
  B -->|Сервер| C[Использовать netplan + networkd]
  B -->|Десктоп| D[Проверить NetworkManager]
  C --> E{Используется DHCP?}
  E -->|Да| F[dhcp4: yes + dhcp4-overrides: use-dns: false]
  E -->|Нет| G[Статический адрес + nameservers]

Миграционные советы

  • При переносе конфигураций с /etc/network/interfaces на NetPlan — сперва опишите эквивалент в YAML и проверяйте шаг за шагом.
  • Учитывайте имена интерфейсов: predictable network names (enp…) могут отличаться от eth0.

Заключение

NetPlan упрощает и стандартизирует сетевые настройки в современных Ubuntu-системах, позволяя описывать сложные конфигурации в читаемом YAML. Для большинства задач достаточно отредактировать /etc/netplan/*.yaml, протестировать с sudo netplan try и применить sudo netplan apply. Для отладки используйте ip, netplan –debug generate и проверяйте сгенерированные файлы в /run/systemd/network.

Краткое резюме:

  • Всегда делайте резервную копию конфигураций.
  • Тестируйте изменения через sudo netplan try.
  • Используйте netplan –debug generate и systemd-логи для отладки.

Важное: внимательно относитесь к отступам в YAML — одна ошибка может привести к некорректной загрузке сети.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Herodotus: механизм и защита Android‑трояна
Кибербезопасность

Herodotus: механизм и защита Android‑трояна

Включить новое меню «Пуск» в Windows 11
Windows руководство

Включить новое меню «Пуск» в Windows 11

Панель полей сводной таблицы в Excel — руководство
Excel

Панель полей сводной таблицы в Excel — руководство

Включить новое меню «Пуск» в Windows 11
Windows 11

Включить новое меню «Пуск» в Windows 11

Дубликаты Диспетчера задач в Windows 11 — как исправить
Windows

Дубликаты Диспетчера задач в Windows 11 — как исправить

История просмотров Reels в Instagram — как найти
Instagram

История просмотров Reels в Instagram — как найти