Wyszukiwanie w witrynie

Jak skonfigurować sieć IP za pomocą „nmcli” w systemie Linux


Jako administrator Linuksa masz różne narzędzia do konfiguracji połączeń sieciowych, takie jak nmtui, NetworkManager z graficznym interfejsem użytkownika GNOME i oczywiście nmcli (narzędzie wiersza poleceń menedżera sieci).

Zaobserwowałem, że wielu administratorów używa nmtui ze względu na jego prostotę. Jednak użycie nmcli oszczędza czas, zwiększa pewność siebie, umożliwia integrację ze skryptami i jest głównym narzędziem do rozwiązywania problemów z siecią serwerów Linux, szybko przywracając jej funkcjonalność.

Po zauważeniu licznych komentarzy proszących o pomoc dotyczącą nmcli, zdecydowałem się napisać ten artykuł. Oczywiście powinieneś zawsze uważnie czytać strony podręcznika (są one dla ciebie źródłem nr 1). Moim celem jest zaoszczędzenie Twojego czasu i dostarczenie przydatnych wskazówek.

Składnia polecenia nmcli

Składnia nmcli jest następująca:

nmcli [OPTIONS] OBJECT {COMMAND | help}

Gdzie OBJECT jest jednym z ogólnych, sieciowych, radiowych, połączeń, urządzeń i agentów.

Sprawdź stan urządzenia sieciowego w systemie Linux

Dobrym punktem wyjścia byłoby sprawdzenie naszych urządzeń:

nmcli dev status

DEVICE      TYPE      STATE         CONNECTION 
docker0     bridge    connected     docker0    
virbr0      bridge    connected     virbr0     
enp0s3      ethernet  connected     enp0s3     
virbr0-nic  ethernet  disconnected  --         
lo          loopback  unmanaged     --         

Jak widzimy w pierwszej kolumnie znajduje się lista naszych urządzeń sieciowych. Mamy jedną kartę sieciową o nazwie enp0s3. Na Twoim komputerze możesz zobaczyć różne nazwy.

Nazwy zależą od typu karty sieciowej (czy jest ona zintegrowana, czy karta PCI itp.). W ostatniej kolumnie widzimy nasze pliki konfiguracyjne, za pomocą których nasze urządzenia łączą się z siecią

Łatwo zrozumieć, że nasze urządzenia same w sobie nie są w stanie nic zrobić. Potrzebują, abyśmy utworzyli plik konfiguracyjny, w którym poinstruujemy ich, jak uzyskać łączność sieciową. Pliki te nazywane są także „profilami połączeń” i znajdziemy je w katalogu /etc/sysconfig/network-scripts.

cd /etc/sysconfig/network-scripts/
ls
Przykładowe wyjście
ifcfg-enp0s3  ifdown-isdn      ifup          ifup-plip      ifup-tunnel
ifcfg-lo      ifdown-post      ifup-aliases  ifup-plusb     ifup-wireless
ifdown        ifdown-ppp       ifup-bnep     ifup-post      init.ipv6-global
ifdown-bnep   ifdown-routes    ifup-eth      ifup-ppp       network-functions
ifdown-eth    ifdown-sit       ifup-ib       ifup-routes    network-functions-ipv6
ifdown-ib     ifdown-Team      ifup-ippp     ifup-sit
ifdown-ippp   ifdown-TeamPort  ifup-ipv6     ifup-Team
ifdown-ipv6   ifdown-tunnel    ifup-isdn     ifup-TeamPort

Jak widać, pliki o nazwach rozpoczynających się od 'ifcfg-' (konfiguracja interfejsu) są profilami połączeń. Kiedy tworzymy nowe połączenie lub modyfikujemy istniejące za pomocą nmcli lub nmtui, wyniki są zapisywane tutaj jako profile połączeń.

Pokażę ci dwa z nich z mojego komputera, jeden z konfiguracją DHCP i jeden ze statycznym adresem IP.

cat ifcfg-static1
cat ifcfg-Myoffice1

Zdajemy sobie sprawę, że niektóre właściwości mają różne wartości, a inne nie istnieją, jeśli nie są konieczne.

Rzućmy okiem na najważniejsze.

  • TYPE – mamy tutaj typ Ethernet. Moglibyśmy mieć także WiFi, zespół, więź i inne.
  • DEVICE – nazwa urządzenia sieciowego powiązanego z tym profilem.
  • BOOTPROTO – jeśli ma wartość „dhcp”, to nasz profil połączenia uzyskuje dynamiczny adres IP z serwera DHCP. Jeśli ma wartość „brak”, oznacza to, że nie używa dynamicznego adresu IP i prawdopodobnie przypisujemy statyczny adres IP.
  • IPADDR – to statyczny adres IP, który przypisujemy do naszego profilu.
  • PREFIX – maska podsieci. Wartość 24 oznacza 255.255.255.0. Maskę podsieci można lepiej zrozumieć, zapisując jej format binarny. Na przykład wartości 16, 24 i 26 oznaczają, że pierwsze 16, 24< lub odpowiednio 26 bitów jest ustawione na 1, a pozostałe na 0. Określa to adres sieciowy i zakres adresów IP, które można przypisać.
  • GATEWAY – adres IP bramy.
  • DNS1, DNS2 – dwa serwery DNS, z których chcemy skorzystać.
  • ONBOOT – jeśli ma wartość „tak” oznacza to, że przy uruchomieniu nasz komputer odczyta ten profil i spróbuje przypisać go do swojego urządzenia.

Sprawdź połączenie sieciowe w systemie Linux

Przejdźmy teraz dalej i sprawdźmy nasze połączenia:

nmcli con show

Ostatnia kolumna urządzeń pomaga nam zrozumieć, które połączenie jest „UP” i działa, a które nie. Na powyższym obrazku widać dwa aktywne połączenia: Myoffice1 i enp0s8.

Wskazówka: jeśli chcesz zobaczyć tylko aktywne połączenia, wpisz:

nmcli con show -a

Wskazówka: możesz użyć przycisku automatycznego uzupełniania Tab, gdy używasz nmcli, ale lepiej jest użyć minimalny format polecenia.

Zatem następujące polecenia są sobie równe:

nmcli connection show
nmcli con show
nmcli c s

Sprawdź adres IP w systemie Linux

Jeśli sprawdzę adresy IP moich urządzeń:

ip a

Widzę, że moje urządzenie enp0s3 pobrało adres IP 192.168.1.6 z serwera DHCP, ponieważ profil połączenia Myoffice1, który jest uruchomiony, ma konfigurację DHCP.

Jeśli „uruchom” mój profil połączenia o nazwie static1, moje urządzenie przyjmie statyczny adres IP 192.168.1.40 zdefiniowany w profil połączenia.

nmcli con down Myoffice1 ; nmcli con up static1
nmcli con show

Zobaczmy jeszcze raz adres IP:

ip a

Możemy stworzyć nasz pierwszy profil połączenia. Minimalne właściwości, które musimy zdefiniować, to type, ifname i con-name:

  • type – dla typu połączenia.
  • ifname – dla nazwy urządzenia, która jest przypisana do naszego połączenia.
  • con-name – jako nazwa połączenia.

Tworzenie nowego połączenia Ethernet w systemie Linux

Utwórzmy nowe połączenie Ethernet o nazwie Myhome1, przypisanej do urządzenia enp0s3:

nmcli con add type ethernet con-name Myhome1 ifname enp0s3

Sprawdź jego konfigurację:

cat ifcfg-Myhome1

Jak widać ma BOOTPROTO=dhcp, ponieważ nie podaliśmy żadnego statycznego adresu IP.

Wskazówka: możemy modyfikować dowolne połączenie za pomocą polecenia „nmcli con mod”. Jeśli jednak zmodyfikujesz połączenie DHCP i zmienisz je na statyczne, nie zapomnij zmienić go „ipv4.method ” z „auto ” na „manual ” . W przeciwnym razie otrzymasz dwa adresy IP: jeden z serwera DHCP i adres statyczny.

Stwórzmy nowy profil połączenia Ethernet o nazwie static2, który zostanie przypisany do urządzenia enp0s3, ze statycznym adresem IP 192.168.1.50, podsiecią maska 255.255.255.0=24, i brama 192.168.1.1.

nmcli con add type ethernet con-name static2 ifname enp0s3 ip4 192.168.1.50/24 gw4 192.168.1.1

Sprawdź jego konfigurację:

cat ifcfg-static2

Zmodyfikuj serwery DNS w systemie Linux

Zmodyfikujmy ostatni profil połączenia i dodajmy dwa serwery dns.

nmcli con mod static2 ipv4.dns “8.8.8.8 8.8.4.4”

Wskazówka: jest coś, na co musisz zwrócić uwagę: właściwości adresu IP i bramy mają inne nazwy po dodaniu i modyfikacji połączenia. Kiedy dodajesz połączenia, używasz „ip4 ” i „gw4 ”, natomiast gdy je modyfikujesz, używasz „ipv4 ” i „ gwv4”.

Uruchom połączenie Ethernet w systemie Linux

Przywołajmy teraz ten profil połączenia:

nmcli con down static1 ; nmcli con up static2

Jak widać, urządzenie enp0s3 ma teraz adres IP 192.168.1.50.

ip a

Wskazówka: istnieje wiele właściwości, które możesz modyfikować. Jeśli nie pamiętasz ich na pamięć, możesz sobie pomóc, wpisując „nmcli con show ”, a następnie nazwę połączenia:

nmcli con show static2

Możesz modyfikować wszystkie te właściwości pisane małymi literami.

Na przykład: gdy wyłączysz profil połączenia, NetworkManager wyszukuje inny profil połączenia i wyświetla go automatycznie. (Pozostawiam to jako ćwiczenie, aby to sprawdzić). Jeśli nie chcesz, aby Twój profil połączenia łączył się automatycznie:

nmcli con mod static2 connection.autoconnect no

Ostatnie ćwiczenie jest bardzo przydatne: utworzyłeś profil połączenia, ale chcesz, aby korzystali z niego konkretni użytkownicy. Warto klasyfikować swoich użytkowników!

Ustaw uprawnienia do połączenia Ethernet na Użytkownik w systemie Linux

Zezwalamy tylko użytkownikowi stella na korzystanie z tego profilu:

nmcli con mod static2 connection.permissions stella

Wskazówka: jeśli chcesz nadać uprawnienia więcej niż jednemu użytkownikowi, musisz wpisać user:user1,user2 bez spacji między nimi:

nmcli con mod static2 connection.permissions user:stella,john

Jeśli zalogujesz się jako inny użytkownik, nie będziesz mógł uruchomić tego profilu połączenia:

nmcli con show
nmcli con up static2
ls /etc/sysconfig/network-scripts

Komunikat o błędzie informuje, że połączenie „static2” nie istnieje, nawet jeśli widzimy, że istnieje. Dzieje się tak, ponieważ bieżący użytkownik nie ma uprawnień do nawiązania tego połączenia.

Wniosek: nie wahaj się użyć nmcli. To proste i pomocne.