NetworkManager давно стал стандартом управления сетью в большинстве дистрибутивов, но многие пользователи знают только апплет в трее. Утилита nmcli даёт тот же набор возможностей из терминала: посмотреть состояние интерфейсов, подключиться к Wi-Fi, назначить статический адрес, создать VLAN или мост, разобраться, почему профиль не поднимается. Это особенно полезно на сервере без графики, при удалённой диагностике и в скриптах. Ниже — команды, которые закрывают большинство домашних и офисных задач.
Два уровня: устройства и профили
В NetworkManager есть физические устройства (enp3s0, wlan0) и профили подключений — сохранённые наборы настроек с именем и UUID. Один интерфейс может иметь несколько профилей, например «Дом» и «Офис», а автоподключение выбирает подходящий. Команды nmcli device работают с железом, nmcli connection — с профилями. Понимание этой разницы избавляет от половины ошибок: nmcli device disconnect временно отключает интерфейс, а nmcli connection down опускает конкретный профиль.
Проверка состояния
nmcli general status
nmcli device status
nmcli connection show --active
Первая команда показывает общее состояние NetworkManager, вторая — таблицу устройств, третья — активные профили. Для скриптов удобен машиночитаемый вывод: nmcli -t -f NAME,UUID,TYPE connection show. В сценариях лучше использовать UUID: имя профиля может измениться при локализации или переименовании, а вывод с -t разделяет поля двоеточием и легко разбирается через cut или awk. Если имя профиля содержит пробелы или локализовано («Проводное соединение 1»), заключайте его в кавычки или используйте UUID.
Новый профиль и статический адрес
Обычно достаточно nmcli connection up "Имя профиля". Для новой проводной сети создайте профиль и включите автоподключение.
sudo nmcli connection add type ethernet con-name office ifname enp3s0 ipv4.method auto
sudo nmcli connection modify office connection.autoconnect yes
sudo nmcli connection up office
Статический адрес задаётся на профиле, а не на интерфейсе, поэтому настройка переживёт перезагрузку. После изменения профиль нужно поднять заново.
sudo nmcli connection modify office ipv4.method manual ipv4.addresses 192.168.1.50/24 ipv4.gateway 192.168.1.1 ipv4.dns "192.168.1.1 1.1.1.1"
sudo nmcli connection up office
nmcli -f ipv4.method,ipv4.addresses,ipv4.gateway,ipv4.dns connection show office
ip -4 addr show enp3s0
Чтобы вернуть DHCP, недостаточно переключить метод: старые значения останутся в профиле. Очистите их явно: sudo nmcli connection modify office ipv4.method auto ipv4.addresses "" ipv4.gateway "" ipv4.dns "" ipv4.ignore-auto-dns no, затем снова поднимите профиль.
DNS и проверка разрешения имён
Список DNS можно задать вручную. Флаг ignore-auto-dns запрещает брать серверы от DHCP, иначе они могут оказаться в приоритете.
sudo nmcli connection modify office ipv4.dns "1.1.1.1 9.9.9.9"
sudo nmcli connection modify office ipv4.ignore-auto-dns yes
sudo nmcli connection up office
resolvectl status
Если systemd-resolved не используется, смотрите /etc/resolv.conf и настройки dnsmasq. Проверить конкретное имя удобно через resolvectl query example.com или getent hosts example.com.
Wi-Fi без графики
nmcli device wifi list
nmcli device wifi connect "HomeNet" password "example-pass" name home
nmcli connection modify home wifi-sec.key-mgmt wpa-psk wifi-sec.psk "example-pass"
nmcli connection show home
Для WPA3 используется режим key-mgmt sae, для скрытой сети профиль создают вручную и добавляют wifi.hidden yes. Команда connect создаёт профиль, дальше его настраивают через connection modify. Подробная диагностика беспроводных подключений — отдельная тема, но общий принцип тот же: сначала профиль, потом устройство.
VLAN и мост
VLAN нужен, когда провайдер или коммутатор отдаёт несколько сетей на один кабель. Мост объединяет интерфейсы в один широковещательный домен, например для виртуальных машин.
sudo nmcli connection add type vlan con-name vlan10 dev enp3s0 id 10 ipv4.method manual ipv4.addresses 10.0.10.2/24
sudo nmcli connection up vlan10
sudo nmcli connection add type bridge con-name br0 ifname br0
sudo nmcli connection add type ethernet con-name br0-port ifname enp3s0 master br0
После создания моста поднимите br0 и проверьте, что порт стал частью моста: nmcli -f connection.master connection show br0-port. Если вы делаете это по SSH, легко потерять связь — держите под рукой локальную консоль или заранее настройте резервный доступ.
Профили в файлах
Все настройки хранятся в keyfile-файлах. Их можно читать, копировать между машинами и править вручную, но только при остановленном профиле и с правами root.
sudo ls /etc/NetworkManager/system-connections/
sudo sed -n '1,30p' /etc/NetworkManager/system-connections/home.nmconnection
Типичный профиль Wi-Fi выглядит так:
[connection]
id=home
type=wifi
autoconnect=true
[wifi]
ssid=home
mode=infrastructure
[wifi-security]
key-mgmt=wpa-psk
psk=example-pass
[ipv4]
method=auto
Файлы должны принадлежать root и иметь права 600: иначе NetworkManager откажется их загружать, а пароль окажется доступен другим пользователям.
Диагностика
nmcli device show enp3s0
ip route
journalctl -u NetworkManager -b --no-pager | tail -n 40
resolvectl query example.com
Если устройство помечено как unmanaged, проверьте /etc/NetworkManager/NetworkManager.conf и /etc/network/interfaces: на Debian и Ubuntu интерфейс, описанный старым способом, может игнорироваться. Временно вернуть управление помогает sudo nmcli device set enp3s0 managed yes. Когда соединение есть, а интернета нет, смотрите маршрут по умолчанию, шлюз и DNS. Два профиля на одну сеть лечатся удалением лишнего или приоритетом connection.autoconnect-priority.
Быстрая проверка связности не требует браузера. Команда connectivity check показывает, видит ли NetworkManager интернет, а вывод по устройству содержит состояние и активный профиль. Если ping по IP работает, а имена не разрешаются, проблема почти всегда в DNS, а не в кабеле.
nmcli networking connectivity check
nmcli -f GENERAL.STATE,GENERAL.CONNECTION,IP4.ADDRESS,IP4.GATEWAY device show enp3s0
ping -c 3 1.1.1.1
getent hosts example.com
Чек-лист
- Проверьте
nmcli device statusи имя нужного профиля. - Меняйте настройки на профиле, а не на интерфейсе.
- После правок поднимайте профиль заново.
- Для скриптов используйте UUID и вывод
-t. - Читайте журнал NetworkManager до того, как менять конфигурацию наугад.
Итог
nmcli — это не замена графическому апплету, а более точный и воспроизводимый способ управлять сетью. Запомните связку «устройство — профиль», научитесь менять IPv4 и DNS на профиле, проверяйте результат через ip и resolvectl. Тогда подключение к новой сети, статический адрес и поиск причины сбоя будут занимать минуты, а не полчаса.