Постоянная конфигурация сети [109.2]

Рейтинг: 61% · 6 голосов
Полный курс LPIC-1 (экзамены 101-500 и 102-500): архитектура, загрузка, пакеты, команды и текст, ФС и права, шелл-скрипты, пользователи, сервисы, сеть, безопасность. Debian и RHEL.
Ответить
Аватара пользователя
Sergey_Sysadmin
Сообщения: 134
Зарегистрирован: 11 май 2026, 05:31

Постоянная конфигурация сети [109.2]

Сообщение Sergey_Sysadmin »

Оглавление курса (41)
  1. Введение в LPIC-1 и как устроен путь администратора
  2. Железо, устройства и модули ядра [101.1]
  3. Загрузка системы: от BIOS до systemd [101.2]
  4. systemd, цели и уровни выполнения [101.3]
  5. План разметки диска и swap [102.1]
  6. Загрузчик GRUB 2 [102.2]
  7. Разделяемые библиотеки [102.3]
  8. Управление пакетами в Debian: dpkg и apt [102.4]
  9. Управление пакетами RPM, DNF и Zypper [102.5]
  10. Linux как гость виртуализации [102.6]
  11. Командная строка Bash [103.1]
  12. Обработка текста фильтрами [103.2]
  13. Базовое управление файлами [103.3]
  14. Потоки, конвейеры и перенаправление [103.4]
  15. Процессы: создание, мониторинг, сигналы [103.5]
  16. Приоритеты выполнения процессов [103.6]
  17. Регулярные выражения [103.7]
  18. Редактор vi и vim [103.8]
  19. Разделы и создание файловых систем [104.1]
  20. Целостность и обслуживание ФС [104.2]
  21. Монтирование файловых систем [104.3]
  22. Урок 21. Права доступа и владение: rwx, chmod, umask и специальные биты
  23. Жёсткие и символические ссылки
  24. FHS и поиск файлов в системе [104.7]
  25. Окружение и кастомизация оболочки [105.1]
  26. Урок 25. Написание простых bash-скриптов [105.2]
  27. Графика, рабочие столы и доступность
  28. Учётные записи пользователей и групп
  29. Автоматизация задач: cron, at, таймеры [107.2]
  30. Локализация и интернационализация [107.3]
  31. Системное время и синхронизация [108.1]
  32. Системное логирование [108.2]
  33. Основы почтового агента (MTA) [108.3]
  34. Печать и CUPS [108.4]
  35. Основы интернет-протоколов [109.1]
  36. Постоянная конфигурация сети [109.2] (вы здесь)
  37. Диагностика сети [109.3]
  38. DNS на стороне клиента [109.4]
  39. Задачи администрирования безопасности [110.1]
  40. Настройка безопасности хоста [110.2]
  41. Шифрование данных: SSH и GnuPG [110.3]
Урок 35. Постоянная конфигурация сети [109.2]

Команды ip из прошлого урока живут до перезагрузки - после reboot интерфейс снова поднимается голым. Задача администратора: сделать так, чтобы IP-адрес, шлюз, DNS и имя хоста восстанавливались автоматически при каждой загрузке. В 2026 этим заведуют демоны: на десктопах и большинстве серверов это NetworkManager, на минималистичных серверах и в облаке - systemd-networkd. Разберём оба, плюс имя хоста и легаси ifupdown/netplan, которые ещё попадаются на экзамене и в проде.

Изображение

Как это работает

Постоянная настройка - это всегда связка двух вещей: текстовый файл с описанием желаемого состояния и демон, который при старте читает этот файл и прикладывает его к ядру через те же netlink-вызовы, что и команда ip. Сам файл ничего не делает - работает демон.

NetworkManager хранит соединения (connection) отдельно от устройств (device). Соединение - это профиль настроек, устройство - физический или виртуальный интерфейс. На одном устройстве может лежать несколько профилей, активен один. С версии 1.30+ профили по умолчанию пишутся в keyfile-формате в /etc/NetworkManager/system-connections/ (старый ifcfg-формат в RHEL объявлен устаревшим и в RHEL 10 уже не ставится). Управляют им утилиты nmcli (скрипты) и nmtui (псевдографика в терминале).

systemd-networkd идёт другим путём: это часть systemd, конфигурация декларативная и лежит в .network (адреса, маршруты), .netdev (виртуальные устройства - bridge, vlan, bond) и .link (низкоуровневые свойства, имя по MAC). Файлы кладут в /etc/systemd/network/. Демон применяет их по алфавиту имён, побеждает первый подошедший по секции [Match]. Резолвингом DNS при этом обычно занимается отдельный systemd-resolved.

Имя хоста - третья независимая сущность. Статическое имя лежит в /etc/hostname, его читает systemd-hostnamed при загрузке. Файл /etc/hosts даёт локальное соответствие имя-адрес в обход DNS и нужен, чтобы своё имя резолвилось в 127.0.1.1 ещё до поднятия сети.

Команды и примеры

Имя хоста одинаково везде через systemd:

Код: Выделить всё

hostnamectl                          # показать static/transient/pretty имя
hostnamectl set-hostname web01.lab.local
cat /etc/hostname                    # тут же лежит результат
NetworkManager, статический IP через nmcli (работает и в Debian/Ubuntu, и в RHEL/Fedora):

Код: Выделить всё

nmcli connection show                # список профилей
nmcli device status                  # какие устройства и их состояние
nmcli con add type ethernet con-name lan1 ifname enp1s0 \
  ipv4.method manual \
  ipv4.addresses 192.168.10.20/24 \
  ipv4.gateway 192.168.10.1 \
  ipv4.dns "1.1.1.1 9.9.9.9"
nmcli con up lan1
Переключить тот же профиль на DHCP и поправить на лету:

Код: Выделить всё

nmcli con mod lan1 ipv4.method auto ipv4.gateway "" ipv4.addresses ""
nmcli con up lan1                    # перечитать профиль
systemd-networkd, статика - файл /etc/systemd/network/10-lan.network:

Код: Выделить всё

[Match]
Name=enp1s0

[Network]
Address=192.168.10.20/24
Gateway=192.168.10.1
DNS=1.1.1.1
DHCP в том же формате - вместо Address/Gateway пишем DHCP=yes. Применение:

Код: Выделить всё

systemctl enable --now systemd-networkd
networkctl reload                    # перечитать .network без рестарта
networkctl status enp1s0             # состояние и применённые адреса
Включить/выключить интерфейс (поднятие самого устройства, не профиля):

Код: Выделить всё

ip link set enp1s0 up                # разово, до reboot
nmcli device disconnect enp1s0       # NM: опустить и не поднимать
nmcli con up lan1                    # NM: поднять обратно по профилю
Легаси и Ubuntu. Старый ifupdown - файл /etc/network/interfaces, команды ifup enp1s0 / ifdown enp1s0. На экзамене знать надо, в новых системах не ставится по умолчанию. Ubuntu Server использует netplan - это YAML-обёртка в /etc/netplan/, которая САМА не настраивает сеть, а генерирует конфиги для бэкенда (networkd или NetworkManager):

Код: Выделить всё

network:
  version: 2
  renderer: networkd
  ethernets:
    enp1s0:
      addresses: [192.168.10.20/24]
      routes:
        - to: default
          via: 192.168.10.1
      nameservers:
        addresses: [1.1.1.1]

Код: Выделить всё

netplan generate                     # YAML -> конфиги бэкенда
netplan try                          # применить с откатом по таймауту
netplan apply                        # применить насовсем
Частые грабли
  • Отредактировали keyfile в /etc/NetworkManager/system-connections/ руками и удивляетесь, что не применилось - нужен nmcli con reload или con up, демон сам файлы не перечитывает по таймеру.
  • Два менеджера на одной системе дерутся за интерфейс. NetworkManager и systemd-networkd одновременно активными быть не должны - выберите один, второй замаскируйте.
  • netplan apply без предварительного netplan try на удалённом сервере: ошибка в YAML - и вы отрезали себе SSH. try откатит через 120 секунд, apply - нет.
  • Имя хоста сменили через hostnamectl, но забыли про /etc/hosts - и sudo подвисает на пару секунд из-за неудачного резолва своего имени.
  • Отступы в netplan и в .network - в YAML только пробелы, табы ломают парсер; в ini-формате networkd важны имена секций с большой буквы.
  • ipv4.gateway не очистили при переходе на DHCP - профиль пытается ставить ручной шлюз поверх полученного, маршрут конфликтует.
Мини-лаба
  • Определите, какой демон управляет сетью: systemctl status NetworkManager systemd-networkd - какой active.
  • Установите статическое имя хоста через hostnamectl set-hostname, проверьте /etc/hostname и добавьте строку в /etc/hosts.
  • Создайте профиль статики на тестовом интерфейсе (nmcli con add либо .network-файл), поднимите его, проверьте ip addr.
  • Переключите этот же профиль на DHCP, перечитайте, убедитесь, что адрес пришёл от сервера.
  • Опустите интерфейс (nmcli device disconnect или ip link set down), убедитесь в потере связи, поднимите обратно.
  • Перезагрузите стенд и проверьте, что настройки и имя хоста восстановились сами.
Контрольные вопросы
  • В каком каталоге NetworkManager хранит профили соединений в keyfile-формате и какой командой заставить его перечитать изменённый вручную файл?
  • Чем отличается понятие connection от device в терминах NetworkManager?
  • Какие три типа файлов использует systemd-networkd и за что отвечает каждый?
  • Почему netplan называют генератором, а не сетевым менеджером, и какие два бэкенда он умеет настраивать?
  • Какой демон читает /etc/hostname при загрузке и в чём разница между static и transient именем хоста?
  • Чем netplan try безопаснее netplan apply при настройке удалённого сервера?
👍4 ❤️4 🔥1 😄 🤔
Аватара пользователя
michaelmas
Сообщения: 1
Зарегистрирован: 25 май 2026, 05:24

Re: Постоянная конфигурация сети [109.2]

Сообщение michaelmas »

А как понять, что в облачной Ubuntu сеть точно через netplan, а не напрямую networkd? У меня в /etc/netplan лежит какой-то 50-cloud-init.yaml, его трогать вообще можно?
👍 ❤️1 🔥 😄 🤔
Аватара пользователя
KubeGuru
Сообщения: 1
Зарегистрирован: 07 июн 2026, 08:27

Re: Постоянная конфигурация сети [109.2]

Сообщение KubeGuru »

Споткнулся ровно на граблях с gateway: перевёл профиль на auto, а пинг до шлюза отвалился. nmcli con mod ... ipv4.gateway '' решило, спасибо что предупредили заранее.
👍 ❤️1 🔥 😄 🤔
Ответить
← Предыдущая глава
Основы интернет-протоколов [109.1]
Следующая глава →
Диагностика сети [109.3]

Все главы курса «LPIC-1: администратор Linux (101 + 102)»

Поделиться темой: ✈ Telegram VK

Вернуться в «LPIC-1: администратор Linux»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей