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

Управление сетевыми подключениями в Linux через окно терминала поначалу может показаться сложным, но мы обнаружили, что nmcli — это один из тех инструментов, который становится привычным, как только вы освоите его синтаксис.
Этот мощный инструмент командной строки помогает настраивать сетевые подключения в системах Linux и управлять ими легко и эффективно.
В этой подробной статье мы рассмотрим что такое nmcli, его функции и использование команд nmcli на практических примерах в Linux.
Что такое nmcli?
nmcli
расшифровывается как интерфейс командной строки NetworkManager. Он позволяет:
- Просмотр доступных сетевых интерфейсов и их состояния
- Подключитесь к Wi-Fi или проводной сети
- Настройка статических IP-адресов
- Включение и отключение сети и интерфейсов
- Управление VPN и другими расширенными настройками
Он лёгкий, быстрый и по умолчанию доступен в большинстве современных дистрибутивов Linux.
nmcli — это ключевая часть NetworkManager, стандартного набора инструментов для управления сетями в Linux.
Представьте, что NetworkManager — это мозг, который управляет всеми вашими сетевыми подключениями, от Wi-Fi до Ethernet и даже мобильного широкополосного доступа. nmcli
позволяет вам напрямую управлять этим мозгом прямо с вашего терминала.
Обратите внимание, что nmcli используется не только в Red Hat Enterprise Linux (RHEL).
Это универсальный инструмент командной строки с открытым исходным кодом, предназначенный для управления NetworkManager и отображения состояния сети в широком спектре систем Linux
Преимущества nmcli
Многие люди считают nmcli
невероятно полезным, потому что:
- Графический интерфейс не требуется: вы можете использовать
nmcli
для управления NetworkManager на серверах, «безголовых» компьютерах (без экрана) или просто с любого терминала. Вам не нужна мышь или навороченный дисплей. - Идеально для скриптов: действительно,
nmcli
предлагает специальный формат «лаконичного вывода». В этом формате отображаются только основные значения, что позволяет компьютерным скриптам легко считывать и автоматически обрабатывать сетевую информацию. - Полный контроль: с помощью
nmcli
вы можете создавать, отображать, редактировать, удалять, активировать и деактивировать сетевые подключения. Вы также можете проверять состояние своих сетевых устройств и управлять им.
Понимание Синтаксиса команд nmcli
Каждая команда nmcli
имеет простую структуру:
nmcli [OPTIONS] OBJECT { COMMAND | help }
OPTIONS
— изменяют принцип работы команды, например меняют стиль вывода.OBJECT
— указываетnmcli
на то, чем вы хотите управлять. К распространённым объектам относятся:general
: для общего состояния NetworkManager.networking
: для включения или отключения сети.radio
: для управления Wi-Fi или мобильными широкополосными радиомодулями.connection
(илиcon
для краткости): для управления сохранёнными сетевыми профилями.device
(илиdev
для краткости): для управления физическим или виртуальным сетевым оборудованием.
Часто можно использовать сокращённые версии (аббревиатуры) объектов и команд. Например, nmcli connection help
работает так же, как nmcli con help
.
Основные команды nmcli с простыми и практичными примерами
Давайте рассмотрим несколько распространённых задач, которые можно решить с помощью nmcli
.
1. Проверка состояния вашей сети
Вы можете быстро получить представление о состоянии вашей сети.
1.1. Ознакомьтесь с общим состоянием NetworkManager
Чтобы узнать, запущен ли NetworkManager и каков его общий статус, можно использовать следующую команду:
nmcli general status
# Или сокращённая версия: nmcli g s
Это показывает, подключена ли ваша система и есть ли у неё полный доступ к интернету.
Пример вывода:
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN METERED connected full missing enabled missing enabled no (guessed)
Для получения более простого вывода, подходящего для скриптов, выполните команду:
nmcli -t -f STATE general
Результат может выглядеть следующим образом:
Connected
1.2 Проверьте все сетевые устройства
Чтобы вывести список всех сетевых устройств, независимо от того, управляются они NetworkManager или нет, выполните команду:
nmcli device status # или: nmcli d s
Эта команда показывает все сетевые интерфейсы и их текущее состояние. Вы увидите такие устройства, как ens18
(Ethernet) или lo
(loopback), а также их текущее состояние (например, connected
, unmanaged
).
Пример вывода:
DEVICE TYPE STATE CONNECTION ens18 ethernet connected Wired connection 1 lo loopback connected (externally) lo
1.3. Просмотр всех сохранённых подключений
NetworkManager сохраняет данные о подключении в профилях, которые действуют как сохранённые сетевые конфигурации. Вы можете создать несколько профилей для одного и того же интерфейса — например, один для DHCP, а другой для статической IP-адресации.
Чтобы просмотреть список всех сохранённых профилей сетевых подключений, введите:
nmcli connection show # или: nmcli con show
Вы можете увидеть свои реальные подключения (не только устройства). Здесь отображаются их названия, уникальные идентификаторы (UUID), типы и устройства, с которыми они связаны.
Пример вывода:
NAME UUID TYPE DEVICE Wired connection 1 2b89e468-7c07-48b0-a59a-5ebae1642386 ethernet ens18 lo 5c293ac3-8bb7-45a9-98d7-cf8d80ea93c4 loopback lo
1.4. Отображать только активные подключения
Если вы хотите видеть только те подключения, которые используются в данный момент, добавьте параметр --active
:
nmcli connection show --active # или: nmcli con show -a
Это поможет вам быстро определить, какие профили активно управляют вашими сетевыми устройствами.
1.5. Проверка состояния Wi-Fi-радиомодуля
Чтобы узнать, включено или выключено ваше Wi-Fi-устройство, используйте:
nmcli radio wifi
Пример вывода:
enabled
Вы также можете включить или выключить его с помощью nmcli radio wifi on
или nmcli radio wifi off
.
2. Управление сетевыми подключениями
nmcli
упрощает настройку, изменение, активацию и отключение сетевых подключений.
2.1. Создайте новое подключение к сети Ethernet (динамический IP-адрес)
Для нового подключения к сети Ethernet, которое получает IP-адрес автоматически (DHCP):
nmcli connection add type ethernet con-name wired-connection ifname ens18
Таким образом создаётся профиль с именем wired-connection
для интерфейса ens18
.
Чтобы начать использовать его, активируйте его:
nmcli connection up wired-connection
После этого вы увидите устройство ens18
, подключённое к wired-connection
.
Если вы хотите, чтобы имя подключения (имя профиля) содержало пробелы, необходимо заключать имя в кавычки. Без кавычек оболочка будет воспринимать пробелы как отдельные аргументы, и команда не будет выполнена.
nmcli connection add type ethernet con-name "Office LAN Connection" ifname ens18
После создания вы можете активировать его следующим образом:
nmcli connection up "Office LAN Connection"
А если вам понадобится изменить или удалить его позже, всегда указывайте название в кавычках.
2.2. Создание нового подключения к сети Ethernet (статический IP-адрес)
Если вам нужно настроить определённый (статический) IP-адрес, шлюз и DNS-серверы:
nmcli connection add type ethernet con-name wired-network ifname ens18 ip4 192.168.1.13/24 gw4 192.168.1.101
Таким образом создаётся профиль с именем wired-network
со статическим IPv4-адресом и шлюзом.
Чтобы добавить DNS-серверы в этот профиль:
nmcli connection modify wired-network ipv4.dns «8.8.8.8 8.8.4.4»
Это заменит все существующие DNS-серверы IPv4.
Чтобы добавить что-то, не заменяя, используйте +ipv4.dns
.
2.3. Список доступных сетей Wi-Fi
Прежде чем подключиться к сети Wi-Fi, вы можете посмотреть, какие сети Wi-Fi находятся поблизости.
nmcli device wifi list
Эта команда показывает SSID, уровень сигнала и типы защиты.
Пример вывода:
IN-USE BSSID SSID MODE CHAN RATE SIGNAL BARS SECURITY * F4:S7:C8:36:N2:46 Ostechnix_jio_4g Infra 6 130 Mbit/s 100 ▂▄▆█ WPA2 N4:Z7:C6:96:B2:2A Ostechnix_jio_5g Infra 36 270 Mbit/s 100 ▂▄▆█ WPA2 9A:04:88:25:62:74 vivo Y39 5G Infra 1 117 Mbit/s 54 ▂▄__ WPA2 D2:78:C9:C5:31:E1 Govindaraju Infra 6 270 Mbit/s 52 ▂▄__ WPA2
2.4. Подключение к сети Wi-Fi
Чтобы подключиться к сети Wi-Fi, для которой требуется пароль:
nmcli device wifi connect "Your_WiFi_SSID" password "Your_Password"
Если это скрытая сеть, добавьте hidden yes
.
Пример 1. Для видимых сетей
nmcli device wifi connect MyWiFi password mysecretpass
Пример 2. Для скрытых сетей
nmcli device wifi connect MyHiddenWiFi password mysecretpass hidden yes
2.5. Изменение существующего подключения
Вы можете изменить различные свойства сохранённого подключения. Например, чтобы изменить mtu
(максимальный объём передачи данных) для подключения Wi-Fi с именем MyConnection
:
nmcli connection modify MyConnection 802-11-wireless.mtu 1350
NetworkManager называет 802-11-wireless
«настройкой», а mtu
— «свойством».
2.6. Активируйте подключение
Чтобы активировать сохранённое подключение (например, MyConnection) на назначенном ему устройстве:
nmcli connection up MyConnection
Эта команда подключает ваше устройство с использованием выбранного профиля.
2.7. Отключение от сети
Чтобы отключить конкретное соединение:
nmcli connection down MyConnection
Обратите внимание, что эта команда отключает соединение, но устройство остается готовым к подключению. Оно попытается автоматически активировать другое подходящее соединение.
2.8. Удаление подключения
Если сетевой профиль вам больше не нужен, вы можете удалить его:
nmcli connection delete "Old Profile Name"
Замените «Старое имя профиля» на фактическое имя профиля. Это приведет к удалению профиля подключения из NetworkManager.
2.9. Перезагрузка профилей подключения
nmcli connection reload
3. Управление сетевыми устройствами
Помимо подключения, вы также можете управлять самими устройствами.
3.1. Отключение устройства
Чтобы отключить сетевое устройство и предотвратить его автоматическое повторное подключение, выполните следующие действия:
nmcli device disconnect ens18
Это отличается от connection down
, так как действительно предотвращает повторное подключение устройства.
3.2. Сделайте устройство неуправляемым
Иногда может потребоваться, чтобы NetworkManager игнорировал устройство, позволяя вам управлять им вручную (например, с помощью скрипта). Чтобы временно сделать устройство неуправляемым:
nmcli device set enp18 managed no
Это указание для NetworkManager не трогать enp18
.
3.3. Постоянная настройка устройства как неуправляемого
Для постоянных изменений создайте файл конфигурации, например /etc/NetworkManager/conf.d/99-unmanaged-devices.conf
, со следующим содержимым:
[keyfile] unmanaged-devices=interface-name:enp18
Чтобы сделать несколько устройств неуправляемыми, разделите записи в параметре unmanaged-devices
точкой с запятой, как показано ниже:
[keyfile] unmanaged-devices=interface-name:enp18;interface-name:ens3
Наконец, перезагрузите службу NetworkManager, чтобы изменения вступили в силу:
sudo systemctl reload NetworkManager
Список неуправляемых устройств можно проверить с помощью команды:
nmcli device status
Пример вывода:
DEVICE TYPE STATE CONNECTION enp1s0 ethernet unmanaged --
4. Расширенное использование команд nmcli для повышения эффективности
nmcli
предлагает полезные функции для настройки вывода данных в соответствии с вашими потребностями.
4.1. Лаконичный вывод (-t
)
При написании скриптов часто требуются только необработанные данные без дополнительного форматирования. Опция -t
обеспечивает именно это:
nmcli -t device
Это значительно упрощает анализ выходных данных в скриптах.
Пример вывода:
ens18:ethernet:connected:Wired connection 1 lo:loopback:connected (externally):lo
4.2. Фильтрация по полю (-f
)
Вы можете выбрать, какую именно информацию (поля) отображать. Это уменьшит количество ненужной информации и поможет вам сосредоточиться на главном.
nmcli -f DEVICE,TYPE device
Пример вывода:
DEVICE TYPE ens18 ethernet lo loopback
Объедините это с -t
для удобного использования в скриптах и получения конкретных данных: nmcli -t -f DEVICE,TYPE device
.
4.3. Форматированный вывод (-p
)
Для пользователей nmcli
может сделать вывод аккуратным и выровнять его по заголовкам. Это удобно для просмотра информации прямо в терминале:
nmcli -p device
Благодаря этому информацию гораздо легче воспринимать с первого взгляда.
Пример вывода:
===================== Status of devices ===================== DEVICE TYPE STATE CONNECTION ----------------------------------------------------------------------------------- ens18 ethernet connected Wired connection 1 lo loopback connected (externally) lo
4.4. Интерактивный редактор
Для более сложных конфигураций или для тех, кто предпочитает пошаговое руководство, в nmcli
есть интерактивный редактор:
nmcli connection edit
Вам будет предложено указать тип подключения, а затем настроить различные параметры.
Valid connection types: 6lowpan, 802-11-olpc-mesh (olpc-mesh), 802-11-wireless (wifi), 802-3-ethernet (ethernet), adsl, bluetooth, bond, bridge, cdma, dummy, generic, gsm, hsr, infiniband, ip-tunnel, ipvlan, loopback, macsec, macvlan, ovs-bridge, ovs-interface, ovs-port, pppoe, team, tun, veth, vlan, vpn, vrf, vxlan, wifi-p2p, wimax, wireguard, wpan, bond-slave, bridge-slave, team-slave Enter connection type: ethernet ===| nmcli interactive connection editor |=== Adding a new '802-3-ethernet' connection 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, hostname, link, tc, proxy nmcli>
Это полезно для изучения возможностей и проверки правильности синтаксиса.
Вы можете указать тип подключения (например, Ethernet, Wi-Fi и т. д.), как показано ниже:
nmcli connection edit type ethernet
Чтобы узнать ещё больше примеров и получить подробную информацию, ознакомьтесь со страницей руководства nmcli.
man nmcli
5. Проверка журналов для устранения неполадок
Если что-то пойдёт не так, вы можете проверить логи с помощью команды:
nmcli general logging
Вы увидите уровень ведения журнала и отслеживаемые домены, что поможет выявить неправильные настройки.
6. Настройка разрешений на подключение с помощью nmcli
nmcli
позволяет ограничить или предоставить разрешения для определенных профилей подключения Ethernet (или любых других). Эта функция полезна, когда несколько пользователей работают в одной системе, но вам нужно контролировать кто может активировать или изменить сетевой профиль.
По умолчанию любой пользователь с доступом к NetworkManager может установить соединение вверх или вниз. Но вы можете ограничить это, назначив разрешения для конкретных подключений.
1. Разрешите одному пользователю управлять подключением
nmcli connection modify MyConnection connection.permissions user:senthil
MyConnection
: Имя (идентификатор) вашего профиля подключения.connection.permissions
Свойство для определения разрешённых пользователей.user:john
: Предоставляет разрешение только пользователюsenthil
.
2. Разрешить доступ нескольким пользователям
Если подключением должны управлять несколько пользователей, разделяйте имена пользователей запятыми (без пробелов):
nmcli connection modify MyConnection connection.permissions user:senthil,kumar
Это позволяет senthil
и kumar
активировать, деактивировать или изменять профиль с именем MyConnection
.
3. Удалите все разрешения (снова сделайте его глобальным)
Чтобы снять ограничения и разрешить всем пользователям управлять подключением, удалите свойство:
nmcli connection modify MyConnection connection.permissions \"\"
4. Проверка ограничений доступа
Если пользователь не указан в connection.permissions
(например, satheesh) попытается установить соединение:
nmcli connection up MyConnection
Они получат сообщение об ошибке отказано в доступе, и профиль не будет активирован. Потому что у текущего пользователя нет прав на управление профилем MyConnection
.
Чтобы решить эту проблему, у вас есть три варианта:
1. Переключитесь на авторизованного пользователя (например, su senthil
).
2. Добавьте текущего пользователя в профиль:
nmcli connection modify MyConnection connection.permissions user: senthil.kumar,satheesh
3. Снимите все ограничения:
nmcli connection modify MyConnection connection.permissions ""
7. Краткие справочные команды
Вот команды, которые я использую чаще всего:
nmcli device
— Показывать состояние устройстваnmcli connection show
— Список всех подключенийnmcli device wifi list
— Сканирование сетей Wi-Finmcli connection up "name"
— Активировать соединениеnmcli connection down "name"
— Отключить подключениеnmcli connection delete "name"
— Удалить профиль подключения
Контрольная таблица команд nmcli
Вот практическое руководство список команд nmcli
, в котором описаны самые важные задачи.
1. Общее состояние сети
Цель | Команда |
---|---|
Показать общее состояние | nmcli general status |
Показывать только состояние соединения | nmcli -t -f STATE general |
Показать версию NetworkManager | nmcli --version |
2. Список устройств и управление ими
Цель | Команда |
---|---|
Список всех сетевых устройств | nmcli device status |
Отключите устройство | nmcli device disconnect eth0 |
Повторно подключите устройство | nmcli device connect eth0 |
Сканирование доступных сетей Wi-Fi | nmcli device wifi list |
3. Управление подключениями (профилями)
Цель | Команда |
---|---|
Список всех сохраненных подключений | nmcli connection show |
Перечислите только активные подключения | nmcli connection show --active |
Активировать соединение | nmcli connection up my-office |
Деактивировать соединение | nmcli connection down my-office |
Удаление соединения | nmcli connection delete my-office |
4. Подключитесь к Wi-Fi
Цель | Команда |
---|---|
Подключитесь к Wi-Fi, используя SSID | nmcli device wifi connect MyWiFi password mysecretpass |
Подключение к скрытой сети | nmcli device wifi connect HiddenSSID password mysecretpass hidden yes |
5. Создайте новое подключение к сети Ethernet
Цель | Команда |
---|---|
Добавьте подключение на основе DHCP | nmcli connection add type ethernet con-name my-office ifname ens3 |
Установите статический IP-адрес | bash\nnmcli connection modify my-office \\\n ipv4.addresses 192.168.1.100/24 \\\n ipv4.gateway 192.168.1.1 \\\n ipv4.dns 8.8.8.8,1.1.1.1 \\\n ipv4.method manual |
Повторно активируйте измененное соединение | nmcli connection up my-office |
6. Краткие сокращения
Полная Команда | Краткая Форма |
---|---|
nmcli connection show | nmcli con show |
nmcli connection up | nmcli con up |
nmcli device status | nmcli dev |
nmcli general status | nmcli g |
7. Команды по устранению неполадок
Цель | Команда |
---|---|
Показывать журналы NetworkManager | nmcli general logging |
Перезапустить NetworkManager | sudo systemctl restart NetworkManager |
Перезагрузите профили подключения | nmcli connection reload |
Выводы
nmcli
— это настоящий швейцарский нож для управления сетью в Linux. Он может выполнять самые разные задачи: от базовой проверки состояния сети до сложной настройки подключения для системных администраторов и опытных пользователей.
Освоив использование команд nmcli
, вы сможете точно контролировать свою сеть в Linux.
Редактор: AndreyEx