Управление Сетевыми Подключениями В Linux С Помощью Консольной Утилиты Nmcli

Воспользуйтесь всеми преимуществами инструмента управления сетью NetworkManager в командной строке Linux с помощью утилиты nmcli.

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

Полезность нмкли напрямую вызывает API для доступа к функциям NetworkManager. Он появился в 2010 году и для многих стал альтернативным способом настройки сетевых интерфейсов и подключений.

Хотя некоторые люди все еще используют есликонфигурация .

Поскольку nmcli — это инструмент с интерфейсом командной строки (CLI), предназначенный для использования в окнах терминала и сценариях, он идеально подходит для системных администраторов, работающих без графического пользовательского интерфейса.



синтаксис команды nmcli

В целом синтаксис выглядит так:
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
   

$ nmcli <options> <section> <action>

  • options — параметры, определяющие тонкости работы nmcli,
  • раздел (раздел) – определяет, какие возможности утилиты использовать,
  • действие — позволяет указать, что на самом деле необходимо сделать.

Всего имеется 8 разделов, каждый из которых связан с определенным набором команд (действий):
  • Помощь предоставляет справку о командах ncmcli и их использовании.

  • Общий возвращает статус NetworkManager и глобальную конфигурацию.

  • сеть включает команды для запроса состояния сетевого подключения и включения/отключения подключений.

  • Радио включает команды для запроса состояния подключения к сети Wi-Fi и включения/отключения подключений.

  • Монитор включает команды для мониторинга активности NetworkManager и наблюдения за изменениями состояния сетевых подключений.

  • Связь включает команды для управления сетевыми интерфейсами, добавления новых подключений и удаления существующих.

  • Устройство в основном используется для изменения параметров, связанных с устройством (например, имени интерфейса), или для подключения устройств с использованием существующего соединения.

  • Секрет регистрирует 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 для раздела «Соединения».

Тестовая машина работает под управлением Ubuntu 20.04. В данном случае мы обнаружили три проводных соединения: enp0s3, enp0s8 и enp0s9.

Управление подключениями

Важно понимать, что в nmcli под термином Connection мы подразумеваем сущность, содержащую всю информацию о соединении.

Другими словами, это конфигурация сети.

Соединение инкапсулирует всю информацию, связанную с соединением, включая информацию канального уровня и IP-адресации.

Это уровни 2 и 3 в сетевой модели OSI. Когда вы настраиваете сеть в Linux, вы обычно настраиваете соединения, которые в конечном итоге будут привязаны к сетевым устройствам, которые, в свою очередь, представляют собой сетевые интерфейсы, установленные на компьютере.

Когда устройство использует соединение, оно считается активным или с повышенными правами.

Если соединение не используется, оно неактивно или сброшено.



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

Утилита nmcli позволяет быстро добавлять и сразу настраивать соединения.

Например, чтобы добавить проводное соединение 2 (с enp0s8), вам необходимо запустить следующую команду от имени суперпользователя:

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

В опции 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.

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

Утилита nmcli позволяет легко изменять параметры существующих подключений.

Например, вам необходимо изменить динамический (DHCP) IP-адрес на статический IP-адрес.

Допустим, нам нужно установить IP-адрес 192.168.4.26. Для этого мы используем две команды.

Первый установит IP-адрес напрямую, а второй переключит метод настройки IP-адреса на ручной:

$ 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 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

Если, наоборот, вам нужно установить DHCP, вместо ручного используйте auto:

$ nmcli connection modify ethernet-enp0s8 ipv4.method auto



Работа с устройствами

Для этого используем раздел «Устройство».



Проверка состояния устройства



$ 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 --



Запрос информации об устройстве

Для этого используйте действие show из раздела Устройство (необходимо указать имя устройства).

Утилита отображает много информации, зачастую на нескольких страницах.

Давайте посмотрим на интерфейс 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 (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

Информации довольно много.

Выделим главное:

  • Имя сетевого интерфейса: enp0s8.
  • Тип соединения: проводное соединение Ethernet.
  • Видим MAC-адрес устройства.

  • Указан максимальный блок передачи (MTU) — максимальный размер полезного блока данных одного пакета, который может быть передан протоколом без фрагментации.

  • Устройство в настоящее время подключен .

  • Название соединения какое устройство использует: Ethernet-enp0s8.
  • В устройстве используется один айпи адрес , который мы установили ранее: 192.168.4.26/24.
Другая информация относится к параметрам маршрутизации и шлюза соединений по умолчанию.

Они зависят от конкретной сети.



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

nmcli также имеет простой интерактивный редактор, с которым некоторым может быть удобнее работать.

Например, чтобы запустить его по соединению Ethernet-enp0s8, используйте действие редактировать:

$ nmcli connection edit ethernet-enp0s8

Также там есть небольшая справка, которая, правда, меньше по размеру, чем консольная версия:

===| 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>

Если вы введете команду печати и нажмете Enter, nmcli отобразит все свойства подключения:

=============================================================================== 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: --

Например, чтобы установить соединение по DHCP, введите goto ipv4 и нажмите Входить :

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>

Затем напишите метод set auto и нажмите Входить :

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

Если вы хотите очистить статический IP-адрес, нажмите Входить .

В противном случае введите нет и нажмите Enter. Вы можете сохранить его, если считаете, что он понадобится вам в будущем.

Но даже при сохраненном статическом IP-адресе DHCP будет использоваться, если для метода установлено значение «авто».

Используйте команду save, чтобы сохранить изменения:

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

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



И это еще не все

Откройте интерактивный редактор nmcli и посмотрите, сколько там настроек и сколько свойств имеет каждый параметр.

Интерактивный редактор — отличный инструмент, но если вы хотите использовать nmcli в однострочных текстах или сценариях, вам понадобится обычная версия командной строки.

Теперь, когда у вас есть основы, проверьте справочная страница nmcli, чтобы узнать, чем еще он может вам помочь.






В качестве рекламы

Эпиковые серверы - Этот виртуальные серверы в Windows или Linux с мощными процессорами семейства AMD EPYC и очень быстрыми накопителями Intel NVMe. Спешите сделать заказ!

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

Теги: #Сетевые технологии #Системное администрирование #Администрирование серверов #Настройка Linux #nmcli #настройка сети
Вместе с данным постом часто просматривают: