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 , 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:noPrzyjrzyjmy 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.8Tutaj 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 ?
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ąć 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. .
Źródło: habr.com
