Zarządzanie połączeniami sieciowymi w systemie Linux za pomocą narzędzia konsoli nmcli

Wykorzystaj w pełni narzędzie do zarządzania siecią NetworkManager dostępne z wiersza poleceń systemu Linux, korzystając z narzędzia nmcli.

Zarządzanie połączeniami sieciowymi w systemie Linux za pomocą narzędzia konsoli nmcli

Użyteczność nmcli bezpośrednio wywołuje API, aby uzyskać dostęp do funkcji NetworkManager.

Pojawił się w 2010 roku i dla wielu stał się alternatywnym sposobem konfiguracji interfejsów i połączeń sieciowych. Chociaż niektórzy nadal korzystają ifconfig. Ponieważ nmcli to narzędzie interfejsu wiersza poleceń (CLI) zaprojektowane do użytku w oknach terminali i skryptach, jest idealne dla administratorów systemów pracujących bez GUI.

Składnia polecenia ncmli

Ogólnie składnia wygląda następująco:

$ nmcli <options> <section> <action>

  • opcje to parametry określające subtelności działania nmcli,
  • sekcja (sekcja) - określa, z jakich funkcji narzędzia skorzystać,
  • akcja - pozwala określić, co faktycznie należy zrobić.

W sumie jest 8 sekcji, z których każda jest powiązana z określonym zestawem poleceń (akcji):

  • Pomoc zapewnia pomoc dotyczącą poleceń ncmcli i ich użycia.
  • Ogólne zwraca status NetworkManager i konfigurację globalną.
  • Sieci zawiera polecenia służące do sprawdzania stanu połączenia sieciowego i włączania/wyłączania połączeń.
  • radio zawiera polecenia służące do sprawdzania stanu połączenia sieci Wi-Fi i włączania/wyłączania połączeń.
  • monitor zawiera polecenia umożliwiające monitorowanie aktywności NetworkManagera i obserwację zmian stanu połączeń sieciowych.
  • Statystyki z konta zawiera polecenia służące do zarządzania interfejsami sieciowymi, dodawania nowych połączeń i usuwania istniejących.
  • Urządzenie używane głównie do zmiany parametrów związanych z urządzeniem (takich jak nazwa interfejsu) lub do łączenia urządzeń przy użyciu istniejącego połączenia.
  • Tajemnica rejestruje nmcli jako „tajnego agenta” NetworkManagera, który nasłuchuje tajnych wiadomości. Ta sekcja jest rzadko używana, ponieważ nmcli domyślnie działa w ten sposób podczas łączenia się z sieciami.

Proste przykłady

Zanim zaczniesz, upewnij się, że NetworkManager jest uruchomiony i nmcli może się z nim komunikować:

$ nmcli general
STATE      CONNECTIVITY  WIFI-HW  WIFI     WWAN-HW  WWAN    
connected  full          enabled  enabled  enabled  enabled

Praca często zaczyna się od przejrzenia wszystkich profili połączeń sieciowych:

$ nmcli connection show
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  ac3241e4-b424-35d6-aaa7-07498561688d  ethernet  enp0s3
Wired connection 2  2279d917-fa02-390c-8603-3083ec5a1d3e  ethernet  enp0s8
Wired connection 3  52d89737-de92-35ec-b082-8cf2e5ac36e6  ethernet  enp0s9

To polecenie używa działania pokaż sekcję Połączenie.

Na komputerze testowym działa system Ubuntu 20.04. W tym przypadku znaleźliśmy trzy połączenia przewodowe: enp0s3, enp0s8 i enp0s9.

Zarządzać połączeniami

Ważne jest, aby zrozumieć, że w nmcli pod pojęciem połączenia rozumiemy jednostkę zawierającą wszystkie informacje o połączeniu. Inaczej mówiąc, jest to konfiguracja sieci. Połączenie zawiera wszystkie informacje związane z połączeniem, w tym informacje o warstwie łącza i adresie IP. Są to warstwy 2 i 3 w modelu sieciowym OSI.

Konfigurując sieć w systemie Linux, zwykle konfigurujesz połączenia, które zostaną powiązane z urządzeniami sieciowymi, które z kolei są interfejsami sieciowymi zainstalowanymi na komputerze. Gdy urządzenie korzysta z połączenia, uważa się je za aktywne lub z podwyższonym poziomem uprawnień. Jeśli połączenie nie jest używane, jest nieaktywne lub resetowane.

Dodawanie połączeń sieciowych

Narzędzie ncmli umożliwia szybkie dodawanie i natychmiastową konfigurację połączeń. Na przykład, aby dodać połączenie przewodowe 2 (z enp0s8), musisz uruchomić następujące polecenie jako superużytkownik:

$ sudo nmcli connection add type ethernet ifname enp0s8
Connection 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) successfully added.

W opcji type wskazujemy, że będzie to połączenie Ethernet, natomiast w opcji ifname (nazwa interfejsu) wskazujemy interfejs sieciowy, z którego chcemy skorzystać.

Oto co się stanie po uruchomieniu polecenia:

$ nmcli connection show
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  ac3241e4-b424-35d6-aaa7-07498561688d  ethernet  enp0s3
Wired connection 2  2279d917-fa02-390c-8603-3083ec5a1d3e  ethernet  enp0s8
Wired connection 3  52d89737-de92-35ec-b082-8cf2e5ac36e6  ethernet  enp0s9
ethernet-enp0s8     09d26960-25a0-440f-8b20-c684d7adc2f5  ethernet  --  

Utworzono nowe połączenie, ethernet-enp0s8. Przypisano mu identyfikator UUID, a typem połączenia był Ethernet. Podnieśmy go za pomocą polecenia up:

$ nmcli connection up ethernet-enp0s8
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)

Sprawdźmy jeszcze raz listę aktywnych połączeń:

$ nmcli connection show --active
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  ac3241e4-b424-35d6-aaa7-07498561688d  ethernet  enp0s3
ethernet-enp0s8     09d26960-25a0-440f-8b20-c684d7adc2f5  ethernet  enp0s8
Wired connection 3  52d89737-de92-35ec-b082-8cf2e5ac36e6  ethernet  enp0s9

Dodano nowe połączenie ethernet-enp0s8, jest ono aktywne i wykorzystuje interfejs sieciowy enp0s8.

Konfigurowanie połączeń

Narzędzie ncmli umożliwia łatwą zmianę parametrów istniejących połączeń. Na przykład musisz zmienić swój dynamiczny adres IP (DHCP) na statyczny adres IP.

Załóżmy, że musimy ustawić adres IP na 192.168.4.26. W tym celu używamy dwóch poleceń. Pierwsza ustawi bezpośrednio adres IP, a druga przełączy sposób ustawiania adresu IP na ręczny:

$ nmcli connection modify ethernet-enp0s8 ipv4.address 192.168.4.26/24
$ nmcli connection modify ethernet-enp0s8 ipv4.method manual

Nie zapomnij także ustawić maski podsieci. W przypadku naszego połączenia testowego jest to 255.255.255.0 lub z /24 w przypadku routingu bezklasowego (CIDR).

Aby zmiany odniosły skutek, należy dezaktywować, a następnie ponownie aktywować połączenie:

$ nmcli connection down ethernet-enp0s8
Connection 'ethernet-enp0s8' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
$ nmcli connection up ethernet-enp0s8
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveC

Jeśli wręcz przeciwnie, musisz zainstalować DHCP, użyj opcji automatycznej zamiast ręcznej:

$ nmcli connection modify ethernet-enp0s8 ipv4.method auto

Praca z urządzeniami

W tym celu używamy sekcji Urządzenie.

Sprawdzanie stanu urządzenia

$ nmcli device status
DEVICE  TYPE      STATE      CONNECTION        
enp0s3  ethernet  connected  Wired connection 1
enp0s8  ethernet  connected  ethernet-enp0s8    
enp0s9  ethernet  connected  Wired connection 3
lo      loopback  unmanaged  --  

Żądanie informacji o urządzeniu

W tym celu należy skorzystać z akcji show z sekcji Urządzenie (należy podać nazwę urządzenia). Narzędzie wyświetla wiele informacji, często na kilku stronach.
Przyjrzyjmy się interfejsowi enp0s8, z którego korzysta nasze nowe połączenie. Upewnijmy się, że używa dokładnie tego adresu IP, który ustawiliśmy wcześniej:

$ nmcli device show enp0s8
GENERAL.DEVICE:                         enp0s8
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         08:00:27:81:16:20
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     ethernet-enp0s8
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/6
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         192.168.4.26/24
IP4.GATEWAY:                            --
IP4.ROUTE[1]:                           dst = 192.168.4.0/24, nh = 0.0.0.0, mt = 103
IP6.ADDRESS[1]:                         fe80::6d70:90de:cb83:4491/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 103
IP6.ROUTE[2]:                           dst = ff00::/8, nh = ::, mt = 256, table=255

Informacji jest całkiem sporo. Podkreślmy najważniejsze:

  • Nazwa interfejsu sieciowego: enp0s8.
  • Rodzaj połączenia: przewodowe połączenie Ethernet.
  • Widzimy adres MAC urządzenia.
  • Określono maksymalną jednostkę transmisji (MTU). — maksymalny rozmiar użytecznego bloku danych w jednym pakiecie, który może zostać przesłany przez protokół bez fragmentacji.
  • Urządzenie aktualnie podłączony.
  • Nazwa połączeniaktóre urządzenie używa: Ethernet-enp0s8.
  • Urządzenie korzysta z Adres IP, który zainstalowaliśmy wcześniej: 192.168.4.26/24.

Inne informacje dotyczą domyślnych parametrów routingu i bramy połączenia. Zależą one od konkretnej sieci.

Interaktywny edytor nmcli

nmcli posiada także prosty, interaktywny edytor, który może być dla niektórych wygodniejszy w obsłudze. Aby na przykład uruchomić go na połączeniu Ethernet-enp0s8, użyj działania edytować:

$ nmcli connection edit ethernet-enp0s8

Zawiera także małą pomoc, która jednak ma mniejszy rozmiar niż wersja konsolowa:

===| nmcli interactive connection editor |===
Editing existing '802-3-ethernet' connection: 'ethernet-enp0s8'
Type 'help' or '?' for available commands.
Type 'print' to show all the connection properties.
Type 'describe [<setting>.<prop>]' for detailed property description.
You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, match, ipv4, ipv6, tc, proxy
nmcli>

Jeśli wpiszesz polecenie print i naciśniesz Enter, nmcli wyświetli wszystkie właściwości połączenia:

===============================================================================
                 Connection profile details (ethernet-enp0s8)
===============================================================================
connection.id:                          ethernet-enp0s8
connection.uuid:                        09d26960-25a0-440f-8b20-c684d7adc2f5
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              enp0s8
connection.autoconnect:                 yes
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.multi-connect:               0 (default)
connection.auth-retries:                -1
connection.timestamp:                   1593967212
connection.read-only:                   no
connection.permissions:                 --
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1 (default)
connection.secondaries:                 --

Na przykład, aby ustawić połączenie na DHCP, wpisz goto ipv4 i kliknij Wchodzę:

nmcli> goto ipv4
You may edit the following properties: method, dns, dns-search, 
dns-options, dns-priority, addresses, gateway, routes, route-metric, 
route-table, routing-rules, ignore-auto-routes, ignore-auto-dns, 
dhcp-client-id, dhcp-iaid, dhcp-timeout, dhcp-send-hostname, 
dhcp-hostname, dhcp-fqdn, dhcp-hostname-flags, never-default, may-fail, 
dad-timeout
nmcli ipv4>

Następnie napisz set method auto i kliknij Wchodzę:

nmcli ipv4> set method auto
Do you also want to clear 'ipv4.addresses'? [yes]:

Jeśli chcesz wyczyścić statyczny adres IP, kliknij Wchodzę. W przeciwnym razie wpisz nie i naciśnij klawisz Enter. Możesz go zapisać, jeśli uważasz, że będzie Ci potrzebny w przyszłości. Ale nawet przy zapisanym statycznym adresie IP, DHCP będzie używany, jeśli metoda jest ustawiona na automatyczną.

Użyj polecenia save, aby zapisać zmiany:

nmcli ipv4> save
Connection 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) successfully updated.
nmcli ipv4>

Wpisz Quit, aby zamknąć edytor interaktywny nmcli. Jeśli zmienisz zdanie co do wyjścia, użyj komendy back.

I to nie wszystko

Otwórz edytor interaktywny nmcli i zobacz, ile jest ustawień i ile właściwości ma każde ustawienie. Edytor interaktywny to świetne narzędzie, ale jeśli chcesz używać nmcli w jednowierszowych tekstach lub skryptach, będziesz potrzebować zwykłej wersji wiersza poleceń.

Skoro znasz już podstawy, sprawdź strona podręcznika nmcli, aby zobaczyć, jak jeszcze może Ci pomóc.

O prawach reklamy

Epickie serwery - jest serwery wirtualne w systemie Windows lub Linux z wydajnymi procesorami z rodziny AMD EPYC i bardzo szybkimi dyskami Intel NVMe. Pośpiesz się z zamówieniem!

Zarządzanie połączeniami sieciowymi w systemie Linux za pomocą narzędzia konsoli nmcli

Źródło: www.habr.com

Dodaj komentarz