Налаштування мережевих інтерфейсів Linux (Netplan/NetworkManager)

Втрата доступу до сервера після редагування мережевих налаштувань — знайомий біль кожного DevOps-інженера. Ми налаштовуємо мережеві інтерфейси Linux під ключ, усуваючи конфлікти між Netplan, NetworkManager та systemd-networkd. Наша команда бере на себе весь цикл — від аудиту поточної конфігурації до впровадження та подальшої підтримки, забезпечуючи стабільну роботу вашої інфраструктури.
Часті запитання

Один із найчастіших інцидентів у DevOps — втрата доступу до віддаленого сервера після правки мережевих налаштувань. У 90% випадків причина — конфлікт між ручним редагуванням /etc/network/interfaces та автоматично згенерованою конфігурацією Netplan. Наприклад, інженер додає статичний IP через старі утиліти, а після netplan apply конфігурація скидається — SSH відвалюється. Ми розберемо, як цього уникнути, і покажемо робочі конфігурації для ключових сценаріїв: статика, bonding, VLAN, Jumbo Frames. Наш досвід — понад 80 проєктів з налаштування мережевої інфраструктури для рітейлу, фінтеху та логістики, що дозволило скоротити інциденти на 30% і заощадити до 50 000 грн на сервер на рік.

Які проблеми вирішуємо?

Розберемо три типові проблеми, з якими стикаються при налаштуванні мережі в Linux.

Конфлікт Netplan і NetworkManager

На Ubuntu за замовчуванням Netplan керує конфігурацією, але якщо вручну правити файли в /etc/network/interfaces або /etc/NetworkManager/system-connections/, зміни можуть загубитися при наступному netplan apply. Це найчастіша причина раптових відключень SSH — близько 60% інцидентів у нашій практиці.

Неправильний MTU

Налаштування Jumbo Frames без узгодження з мережевим обладнанням призводить до фрагментації пакетів і падіння продуктивності до 40%. Ми фіксували випадки, коли через неспівпадіння MTU між нодами падав трафік NFS та iSCSI.

Складності з bonding та VLAN

Налаштування агрегації каналів (bonding) вимагає точного вибору режиму (active-backup, LACP, balance-xor) і врахування підтримки на комутаторі. Неправильний режим дає не стабільність, а втрату з'єднання при відмові одного лінка. Економія при переході з ifupdown на Netplan становить до 30% часу на обслуговування мережі.

Як ми налаштовуємо мережеві інтерфейси?

Netplan: YAML поверх NetworkManager або systemd-networkd

Netplan — абстракція, яка генерує конфіги для NetworkManager або systemd-networkd. На сервері зазвичай використовується systemd-networkd як бекенд, на десктопі — NetworkManager. Документація Netplan пояснює: "Netplan uses YAML to configure network interfaces and generates the required configuration for the chosen backend."

Статичний IP на Ubuntu:

---
# /etc/netplan/00-installer-config.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      addresses:
        - 10.0.1.100/24
      routes:
        - to: default
          via: 10.0.1.1
      nameservers:
        addresses: [1.1.1.1, 8.8.8.8]
        search: [company.internal]
      dhcp4: false
# Перевірити синтаксис netplan generate # Застосувати з відкатом (120 секунд) netplan try # Без відкату netplan apply 

Bonding (агрегація каналів) через Netplan:

---
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0: {}
    eth1: {}
  bonds:
    bond0:
      interfaces: [eth0, eth1]
      addresses: [10.0.1.100/24]
      routes:
        - to: default
          via: 10.0.1.1
      parameters:
        mode: active-backup # або 802.3ad для LACP
        mii-monitor-interval: 100

NetworkManager: nmcli для серверних завдань

На RHEL/Rocky/CentOS NetworkManager — основний інструмент. nmcli зручніший за ручне редагування файлів:

# Список інтерфейсів
nmcli device status

# Статичний IP
nmcli connection modify "Wired connection 1" \
    ipv4.method manual \
    ipv4.addresses "10.0.1.100/24" \
    ipv4.gateway "10.0.1.1" \
    ipv4.dns "1.1.1.1,8.8.8.8"

nmcli connection up "Wired connection 1"

# VLAN
nmcli connection add type vlan \
    con-name vlan100 \
    dev eth0 \
    id 100 \
    ipv4.method manual \
    ipv4.addresses "192.168.100.10/24"

systemd-networkd: для серверів без NetworkManager

Мінімалістичний варіант — systemd-networkd без NetworkManager. Використовується в контейнерних і серверних дистрибутивах:

# /etc/systemd/network/20-wired.network
[Match]
Name=eth0

[Network]
Address=10.0.1.100/24
Gateway=10.0.1.1
DNS=1.1.1.1
DNS=8.8.8.8
Domains=company.internal

[Link]
MTUBytes=9000
systemctl enable systemd-networkd systemctl start systemd-networkd networkctl status eth0 

MTU 9000 (Jumbo Frames) ефективний лише при включенні на світчах. Стандартний MTU — 1500, збільшення до 9000 знижує навантаження на CPU до 20% при передачі великих файлів.

Порівняння інструментів керування мережею

Інструмент Область застосування Особливості
Netplan Ubuntu, Debian (YAML-опис) Генерує конфіги для NetworkManager або systemd-networkd
NetworkManager RHEL/CentOS/Rocky, десктопи Підтримка динамічних інтерфейсів, VPN, мобільних мереж
systemd-networkd Сервери, контейнери Легковаговий, мінімалістичний, без зайвих залежностей

Режими bonding: порівняння

Режим Відмовостійкість Пропускна здатність Вимоги до комутатора
active-backup ✅ Один лінк Будь-який
802.3ad (LACP) ✅ Сумується Підтримка LACP
balance-xor ✅ Сумується без LACP Будь-який, але не гарантує рівномірність

Чому Netplan кращий за ifupdown?

ifupdown (утиліти ifup/ifdown) застарів і не підтримує сучасні сценарії: bonding, VLAN, мости. Netplan же описує все в одному YAML-файлі, легко читається і версіонується. Крім того, netplan try рятує від втрати доступу до віддаленого сервера — функція, якої в ifupdown немає. Вартість міграції з ifupdown на Netplan визначається індивідуально, але окупається за рахунок зниження інцидентів.

Як уникнути конфліктів між NetworkManager і systemd-networkd?

Одночасна робота двох демонів може призводити до дублювання маршрутів і збоїв. Рекомендуємо вибрати один бекенд: для серверів — systemd-networkd (вимкніть NetworkManager), для робочих станцій — NetworkManager (вимкніть systemd-networkd). У Netplan вкажіть renderer: networkd або renderer: NetworkManager відповідно.

Покрокове налаштування статичного IP через Netplan

  1. Відредагуйте файл /etc/netplan/00-installer-config.yaml.
  2. Вкажіть потрібні параметри (приклад вище).
  3. Виконайте netplan generate для перевірки синтаксису.
  4. Застосуйте через netplan try — у разі помилки з'єднання відкотиться автоматично через 120 секунд.
  5. Якщо все працює, підтвердьте через netplan apply.

Що входить в роботу?

Налаштування мережевих інтерфейсів — частина більших завдань. У стандартний пакет входить:

  • Аудит поточної конфігурації: перевірка MTU, режимів bonding, DNS, маршрутизації.
  • Проектування нової схеми: з урахуванням топології, вимог до відмовостійкості та продуктивності.
  • Реалізація: написання конфігів, їх застосування через netplan try або nmcli, тестування.
  • Документація: фіксація кінцевої конфігурації, інструкції для чергової зміни (runbook).
  • Підтримка: цілодобовий моніторинг мережі (опціонально) та допомога в інцидентах.

Перевірка після налаштування

Після застосування конфігурації виконайте ip addr show, ip route show та ping -c4 10.0.1.1. Якщо пінг не проходить — перевірте MTU та шлюз. Середній час налаштування одного інтерфейсу — 30 хвилин, включаючи тестування.

Строки та вартість

Строки: від 2 годин для простої статики до 1-2 днів для bonding + VLAN + jumbo frames з навантажувальним тестуванням. Вартість розраховується індивідуально — зв'яжіться з нами, оцінимо проєкт. Наші інженери мають сертифікати з Linux (RHCE, LPIC) і досвід роботи понад 10 років. За останні роки ми виконали понад 80 проєктів з налаштування мережевої інфраструктури.

Отримайте консультацію: допоможемо вибрати оптимальний стек і налаштуємо мережу без збоїв. Замовте налаштування мережі під ключ.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    815
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139