Interfejs CLI do zarządzania NetworkManager

Konfiguracja w systemie Fedora jest zapisywana w katalogu /etc/NetworkManager/system-connections

Konfiguracja nowego połączenia sieciowego

Wyświetlenie wszystkich połączeń sieciowych

nmcli con show

NAME  UUID                                  TYPE      DEVICE
eno1  f0b60ece-f8c6-30b4-a003-e3c66913d171  ethernet  eno1
eno1  cae71dca-42f4-42d5-9fdd-ae3bd40fa82f  ethernet  --
eno2  23b66fa1-54c6-48ca-8484-08d5b1cdd9db  ethernet  --
eno3  691a2ddd-af4a-485a-a556-e8c29c8af34c  ethernet  --
eno4  206d7537-a56c-4987-9739-649affb76b0c  ethernet  --
nmcli dev status

DEVICE  TYPE      STATE        CONNECTION
eno1    ethernet  connected    eno1
eno2    ethernet  unavailable  --
eno3    ethernet  unavailable  --
eno4    ethernet  unavailable  --
lo      loopback  unmanaged    --

Konfiguracja połączenia eno1

nmcli con mod eno1 ipv4.addresses 192.168.2.20/24
nmcli con mod eno1 ipv4.gateway 192.168.2.1
nmcli con mod eno1 ipv4.dns "194.204.159.1 194.204.152.34"
nmcli con mod eno1 ipv4.method manual

Ostatnie polecenia gdzie określamy jak interfejs ma być konfigurowany czyli w tym przypadku manual jest bardzo istotne. Standardowo jest ustawione na DHCP, i nawet jeśli zostanie nadany statyczny adres IP to co jakiś czas będzie uruchamiał się client DHCP próbujący uzyskać konfigurację sieciową. Wygląda to na błąd w systemie NetworkManager.

Zastosowanie zmian dla danego interfejsu

nmcli con up eno1

Tutaj up oznacza tak naprawdę pobranie zmian i ich zastosowanie, także nie należy się sugerować słowem up jako podnoszący interfejs.

Jak już interfejs zostanie skonfigurowany i będzie nawiązane połączenie, każdorazowa zmiana konfiguracji może być potwierdzona za pomocą polecenia

nmcli device reapply eno1

Modyfikacji bramy sieciowej

nmcli connection mod ens224 ipv4.gateway 192.168.1.2
nmcli device reapply ens224

Parametry dla podłączenia z siecią bezprzewodową

  • <wiface> — nazwa interfejsu wifi

  • <ssid> — SSID sieci wifi do podłączenia

  • <pass> — hasło do sieci wifi

nmcli d wifi connect <ssid> password <pass> iface <wiface>

Rozłączenie z siecią wifi

  • <wiface> — nazwa interfejsu bezprzewodowego

nmcli d wifi disconnect iface <wiface>

Pobranie stanu sieci wifi (włączona / wyłączona)

nmcli radio wifi

Włączenie / wyłączenie wifi

nmcli radio wifi <on|off>

Wyświetlenie wszystkich dostępnych punktów dostępowych wifi

nmcli dev wifi list

Odświeżenie dostępnych połączeń wifi

nmcli dev wifi rescan

Wyświetlenie wszystkich dostępnych połączeń

nmcli con

Wyświetlenie tylko aktywnych połączeń

nmcli con show --active

NAME     UUID                                  TYPE      DEVICE
enp0s25  5fd532fe-6a45-38df-a1c4-33f1a7b7ed9d  ethernet  enp0s25

Wyświetlenie stanu połączeń

nmcli dev status

DEVICE   TYPE      STATE         CONNECTION
enp0s25  ethernet  connected     enp0s25
wlp3s0   wifi      disconnected  --
lo       loopback  unmanaged     --

Wyświetlenie pojedynczego ustawnia np. adresu IP dla połączenia

nmcli -g ipv4.addresses connection show enp0s3

Wyświetlenie kilku parametrów dla połączenia

nmcli -g ipv4.address,ipv4.dns connection show enp0s3

Dodanie dynamicznego połączenia kablowego

  • <name> — nazwa połączenia

  • <iface_name> — nazwa interfejsu

nmcli con add type ethernet con-name <name> ifname <iface_name>

Ustawienie adresu IP dla połączenia

nmcli con add type ethernet con-name enp0s3 ifname enp0s3 \
ip4 192.168.88.210/24 gw4 192.168.88.1 ipv4.dns "8.8.8.8 8.8.4.4"

Dodanie kolejnego adresu IP dla połączenia

nmcli con mod enp0s3 +ipv4.address 192.168.6.210/24

Import połączenia OpenVPN z pliku

nmcli con import type openvpn file <path_to_ovpn_file>

Podniesienie (włączenie) kablowego interfejsu sieciowego

nmcli con up <name>

Np. uruchomienie połączenia OpenVPN o nazwie Z-VPN

nmcli con up Z-VPN

Zmiana adresu IP

nmcli con mod enps03 ipv4.addresses 192.168.2.20/24
nmcli connection modify ae6db6d2-1bcf-313d-a9c2-abd45494446a ipv4.address 192.168.1.2/24

Zmiana konfiguracji

Najpierw poszukamy UUID połączenia

sudo nmcli connection show

NAME                UUID                                  TYPE      DEVICE
enp0s3              ae6db6d2-1bcf-313d-a9c2-abd45494446a  ethernet  enp0s3
Wired connection 1  db77a63d-adfd-39f7-8c73-130375406085  ethernet  enp0s8

Zmieniamy parametry połczenia

sudo nmcli connection modify ae6db6d2-1bcf-313d-a9c2-abd45494446a ipv4.address 192.168.1.2/24
sudo nmcli connection modify ae6db6d2-1bcf-313d-a9c2-abd45494446a ipv4.gateway 192.168.1.1
sudo nmcli connection modify ae6db6d2-1bcf-313d-a9c2-abd45494446a ipv4.dns 1.1.1.1
sudo nmcli connection modify ae6db6d2-1bcf-313d-a9c2-abd45494446a ipv4.method manual

Teraz należy wykonać restart systemu lub restart ustawień sieciowych.

Restart sieci

Jest to dość ryzykowna operacja zwłaszcza jeśli pracujemy zdalnie, lepiej w miarę możliwości utworzyć dodatkowy interfejs sieciowy i go skonfigurować.

Restart składa się z dwóch poleceń jeśli nie zawrzemy ich jako kolejne operacje możemy stracić połączenie sieciowe.

Teoretycznie można użyć składni && jednak jeśli wyłączenie sieci się nie powiedzie lub trochę się powiedzie :) to jesteśmy w czarnej dupie. Lepiej użyć konstrukcji z użyciem ;. Idealinie byłoby to zrobić z konta root bez angażowania sudo.

sudo nmcli networking off ; sudo nmcli networking on

Inny sposób, najpierw znaleziemy odpowiednie połączenie, które chcemy zrestartować:

sudo nmcli connection show

NAME                UUID                                  TYPE      DEVICE
enp0s3              ae6db6d2-1bcf-313d-a9c2-abd45494446a  ethernet  enp0s3
Wired connection 1  db77a63d-adfd-39f7-8c73-130375406085  ethernet  enp0s8

Jak widać są tu dwa połączenia powiedzmy że nas interesuje restart urządzenia enp0s3

sudo nmcli connection down ae6db6d2-1bcf-313d-a9c2-abd45494446a ; sudo nmcli connection up ae6db6d2-1bcf-313d-a9c2-abd45494446a

Lub jeśli chcemy nanieść tylko zmiany możemy skorzystać z dwóch komend

Komenda up

nmcli con up eno1

Komenda reapply

nmcli device reapply eno1

Zmiana nazwy połączenia

nmcli connection modify "Wired connection 1" connection.interface-name "external-2"
nmcli connection modify "Wired connection 1" connection.id "external-2"

Wyłączenie IPv6

IPv6 należy wyłączyć dla każdego połączenia osobno

nmcli connection modify "Wired connection 1" ipv6.method "disabled"

Wyświetlenie pola autoconnect we wszystkich połączeniach

nmcli -f name,autoconnect connection
NAME                AUTOCONNECT
red-5g              tak
red-new             tak
vpn                 tak

Modifikacja pola autoconnect

nmcli connection mod 5b9af44e-e775-4c67-8a26-8e195ed72bba connection.autoconnect yes

Date: 2024-06-04-12:19:07