В современных дистрибутивах Linux управление сетевыми подключениями давно перестало быть уделом избранных системных администраторов, знающих наизусть синтаксис конфигурационных файлов. Network Manager стал стандартом де-факто, предоставляя удобный и гибкий интерфейс для работы с беспроводными соединениями. Этот демон автоматически обрабатывает события изменения состояния сети, обеспечивая стабильный доступ к интернету без необходимости ручного вмешательства при каждом запуске системы.
Однако, графические интерфейсы, такие как GNOME NetworkManager или KDE Plasma NetworkManager, не всегда отображают полный набор доступных опций. В ситуациях, когда требуется тонкая настройка параметров безопасности, работа со скрытыми точками доступа или диагностика проблем соединения, на помощь приходит командная строка. Понимание принципов работы nmcli дает пользовател полный контроль над сетевой инфраструктурой.
В этой статье мы разберем не только базовые команды для подключения, но и продвинутые техники управления профилями, настройки статических IP-адресов и отладки соединений. Network Manager хранит конфигурацию в формате keyfile, что делает профили переносимыми и легко редактируемыми, но требует внимательности при внесении изменений вручную.
Проверка статуса и доступных интерфейсов
Прежде чем вносить какие-либо изменения, необходимо оценить текущее состояние сетевой подсистемы. Команда nmcli general status предоставляет сводную информацию о глобальном состоянии демона, показывая, включено ли управление сетями вообще. Если статус показывает "disconnected" или "unmanaged", дальнейшие действия по созданию подключений будут безуспешны.
Для получения детальной информации о физических и логических интерфейсах используется команда nmcli device. Она выводит список всех сетевых карт, их тип, текущее состояние и подключенное соединение. Важно различать состояние устройства (UP/DOWN) и состояние подключения (connected/disconnected).
- 📡 DEVICE — имя сетевого интерфейса, например,
wlan0илиwlp2s0. - 🔌 TYPE — тип устройства, в нашем случае нас интересует
wifi. - 🟢 STATE — текущий статус, где
connectedозначает активное соединение. - 🏷️ CONNECTION — имя активного профиля подключения.
⚠️ Внимание: Если в столбце STATE вы видите статус "unmanaged", это означает, что Network Manager игнорирует данный интерфейс. Часто такое встречается в серверных сборках Linux, где управление сетью передано systemd-networkd или настроено вручную через netplan.
Для более детального просмотра, включая IP-адреса, DNS-серверы и MAC-адреса, добавьте флаг show к имени устройства. Это позволяет быстро убедиться, получил ли интерфейс адрес по DHCP или требуется ручная настройка.
Сканирование сетей и первоначальное подключение
Первым шагом к установлению соединения является обнаружение доступных точек доступа в радиусе действия вашей антенны. Команда nmcli device wifi list запускает сканирование и выводит список видимых сетей. Обратите внимание, что частое использование этой команды может нагружать беспроводной адаптер, поэтому не стоит запускать её в цикле без необходимости.
Вывод команды содержит столбцы SSID, режим работы, канал, скорость сигнала (SIGNAL), безопасность и текущий статус. Сила сигнала выражается в процентах, где значения выше 70% считаются отличными, а ниже 30% — крайне нестабными. Для подключения к открытой сети достаточно указать SSID.
nmcli device wifi connect "MyHomeWiFi"
Если сеть защищена паролем, его необходимо передать в команде через параметр password. Network Manager автоматически создаст профиль подключения и попытается авторизоваться. В случае успеха соединение будет установлено, а профиль сохранен для автоматического подключения в будущем.
- 🔐 Для WPA2/WPA3 сетей просто добавьте пароль в конце команды.
- 🙈 Для скрытых сетей (Hidden SSID) добавьте флаг
hidden yes. - 🏢 Для корпоративных сетей может потребоваться указание фазы аутентификации.
Важно отметить, что при первом подключении к новой сети Network Manager создает новый профиль-соединение. Имя этого профиля по умолчанию совпадает с SSID, но может быть изменено пользователем для удобства администрирования, особенно если вы подключаетесь к множеству сетей с одинаковыми именами в разных локациях.
Управление профилями подключений
Профили — это сердце системы управления сетями. Каждый профиль содержит набор параметров: SSID, тип безопасности, пароли, настройки IP и DNS. Список всех сохраненных профилей можно получить командой nmcli connection show. В отличие от списка устройств, здесь отображаются именно логические конфигурации, которые могут быть активны прямо сейчас или ждать своего часа.
Для переключения между известными сетями не требуется заново вводить пароль. Достаточно использовать команду nmcli connection up followed by the profile name. Это особенно полезно в сценариях, когда устройство перемещается между офисом и домом, где используются разные конфигурации.
| Команда | Описание действия | Пример использования |
|---|---|---|
nmcli c show |
Показать все профили | Вывод списка всех сохраненных сетей |
nmcli c up "Name" |
Активировать профиль | Подключение к сети "Office_WiFi" |
nmcli c down "Name" |
Деактивировать профиль | Разрыв соединения с текущей сетью |
nmcli c delete "Name" |
Удалить профиль | Очистка старых настроек |
Удаление профиля не удаляет физический интерфейс, оно лишь стирает сохраненные настройки. Это безопасная операция, если вы хотите сбросить конфигурацию конкретной сети и создать её заново с чистыми параметрами.
☑️ Чек-лист диагностики подключения
Ручное создание и редактирование профилей
Автоматическое создание профилей удобно, но часто требует ручной доводки. Вы можете создать новый профиль с нуля, даже если сеть сейчас не видна (например, скрытая сеть или сеть с мак-фильтрацией). Команда nmcli connection add позволяет задать все параметры явно.
nmcli connection add type wifi con-name "MyProfile" ifname wlan0 ssid "HiddenNet"
nmcli connection modify "MyProfile" wifi-sec.key-mgmt wpa-psk
nmcli connection modify "MyProfile" wifi-sec.psk "SuperSecretPassword"
nmcli connection modify "MyProfile" ipv4.method manual ipv4.addresses "192.168.1.50/24" ipv4.gateway "192.168.1.1"
В приведенном примере мы создаем профиль MyProfile, привязываем его к интерфейсу wlan0, настраиваем безопасность WPA-PSK и задаем статический IP-адрес. Обратите внимание на разделение команды на этапы: сначала создается "скелет" соединения, затем модифицируются его свойства. Изменения вступают в силу только после перезагрузки профиля или системы.
- 🛠 con-name — произвольное имя профиля, удобное для запоминания.
- 📶 ifname — имя физического интерфейса, к которому привязывается профиль.
- 🔒 wifi-sec — группа параметров, отвечающая за шифрование и пароли.
- 🌐 ipv4.method — метод назначения адреса (auto, manual, link-local).
⚠️ Внимание: При редактировании активных профилей изменения могут не примениться мгновенно. Рекомендуется после командыmodifyвыполнитьnmcli connection down "Name"и затемup "Name"для применения новых настроек.
Для просмотра всех параметров конкретного профиля используйте команду nmcli connection show "Name". Вывод будет очень подробным, поэтому удобно использовать фильтрацию через grep, если вас интересует конкретный параметр, например, IP-адрес или DNS.
Настройка статического IP и DNS
В корпоративных сетях или для серверов часто требуется фиксированный IP-адрес. Network Manager позволяет легко переключиться с DHCP на статическую настройку. Важно правильно указать маску подсети и шлюз, иначе устройство окажется в изоляции.
Для настройки DNS также используются параметры группы ipv4 (или ipv6). Если вы хотите игнорировать DNS-серверы, полученные от провайдера, необходимо явно указать метод получения DNS или прописать адреса вручную. Автоматическое получение DNS иногда приводит к утечкам или использованию медленных серверов.
nmcli connection modify "HomeWiFi" ipv4.addresses "192.168.1.100/24"
nmcli connection modify "HomeWiFi" ipv4.gateway "192.168.1.1"
nmcli connection modify "HomeWiFi" ipv4.dns "8.8.8.8, 1.1.1.1"
nmcli connection modify "HomeWiFi" ipv4.ignore-auto-dns yes
Параметр ipv4.ignore-auto-dns yes критически важен, если вы хотите быть уверенным, что система использует именно указанные вами DNS, а не те, что "протолкнул" роутер. После внесения изменений не забудьте переподключиться.
Что такое приоритет подключений?
Network Manager присваивает профилям приоритет (connection.autoconnect-priority). Если доступно несколько знакомых сетей, будет выбран профиль с наивысшим приоритетом. Изменить его можно командой: nmcli connection modify "Name" connection.autoconnect-priority 100. Чем выше число, тем выше приоритет.
Диагностика проблем и отладка
Даже в отлаженной системе могут возникать сбои. Network Manager предоставляет мощные инструменты для логирования. Основной журнал можно просмотреть через journalctl, фильтруя по юниту NetworkManager. Это позволяет увидеть процесс рукопожатия, ошибки аутентификации или проблемы с DHCP в реальном времени.
Частой проблемой является "залипание" состояния устройства или профиля. В таких случаях помогает перезапуск самого демона сети. Это безопасная операция, которая пересобирает все конфигурации заново.
sudo systemctl restart NetworkManager
- 🔍 journalctl -u NetworkManager -f — мониторинг логов в реальном времени.
- 🔄 nmcli radio wifi off/on — программное выключение и включение адаптера.
- 🗑️ nmcli connection delete — удаление проблемного профиля для чистой пересоздания.
Если устройство постоянно теряет связь, проверьте настройки энергосбережения. Некоторые драйверы WiFi агрессивно отключают карту для экономии батареи, что приводит к разрывам. Это решается добавлением параметра wifi.powersave со значением 2 (отключено) в конфигурацию профиля.
FAQ: Часто задаваемые вопросы
Как найти сохраненный пароль от WiFi в Network Manager?
Пароли хранятся в зашифрованном виде, но nmcli умеет их показывать. Используйте команду: nmcli connection show "Name" | grep 802-11-wireless-security.key-mgmt для проверки типа, а для просмотра самого пароля (если у вас есть права root): sudo nmcli connection show "Name" | grep psk.
Почему Network Manager не видит мой WiFi адаптер?
Скорее всего, отсутствует драйвер или он заблокирован. Проверьте вывод lspci или lsusb. Также убедитесь, что WiFi не заблокирован аппаратным переключателем или командой rfkill. Выполните rfkill list и, при необходимости, rfkill unblock wifi.
Можно ли настроить раздачу WiFi (Hotspot) через nmcli?
Да, это возможно. Нужно создать соединение с режимом mode ap. Пример: nmcli connection add type wifi ifname wlan0 con-name MyHotspot ssid MyHotspot mode ap wifi-sec.key-mgmt wpa-psk wifi-sec.psk "12345678" ipv4.method shared.
Как заставить систему игнорировать определенные сети?
Network Manager не имеет прямой функции "черного списка" для сканирования, но вы можете запретить автоматическое подключение к известным сетям. Используйте команду: nmcli connection modify "BadNetwork" connection.autoconnect no. Это предотвратит подключение, но сеть будет видна в списке.