poniedziałek, 3 sierpnia 2015

Sieć w Linuxie - po nowemu, czyli oswajanie NetworkManagera

Leve it or leave it.
Ponieważ lubię Fedorę i RedHata, postanowiłem oswoić się z wynalazkami typu systemd i NetworkManager.
Tym razem chcę się skupić na NM, który od pierwszych wersji bardzo dojrzał. I dorobił się CLI :-)
Buduję sobie właśnie klaster Pacemakerowy w oparciu o Fedora 22 Server. Węzły działają w KVM, ale na różnych hostach. Dlatego zdecydowałem się stworzyć 2 sieci: bridged, do bezpośredniej komunikacji i "nat" do internetu i komunikacji host<->gość. 

Profile połączeń

Coś pokręciłem i mimo użycia tego samego obrazu dysku, mam lekko inną definicję sprzętu obu węzłów klastra. W efekcie, na jednej maszynie  powstały karty i profile połączeń w postaci: ensX a na drugiej ethX


[root@lnx0 ~]# nmcli c s
NAZWA  UUID                                  TYP             URZĄDZENIE 
ens4   b125be98-b025-4435-8af6-048cbf8c55de  802-3-ethernet  ens4       
ens3   2255e02d-dba1-4ecf-85fd-0f2bdab60ddb  802-3-ethernet  ens3 


Okazało się, że przy tworzeniu maszyn wirtualnych, na jednej z nich, użyłem emulacji kart Realtek a na drugiej VirtIO. Po wyprostowaniu tej od realteków mam coś takiego:
[root@lnx0 ~]# nmcli c s
NAZWA  UUID                                  TYP             URZĄDZENIE 
ens4   b125be98-b025-4435-8af6-048cbf8c55de  802-3-ethernet  eth1       
ens3   2255e02d-dba1-4ecf-85fd-0f2bdab60ddb  802-3-ethernet  eth0

Dlaczego nie ma nowych? Bo MAC adresy ani lokalizacja urządzenia się nie zmieniły. Zmienił się tylko tym i moduł w jądrze. Dlatego potrzebuję wyprostować też nazwy połączeń z ensX na coś bardziej ludzkiego:

[root@lnx0 ~]# nmcli c modify ens4 connection.id bridged-eth1
[root@lnx0 ~]# nmcli c modify ens3 connection.id nat-eth0
[root@lnx0 ~]# nmcli c s
NAZWA         UUID                                  TYP             URZĄDZENIE 
bridged-eth1  b125be98-b025-4435-8af6-048cbf8c55de  802-3-ethernet  eth1       
nat-eth0      2255e02d-dba1-4ecf-85fd-0f2bdab60ddb  802-3-ethernet  eth0 

Hostname

Nazwy hostów też musiałem zmienić z szablonowego "lnx0" na pcmk-1 i pcmk-2. I znów z pomocą przychodzi nmcli:

[root@lnx0 ~]# nmcli general hostname pcmk-1
[root@lnx0 ~]# cat /etc/hostname 
pcmk-1
[root@lnx0 ~]# hostname
pcmk-1
[root@lnx0 ~]# 

Oczywiście trzeba zadbać o to, by nazwa rozwiązywała się do jakiegoś sensownego adresu IP, a potem ostrzegawczy strzał w tył głowy, żeby sprawdzić czy po reboocie wszystkie zmiany są na miejscu.

Podsumowanie

O Network Managerze pewnie można by napisać książkę. Opisałem tutaj jedynie niewielki fragment jego funkcjonalności, ot tak na zachętę. Jego wielką siłą jest CLI, które we współpracy z bash-completion i wbudowanycm helpem, daje bardzo wygodne i intuicyjne narzędzie do manipulowania ustawieniami sieci, i to bez konieczności ręcznego prucia plików z /etc/sysconfig/network-scripts i okolic :-)