Netplan та як його правильно приготувати

Ubuntu приголомшлива операційна система, давно не працював з Ubuntu server, а оновлювати свій Desktop зі стабільною версією не було сенсу. І ось нещодавно довелося зіткнутися зі свіженьким релізом Ubuntu server 18.04, моєму подиву не було межі, коли я зрозумів, що я нескінченно відстав від життя і не можу налаштувати мережу т.к. /interfaces канула в лепту. А що ж прийшло їй на зміну? Що жахливе і на перший погляд зовсім не зрозуміле, зустрічайте «Netplan».

Зізнатися чесно, спочатку я не міг зрозуміти в чому справа і "навіщо це потрібно, адже все було так зручно", але отримавши трохи практики зрозумів, що в ньому є свій шарм. налаштування мережі в Ubuntu, принаймні «в інших дистрибутивах я не зустрічав подібного.» Суттєвою відмінністю Netplan є те, що конфігурація пишеться мовою ЯМЛ, Так та ви не дочули YAML, розробники вирішили йти в ногу з часом (і як би багато не розхвалювали його я все-таки вважаю його жахливим мовою). Основний мінус цієї мови в тому, що він дуже чутливий до прогалин, давайте ж розглянемо конфіг на прикладі.

Файли конфігурації знаходяться на шляху /etc/netplan/имяфайла.yaml, між кожним блоком коли має бути + 2 пробіли.

1) Стандартна шапка виглядає так:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0f0:
      dhcp4:no

Давайте розглянемо, що ми зараз зробили:

  • network: це блок початок конфігурації.
  • renderer: networkd — тут ми вказуємо мережевий менеджер який будемо використовувати, це networkd або NetworkManager
  • version: 2 - тут як я зрозумів версія YAML.
  • ethernets: — цей блок говорить про те, що конфігуруватимемо ethernet протокол.
  • enps0f0: — вказуємо який мережевий адаптер конфігуруватимемо.
  • dhcp4:no - відключаємо DHCP v4, для 6 v6 dhcp6 відповідно

2) Спробуємо призначити IP адреси:

    enp3s0f0:
      dhcp4:no
      macaddress: bb:11:13:ab:ff:32
      addresses: [10.10.10.2/24, 10.10.10.3/24]
      gateway4: 10.10.10.1
      nameservers:
        addresses: 8.8.8.8

Тут ми задали мак, ipv4, шлюз та dns сервер. Зауважте що якщо нам потрібно більше одного ip адреси то ми пишемо їх через кому з обов'язковим пробілом після.

3) А якщо нам потрібен зв'язок?

  bonds:
    bond0:
      dhcp4: no
      interfaces: [enp3s0f0, enp3s0f1]
      parameters: 
        mode: 802.3ad
        mii-monitor-interval: 1

  • bonds: блок пояснює що ми будемо налаштовувати bonding.
  • bond0: довільне ім'я інтерфейсу.
  • interfaces: - Набір інтерфейсів збираються в bond-динг, "як обговорювалося раніше якщо параметрів дещо описуємо їх у квадратних дужках".
  • parameters: - описуємо блок налаштування параметрів
  • mode: — вказуємо мод, яким буде працювати bonding.
  • mii-monitor-interval: - Задаємо інтервал моніторингу 1 сек.

Всередині блоку з ім'ям bond-а можна конфігурувати такі параметри як addresses,gateway4,routes ітд.

Ми додали резервування для нашої мережі, тепер залишилося лише повісити wham і налаштування можна вважати закінченим.

vlans: 
    vlan10:
      id: 10
      link: bond0
      dhcp4: no
      addresses: [10.10.10.2/24]
      gateway: 10.10.10.1
      routes:
        - to: 10.10.10.2/24
          via: 10.10.10.1
          on-link: true

  • vlans: - оголошуємо блок налаштування vlan.
  • vlan10: - Довільне ім'я vlan інтерфейсу.
  • id: - Тег нашого vlan.
  • link: — інтерфейс, через який vlan буде доступний.
  • routes: - Оголошуємо блок опису маршрутів.
  • — to: — задаємо адресу/підмережу, до якої необхідний маршрут.
  • via: — вказуємо шлюз, через який буде доступна наша підмережа.
  • on-link: - Вказуємо що прописувати маршрути завжди при піднятті лінка.

Зверніть увагу на те, як я розставляю прогалини, в мові YAML це дуже важливо.

Ось ми описали мережеві інтерфейси, створили bonding і навіть додали vlan-и. Давайте застосуємо наш конфіг, команда netplan apply перевірить наш конфіг на наявність помилок і застосує його у разі успіху. Далі конфіг сам підніматиметься при перезавантаженні системи.

Зібравши всі попередні блоки коду, ось що в нас вийшло:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0f0:
      dhcp4: no
    ensp3s0f1:
      dhcp4: no
  bonds:
    bond0:
      dhcp4: no
      interfaces: [enp3s0f0, enp3s0f1]
      parameters: 
        mode: 802.3ad
        mii-monitor-interval: 1
  vlan10:
      id: 10
      link: bond0
      dhcp4: no
      addresses: [10.10.10.2/24]
      routes:
        - to: 10.10.10.2/24
          via: 10.10.10.1
          on-link: true
  vlan20:
    id: 20
    link: bond0
    dhcp4: no
    addresses: [10.10.11.2/24]
    gateway: 10.10.11.1
    nameserver:
      addresses: [8.8.8.8]
    

Ось наша мережа і готова до експлуатації, все виявилося не так страшно, як здалося спочатку і код вийшов дуже красивий і читабельний. PC дякую що по netplan є відмінний мануал за посиланням https://netplan.io/.

Джерело: habr.com

Додати коментар або відгук