Netplan i jak go poprawnie przygotować

Ubuntu to wspaniały system operacyjny; od dawna nie pracowałem z Ubuntu server, a aktualizacja swojego Desktopa do stabilnej wersji nie miała sensu. Niedawno musiałem się zmierzyć z najnowszym wydaniem Ubuntu server 18.04, a moje zdziwienie nie miało granic, gdy zrozumiałem, że jestem w tyle i nie mogę skonfigurować sieci, ponieważ stary, dobry sposób konfigurowania interfejsów sieciowych poprzez edytowanie pliku /etc/network/interfaces odszedł w zapomnienie. A co go zastąpiło? Coś strasznego i na pierwszy rzut oka całkowicie niezrozumiałego - witaj, „Netplan”.

Szczerze mówiąc, na początku nie mogłem zrozumieć, o co chodzi i „czemu to jest potrzebne, skoro wszystko było tak wygodne”, ale po zdobyciu trochę praktyki zrozumiałem, że ma w sobie swój urok. I tak, dość już liryk, co to jest Netplan? To nowe narzędzie do konfigurowania sieci w Ubuntu, przynajmniej „w innych dystrybucjach nie spotkałem się z czymś podobnym”. Zasadniczą różnicą Netplan jest to, że konfiguracja pisana jest w języku YAML, tak, dobrze słyszałeś, YAML; deweloperzy postanowili iść z duchem czasu (i ile by się go nie wychwalało, ja mimo wszystko uważam, że to okropny język). Główną wadą tego języka jest to, że jest bardzo wrażliwy na spacje, więc przyjrzyjmy się konfiguracji na przykładzie.

Pliki konfiguracyjne znajdują się w ścieżce /etc/netplan/nazwapliku.yaml, między każdym blokiem powinny być + 2 spacje.

1) Standardowy nagłówek wygląda tak:

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

Przyjrzyjmy się, co właśnie zrobiliśmy:

  • network: — to blok rozpoczynający konfigurację.
  • renderer: networkd — tutaj wskazujemy menedżera sieci, którego będziemy używać, to może być albo networkd, albo NetworkManager.
  • version: 2 — tu, jak zrozumiałem, chodzi o wersję YAML.
  • ethernets: — ten blok mówi, że konfigurować będziemy protokół ethernetowy.
  • enps0f0: — wskazujemy, jaki adapter sieciowy będziemy konfigurować.
  • dhcp4:no — wyłączamy DHCP v4, dla 6 v6 dhcp6 odpowiednio.

2) Spróbujemy przydzielić adresy 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

Tutaj ustawiliśmy adres MAC, IPv4, bramę i serwer DNS. Zauważcie, że jeśli potrzebujemy więcej niż jednego adresu IP, zapisujemy je oddzielone przecinkami z obowiązkową spacją po.

3) A co jeśli potrzebujemy bondingu?

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

  • bonds: — blok wyjaśniający, że będziemy konfigurować bonding.
  • bond0: — dowolna nazwa interfejsu.
  • interfaces: — zestaw interfejsów zbieranych w bond, jak wspomniano wcześniej, jeśli jest kilka parametrów, opisujemy je w kwadratowych nawiasach.
  • parameters: — opisujemy blok konfiguracji parametrów.
  • mode: — wskazujemy tryb, w którym będzie działać bonding.
  • mii-monitor-interval: — ustawiamy interwał monitorowania na 1 sekundę.

W obrębie bloku o nazwie bond można również konfigurować takie parametry jak addresses, gateway4, routes itd.

Dodaliśmy rezerwację dla naszej sieci, teraz wystarczy tylko podpiąć vlan i konfiguracja może uznawana być za zakończoną.

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: — ogłaszamy blok konfiguracji vlan.
  • vlan10: — dowolna nazwa interfejsu vlan.
  • id: — tag naszego vlan.
  • link: — interfejs, przez który vlan będzie dostępny.
  • routes: — ogłaszamy blok opisu tras.
  • — to: — wskazujemy adres/podsieć, do której potrzebna jest trasa.
  • via: — wskazujemy bramę, przez którą będzie dostępna nasza podsieć.
  • on-link: — wskazujemy, że trasy mają być zawsze rejestrowane przy podniesieniu linku.

Zauważ, jak ustawiam spacje, w języku YAML jest to bardzo ważne.

Oto opisaliśmy interfejsy sieciowe, stworzyliśmy bonding, a nawet dodaliśmy vlany. Zastosujmy naszą konfigurację, polecenie netplan apply sprawdzi naszą konfigurację pod kątem błędów i zastosuje ją w przypadku sukcesu. Następnie konfiguracja wzniesie się sama po restarcie systemu.

Zbierając wszystkie poprzednie bloki kodu, oto co uzyskaliśmy:

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]
    

Oto nasza sieć gotowa do eksploatacji, wszystko okazało się nie tak straszne, jak na początku myśleliśmy, a kod wyszedł bardzo ładny i czytelny. P.S. Dziękuję, że napisałeś znakomity podręcznik na temat netplan pod tym linkiem. https://netplan.io/.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster