Използвайте пълният капацитет на инструмента за управление на мрежови сврзвания NetworkManager в командния ред на Linux с помощта на инструмента nmcli.

Утилита обърква се директно с API за достъп до функциите на NetworkManager.
Той се появи през 2010 година и за много хора стана алтернативен начин за конфигуриране на мрежовите интерфейси и сврзвания. Въпреки това, някои все още използват . Тъй като nmcli е инструмент за команден ред (CLI), предназначен за работа в терминални прозорци и скриптове, той е идеален за системни администратори, които работят без GUI.
Синтаксис на командите ncmli
В общия случай синтаксиса изглежда така:
$ nmcli - options — параметри, които определят нюансите на работата на nmcli,
- section (секция) — определя какви функции на инструмента да се използват,
- action (действие) — позволява да се посочи какво точно трябва да се извърши.
Съществуват общо 8 секции, всяка от които е свързана с определен набор от команди (действия):
- Помощ предоставя справка за командите ncmcli и тяхното използване.
- General възвръща статуса на NetworkManager и глобалната конфигурация.
- Нетворкинг включва команди за запитване на състоянието на мрежовото сврзване и включване / изключване на сврзвания.
- Radio включва команди за запитване на състоянието на сврзването с WiFi и включване / изключване на сврзвания.
- Монитор включва команди за мониторинг на активността на NetworkManager и наблюдение на промените в състоянието на мрежовите сврзвания.
- Connection включва команди за управление на мрежовите интерфейси, за добавяне на нови сврзвания и изтриване на съществуващи.
- Device основно се използва за промяна на параметрите, свързани с устройствата (например, името на интерфейса) или за свързване на устройства с помощта на съществуващо сврзване.
- Secret регистрира nmcli като „секретен агент“ на NetworkManager, който слуша тайни съобщения. Тази секция рядко се използва, тъй като nmcli по подразбиране работи именно по този начин при свързване към мрежи.
Прости примери
Преди да започнете, уверете се, че NetworkManager е стартиран и nmcli може да комуникира с него:
$ nmcli general
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
connected full enabled enabled enabled enabledЧесто работата започва с преглед на всички профили на мрежовите сврзвания:
$ 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Тази команда използва действие show за секция Connection.
На тестовата машина работи Ubuntu 20.04. В този случай намерихме три проводни връзки: enp0s3, enp0s8 и enp0s9.
Управление на връзките
Важно е да разберете, че в nmcli термина Connection представлява единица, която съдържа цялата информация за връзката. С други думи, това е конфигурация на мрежата. Връзката инкапсулира цялата информация, свързана с връзките, включително информация на канално ниво и информация за IP адресиране. Това е ниво 2 и ниво 3 в мрежовата модел на OSI.
Когато настройвате мрежата в Linux, обикновено настройвате връзки, които в крайна сметка ще бъдат свързани с мрежови устройства, които от своя страна са мрежови интерфейси, инсталирани на компютъра. Когато устройството използва връзка, то се счита за активно или активно. Ако връзката не се използва, тя е неактивна или нулирана.
Добавяне на мрежови връзки
Утилитата nmcli позволява бързо добавяне и незабавно конфигуриране на връзки. Например, за да добавите Wired connection 2 (с enp0s8), трябва от името на суперпотребителя да стартирате следната команда:
$ sudo nmcli connection add type ethernet ifname enp0s8
Connection 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) успешно добавен.В опцията type посочваме, че това ще бъде Ethernet връзка, а в опцията ifname (име на интерфейса) посочваме мрежовия интерфейс, който искаме да използваме.
Ето какво ще стане след изпълнението на командата:
$ 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 -- Създадено е ново съединение, ethernet-enp0s8. На него е назначен UUID, тип връзка — Ethernet. Нека го активираме с командата up:
$ nmcli connection up ethernet-enp0s8
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)Още веднъж проверяваме списъка с активни връзки:
$ 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Добавено ново Ethernet соединение enp0s8, което е активно и използва мрежовия интерфейс enp0s8.
Настройка на връзките
Командният инструмент ncmli позволява лесно да променяте параметрите на вече съществуващи връзки. Например, ако искате да смените динамичния (DHCP) на статичен IP адрес.
Нека да предположим, че трябва да зададем IP адрес равен на 192.168.4.26. За това ще използваме две команди. Първата директно задава IP адреса, а втората променя метода за задаване на IP адрес на "ръчно" (manual):
$ nmcli connection modify ethernet-enp0s8 ipv4.address 192.168.4.26/24
$ nmcli connection modify ethernet-enp0s8 ipv4.method manualНе забравяйте също да зададете маската на подсет. За нашето тестово свързване това е 255.255.255.0 или с /24 за безкласова маршрутизация (CIDR).
За да влязат промените в сила, трябва да деактивирате и след това да активирате отново връзката:
$ nmcli connection down ethernet-enp0s8
Връзката 'ethernet-enp0s8' успешно деактивирана (D-Bus активен път: /org/freedesktop/NetworkManager/ActiveConnection/4)
$ nmcli connection up ethernet-enp0s8
Връзката успешно активирана (D-Bus активен път: /org/freedesktop/NetworkManager/ActiveCАко по-скоро искате да зададете DHCP, вместо manual, използвайте auto:
$ nmcli connection modify ethernet-enp0s8 ipv4.method autoРабота с устройства
За това използваме секцията Device.
Проверка на статуса на устройствата
$ nmcli device status
УСТРОЙСТВО ТИП СЪСТОЯНИЕ ВРЪЗКА
enp0s3 ethernet свързано Wired connection 1
enp0s8 ethernet свързано ethernet-enp0s8
enp0s9 ethernet свързано Wired connection 3
lo loopback неуправлявано -- Запитване за информация за устройството
За това използваме действието show от секцията Device (необходимо е задължително да укажете името на устройството). Командният инструмент показва достатъчно много информация, често на няколко страници.
Нека да разгледаме интерфейса enp0s8, който използва нашето ново свързване. Нека да се уверим, че той използва точно IP адреса, който зададохме по-рано:
$ nmcli device show enp0s8
GENERAL.DEVICE: enp0s8
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 08:00:27:81:16:20
GENERAL.MTU: 1500
GENERAL.STATE: 100 (свързан)
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Информацията е доста обширна. Нека извадим основното:
- Име на мрежовия интерфейс: enp0s8.
- Тип на свързване: проводно Ethernet свързване.
- Виждаме MAC адреса на устройството.
- Посочен е Maximum transmission unit (MTU) — максималният размер на полезния данни в един пакет, който може да бъде предаден от протокола без фрагментиране.
- Устройство в момента е свързано.
- Име на свързването, което използва устройството: ethernet-enp0s8.
- Устройството използва този IP адрес, който сме задали по-рано: 192.168.4.26/24.
Другата информация се отнася до подразбиращите се параметри на маршрутизацията и шлюза на свързването. Те зависят от конкретната мрежа.
Интерактивен редактор nmcli
nmcli разполага и с простичък интерактивен редактор, в който на някого може да му е по-удобно да работи. За да го стартирате, например, за свързването ethernet-enp0s8, използвайте действие edit:
$ nmcli connection edit ethernet-enp0s8Той също има малка помощ, която, обаче, е по-малка от конзолната версия:
===| nmcli interactive connection editor |===
Редактиране на съществуващото '802-3-ethernet' свързване: 'ethernet-enp0s8'
Напишете 'help' или '?' за наличните команди.
Напишете 'print' за показване на всички свойства на свързването.
Напишете 'describe [<setting>.<prop>]' за детайлно описание на свойството.
Можете да редактирате следните настройки: свързване, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, match, ipv4, ipv6, tc, proxy
nmcli>Ако въведете командата print и натиснете Enter, nmcli ще покаже всички свойства на свързването:
===============================================================================
Детайли на профила на свързването (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 (по подразбиране)
connection.multi-connect: 0 (по подразбиране)
connection.auth-retries: -1
connection.timestamp: 1593967212
connection.read-only: no
connection.permissions: --
connection.zone: --
connection.master: --
connection.slave-type: --
connection.autoconnect-slaves: -1 (по подразбиране)
connection.secondaries: --Например, за да зададете свойство DHCP за свързването, въведете goto ipv4 и натиснете Enter:
nmcli> goto ipv4
Можете да редактирате следните свойства: метод, dns, dns-search,
dns-options, dns-priority, адреси, шлюз, маршрути, маршрутна метрика,
маршрутна таблица, правила за маршрутизиране, 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>След това напишете set method auto и натиснете Enter:
nmcli ipv4> set method auto
Искате ли също да изчистите 'ipv4.addresses'? [да]:Ако искате да изчистите статичния IP адрес, натиснете Enter. В противном случае въведете no и натиснете Enter. Можете да го запазите, ако мислите, че ще ви бъде необходимо в бъдеще. Но дори и с запазен статичен IP адрес, ще бъде използван DHCP, ако методът е зададен на auto.
Използвайте командата save, за да запазите промените:
nmcli ipv4> save
Connection 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) успешно обновен.
nmcli ipv4>Въведете quit, за да излезете от интерактивния редактор nmcli. Ако се премислихте да излизате — използвайте командата back.
И това не е всичко
Отворете интерактивния редактор nmcli и вижте колко настройки съществуват и какви свойства има всяка настройка. Интерактивният редактор е страхотен инструмент, но ако искате да използвате nmcli в единични команди или скриптове, ще ви е необходима обикновената версия за командния ред.
Сега, когато имате основите, се запознайте с nmcli, за да разберете какво още може да ви помогне.
Реклама
Епични сървъри — това е или Linux с мощни процесори от семейството AMD EPYC и много бързи NVMe дискове Intel. Побързайте да поръчате!
Източник: habr.com
