Поиск по сайту:

Как управлять сетевыми подключениями Linux из командной строки


Команда nmcli позволяет вам использовать возможности Linux NetworkManager прямо из командной строки, что делает его идеальным для серверов без среды рабочего стола и удаленного администрирования оболочки SSH.

Команда nmcli

Команда nmcli не нова, она была выпущена в 2010 году. Вместе с командой ip она заменяет почтенный, но устаревший, ifconfig. От старых привычек трудно избавиться, и многие системные администраторы до сих пор используют ifconfig. Они уже знают, как его использовать, им не нужно учиться, и им просто нужно выполнить свою работу. Так зачем изучать еще один инструмент?

Ну, в конце концов, ifconfig будет исключен из дистрибутивов, так что это изменение грядет, нравится вам это или нет. Но у nmcli есть несколько собственных изящных приемов, благодаря которым стоит узнать, что он может предложить.

Концепции и синтаксис ncmli

Как и все команды CLI, nmcli принимает параметры командной строки. Параметры сгруппированы в три категории.

  • Параметры: изменяют поведение nmcli
  • Разделы: сообщают nmcli, какой набор действий вы вызываете. Думайте о разделах как о наборах команд.
  • Действия. Они сообщают nmcli, что вы от него хотите. Думайте о них как о командах.

Общий формат синтаксиса:

nmcli <options> <sections> <action>

  • Справка: содержит краткие тексты справки по командам ncmcli
  • Общие: получение статуса и конфигурации NetworkManager
  • Сеть: запросы, включение и отключение сетевых подключений.
  • Радио: запрашивает, включает или отключает сетевые подключения Wi-Fi.
  • Монитор: отслеживает NetworkManager и изменения состояния сетевых подключений.
  • Подключение: прямое управление сетевыми интерфейсами, включая их включение и отключение, добавление новых подключений и удаление существующих.
  • Устройство: изменяет параметры сетевого устройства и подключает или отключает устройство от существующего подключения.
  • Секрет: регистрирует nmcli как секретный агент NetworkManager. Поскольку nmcli делает это автоматически, он используется очень редко.

Первые шаги с nmcli

Давайте удостоверимся, что NetworkManager установлен, работает и мы можем подключиться к нему с помощью nmcli. Мы будем использовать действие status из раздела general.

nmcli general status

На самом деле, статус — это действие по умолчанию для общего, поэтому мы могли бы убрать это слово из команды. Но мы проверили, что nmcli — и, следовательно, NetworkManager — установлены и работают. Давайте узнаем немного больше об этом компьютере.

Мы можем вывести список всех профилей сетевых подключений в памяти и на диске, используя действие show из раздела подключения:

nmcli connection show

Вывод шире, чем окно терминала. Наши результаты:

NAME               UUID                                 TYPE     DEVICE 
Wired connection 1 d2864443-9cee-31ec-ab2e-55e9ebddd53e ethernet enp0s3 
ethernet-enp0s8    9aad8efa-3427-4a5c-bef5-270340cd33d0 ethernet enp0s8 
ethernet-enp0s9    5bc49cef-bc3d-4832-9073-460b408932b6 ethernet enp0s9

На тестовом компьютере, использованном в этой статье, установлена предварительная версия Ubuntu 21.10. В нем установлены три сетевых адаптера с именами enp0s3, enp0s8 и enp0s9.

Понимание сантехники

Сетевое подключение позволяет вашему компьютеру обмениваться данными по сети с другим устройством. Внутри nmcli вся информация о сетевом соединении хранится в объекте данных, который он называет соединением.

Соединение nmcli инкапсулирует всю информацию, относящуюся к этому соединению, включая канальный уровень и информацию об IP-адресах. Вы можете думать о соединениях nmcli как о деталях конфигурации для реальных сетевых соединений.

Для доступа к внешнему миру соединение должно использовать устройство сетевого интерфейса, такое как сетевая карта. Соединение привязано к устройству. Когда устройство активно и может принимать или передавать данные, соединение называется active или up. Неудивительно, что соответствующее неактивное состояние называется inactive или down.

Добавление сетевых подключений

С помощью nmcli вы можете создать сетевое подключение и установить некоторые параметры его конфигурации с помощью одной команды. На этом тестовом компьютере нет подключения к enp0s8 , имя для нашего проводного подключения (ethernet) номер 2. Мы добавим подключение к enp0s8. Поскольку мы вносим системные изменения, вам нужно будет использовать sudo:

sudo nmcli connection add type ethernet ifname enp0s8

Эта команда использует действие add из раздела connection. Мы использовали параметр type, чтобы запросить соединение Ethernet, и параметр ifname (имя интерфейса), чтобы указать устройство сетевого интерфейса, которое мы хотим использовать для этого соединения.

Давайте проверим, что произошло:

nmcli connection show
NAME               UUID                                 TYPE     DEVICE 
Wired connection 1 d2864443-9cee-31ec-ab2e-55e9ebddd53e ethernet enp0s3 
ethernet-enp0s8    9aad8efa-3427-4a5c-bef5-270340cd33d0 ethernet enp0s8 
ethernet-enp0s9    5bc49cef-bc3d-4832-9073-460b408932b6 ethernet enp0s9 
ethernet-enp0s8-1  b874aa09-3a25-4f52-b20b-1b95d9741be9 ethernet --

Наше новое соединение ethernet-enp0s8-1 создано. Ему присвоен универсальный уникальный идентификатор (UUID), а тип подключения — Ethernet. Теперь мы можем сделать его активным с помощью команды up. За командой up должно следовать имя соединения или его UUID:

nmcli connection up ethernet-enp0s8-1

Давайте еще раз проверим наши активные соединения:

nmcli connection show --active
NAME               UUID                                 TYPE     DEVICE 
Wired connection 1 d2864443-9cee-31ec-ab2e-55e9ebddd53e ethernet enp0s3 
ethernet-enp0s8-1  b874aa09-3a25-4f52-b20b-1b95d9741be9 ethernet enp0s8 
ethernet-enp0s9    5bc49cef-bc3d-4832-9073-460b408932b6 ethernet enp0s9

Наше новое соединение, ethernet-enp0s8-1, теперь активно и привязано к устройству сетевого интерфейса enp0s8.

Настройка соединений

Конечно, ncmli также позволяет изменять параметры существующих подключений. Предположим, мы хотим переключить сетевой интерфейс с протокола динамической конфигурации хоста (DHCP) на использование статического IP-адреса. Чтобы соответствовать нашей сети, нам нужен фиксированный IP-адрес 192.168.1.40 для нашего нового подключения.

Для этого вам нужно выполнить две команды. Один для установки IP-адреса и один для установки метода соединения для получения IP-адреса вручную:

nmcli connection modify ethernet-enp0s8-1 ipv4.address 192.168.1.40/24
nmcli connection modify ethernet-enp0s8-1 ipv4.method manual

«/24», который мы предоставляем вместе с IP-адресом, — это маска подсети в бесклассовой междоменной маршрутизации (CIDR). В этом контексте «/24» означает «255.255.255.0».

Изменения не вступят в силу, пока соединение не будет «отброшено». То есть отключили и вернули в онлайн. Первая команда разрывает соединение, а вторая восстанавливает его.

nmcli connection down ethernet-enp0s8-1
nmcli connection up ethernet-enp0s8-1

Если вы хотите отменить изменение и перейти со статического IP-адреса на IP-адрес DHCP, используйте параметр auto вместо manual.

nmcli connection modify ethernet-enp0s8-1 ipv4.method auto

Управление устройствами

Раздел nmcli device содержит действия (команды), позволяющие управлять сетевыми интерфейсами, установленными на вашем компьютере. Чтобы увидеть состояние всех сетевых интерфейсов на вашем компьютере, используйте:

nmcli device status

Отображение сведений об устройстве

Чтобы изучить детали сетевого интерфейса, мы используем действие show из раздела device. Если вы не укажете имя устройства, извлекаются и отображаются сведения обо всех устройствах. Вы можете прокручивать и листать вверх и вниз, чтобы просмотреть их.

Давайте посмотрим на enp0s8, устройство, которое использует наше новое соединение. Мы можем убедиться, что используемый IP-адрес — это адрес, который мы запрашивали ранее.

nmcli device show enp0s8
GENERAL.DEVICE:           enp0s8
GENERAL.TYPE:             ethernet
GENERAL.HWADDR:           08:00:27:79:A7:68
GENERAL.MTU:              1500
GENERAL.STATE:            100 (connected)
GENERAL.CONNECTION:       ethernet-enp0s8-1
GENERAL.CON-PATH:         /org/freedesktop/NetworkManager/ActiveConnection/8
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]:           192.168.1.40/24
IP4.GATEWAY:              --
IP4.ROUTE[1]:             dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 102
IP6.ADDRESS[1]:           fe80::3241:457d:cd1c:2436/64
IP6.GATEWAY:              --
IP6.ROUTE[1]:             dst = fe80::/64, nh = ::, mt = 102

nmcli возвращает полный экран информации. Некоторые из часто полезных предметов:

  • УСТРОЙСТВО: название проверяемого устройства.
  • TYPE: тип подключения с использованием этого устройства.
  • HWADDR: MAC-адрес интерфейсной карты.
  • СОСТОЯНИЕ: есть ли на этом устройстве активное подключение.
  • IP4.ADDRESS[1]: IP-адрес и маска подсети для этого устройства.
  • СОЕДИНЕНИЕ: название соединения, использующего это устройство.

Интерактивный редактор nmcli

Хотя nmcli является инструментом командной строки, он имеет элементарный интерактивный редактор. Действие редактирования в разделе соединения открывает интерактивный редактор соединения, которое вы передаете в командной строке:

nmcli connection edit ethernet-enp0s8-1

Некоторый текст справки выводится на экран, и вам предоставляется командная строка «nmcli>».

если вы наберете print и нажмете «Ввод», nmcli выведет список всех свойств, связанных с подключением. Их много. Вы можете пролистать их, чтобы просмотреть их.

print

Давайте изменим наше соединение обратно на использование DHCP. Мы будем использовать настройки «ipv4». Для этого нам нужно «зайти» в настройки IPv4.

goto ipv4

Свойство, которое мы хотим изменить, это method. Мы хотим установить его в автоматический режим.

set method auto

Вы увидите следующую подсказку:

Do you also want to clear 'ipv4.addresses'? [yes]:

Если вы не очистите IP-адрес, в следующий раз, когда вы установите это соединение для использования статического IP-адреса, оно будет использовать тот, который был установлен ранее. Если вы очистите его, вам нужно будет установить новый IP-адрес, если вы когда-нибудь вернете это соединение к использованию статического IP-адреса. Введите «да» или просто нажмите «Ввод», чтобы очистить его. Введите «нет» и нажмите «Ввод», чтобы сохранить его.

Нам нужно сохранить наши изменения:

save

Введите «quit», чтобы выйти из интерактивного редактора. Если вы не хотите выходить, введите «назад», чтобы вернуться на основной уровень, и продолжайте использовать редактор.

В человеке гораздо больше

Команда nmcli может делать гораздо больше. У него очень много параметров и опций командной строки. На самом деле так много, что его справочная страница занимает более 1200 строк. Просмотрите их, чтобы узнать, что еще nmcli может сделать для вас.

И, конечно же, если вы удаленно администрируете сетевые подключения, не отключайте соединение, к которому вы подключились. Это никогда не бывает весело.