NetworkManager
NetworkManager — это программное обеспечение для управления сетевыми подключениями в операционных системах на ядре Linux и других Unix-подобных системах. Оно предоставляет унифицированный интерфейс для настройки и контроля проводных (Ethernet), беспроводных (Wi-Fi), мобильных (3G/4G/5G, PPPoE), VPN-соединений, а также интерфейсов Bluetooth и DSL. NetworkManager автоматизирует процесс подключения к сетям, переключения между ними и управления сетевыми настройками, обеспечивая работу как в графической среде рабочего стола, так и в консольном режиме.
История
Проект NetworkManager был основан в 2004 году компанией Red Hat в рамках инициативы по улучшению пользовательского опыта в Linux. Первоначально он разрабатывался как замена устаревшим и сложным в настройке скриптам ifup/ifdown, которые требовали ручного редактирования конфигурационных файлов. Основной целью было создание инструмента, который бы автоматически обнаруживал доступные сети и подключался к ним без участия пользователя, аналогично тому, как это работает в Windows (с помощью службы Wireless Zero Configuration) или macOS.
Первая стабильная версия (0.6) вышла в 2005 году. В последующие годы NetworkManager был принят в качестве стандартного сетевого менеджера в большинстве дистрибутивов Linux, включая Fedora, Ubuntu, Debian, openSUSE и Arch Linux. В 2007 году проект был выпущен под лицензией GNU General Public License (GPL) версии 2. Ключевыми вехами стали поддержка WPA2 Enterprise, VPN-плагинов (OpenVPN, PPTP, L2TP/IPsec), а также интеграция с systemd в 2010-х годах.
Архитектура и принцип работы
NetworkManager состоит из двух основных компонентов: фонового демона (NetworkManager) и набора клиентских интерфейсов. Демон работает с привилегиями суперпользователя и отвечает за обнаружение оборудования, управление соединениями и обработку запросов. Он взаимодействует с ядром через системные вызовы и библиотеки, такие как libnl (для управления сетевыми интерфейсами) и wpa_supplicant (для настройки Wi-Fi).
Демон NetworkManager
Демон (NetworkManager.service) запускается при старте системы и работает в фоновом режиме. Он отслеживает состояние сетевых интерфейсов с помощью udev и подсистемы netlink. При обнаружении нового интерфейса (например, после подключения USB-адаптера) демон автоматически настраивает его, используя сохранённые профили подключений. Профили хранятся в виде конфигурационных файлов в /etc/NetworkManager/system-connections/ (каждый профиль — отдельный файл) или в виде ключей в системном реестре (для некоторых дистрибутивов).
Клиентские интерфейсы
Для взаимодействия пользователя с демоном используются различные клиенты:
- nmcli — консольная утилита командной строки. Позволяет управлять сетями, создавать, редактировать и удалять подключения, а также получать информацию о состоянии сети. Пример:
nmcli device wifi connect "SSID" password "пароль". - nmtui — текстовый интерфейс на основе curses. Предоставляет меню для настройки сети без использования графической оболочки.
- Графические апплеты — встроенные в среды рабочего стола (GNOME, KDE, Xfce) виджеты, которые отображают список доступных сетей и позволяют подключаться к ним одним кликом. В GNOME это апплет
nm-applet. - D-Bus API — программный интерфейс, позволяющий сторонним приложениям (например, системным мониторам или сетевым менеджерам) управлять NetworkManager через шину D-Bus.
Классификация и виды подключений
NetworkManager поддерживает широкий спектр типов сетевых соединений, которые классифицируются по способу подключения и используемому протоколу:
Проводные соединения (Ethernet)
Настройка сетевых интерфейсов, подключённых через кабель (витая пара, оптоволокно). Поддерживаются статические IP-адреса, DHCP (включая DHCPv6), а также настройка DNS-серверов и маршрутов.
Беспроводные соединения (Wi-Fi)
Управление точками доступа, поддержка стандартов 802.11a/b/g/n/ac/ax. NetworkManager использует wpa_supplicant для аутентификации (WPA/WPA2/WPA3, WEP, EAP). Возможно подключение к скрытым сетям и настройка приоритетов.
Мобильные широкополосные соединения (WWAN)
Поддержка модемов 3G/4G/5G через протоколы PPP, QMI (Qualcomm MSM Interface) и MBIM (Mobile Broadband Interface Model). Для работы требуется пакет ModemManager.
Виртуальные частные сети (VPN)
NetworkManager предоставляет модульную архитектуру для VPN-подключений. Поддерживаются плагины для OpenVPN, WireGuard, PPTP, L2TP/IPsec, OpenConnect (Cisco AnyConnect), SSTP и других протоколов. Каждый плагин устанавливается отдельно.
Bluetooth-сети
Подключение к интернету через Bluetooth PAN (Personal Area Network) или DUN (Dial-Up Networking).
DSL и PPPoE
Поддержка соединений через ADSL-модемы с использованием протокола PPPoE (Point-to-Point Protocol over Ethernet).
Мосты и агрегация
NetworkManager может управлять сетевыми мостами (bridge) и агрегацией каналов (bonding), что используется в виртуализации (например, для KVM) и серверных конфигурациях.
Настройка и конфигурация
Основные файлы конфигурации
Глобальные настройки NetworkManager хранятся в файле /etc/NetworkManager/NetworkManager.conf. В нём можно задать параметры, такие как:
managed=true/false— разрешить управление интерфейсами, не указанными вunmanaged-devices.plugins=keyfile,ifcfg-rh— указать, какие плагины использовать для хранения профилей (keyfile — для современных дистрибутивов, ifcfg-rh — для совместимости с Red Hat).dns=default,unbound,dnsmasq— выбор DNS-резолвера (см. раздел ниже).
Управление через nmcli
Утилита nmcli позволяет выполнять все основные операции. Примеры:
- Просмотр доступных устройств:
nmcli device status - Сканирование Wi-Fi сетей:
nmcli device wifi list - Подключение к сети:
nmcli device wifi connect "SSID" password "пароль" - Создание статического подключения:
nmcli connection add con-name "eth0-static" type ethernet ifname eth0 ip4 192.168.1.100/24 gw4 192.168.1.1
Интеграция с DNS
NetworkManager может управлять системным резолвером, записывая настройки DNS в /etc/resolv.conf. В зависимости от конфигурации, он может использовать:
- dnsmasq — локальный кэширующий DNS-сервер, который также может выполнять функции DHCP-сервера.
- systemd-resolved — служба DNS, входящая в состав systemd.
- unbound — валидирующий DNS-резолвер с поддержкой DNSSEC.
Применение и значение
NetworkManager является стандартом де-факто для управления сетями в Linux. Его использование значительно упрощает настройку сети для конечных пользователей, особенно в мобильных сценариях (ноутбуки, планшеты). В серверных средах NetworkManager часто заменяют на более традиционные инструменты (например, systemd-networkd или netplan), но он остаётся популярным благодаря своей гибкости и поддержке сложных конфигураций.
Преимущества
- Автоматическое обнаружение и подключение к сетям.
- Поддержка множества типов соединений.
- Интеграция с графическими средами рабочего стола.
- Возможность управления через D-Bus для автоматизации.
Критика
- Избыточность для серверов, где требуется статическая настройка без автоматизации.
- Иногда вызывает проблемы с совместимостью при использовании нестандартных сетевых интерфейсов (например, виртуальных).
- Конфликты с другими сетевыми менеджерами (например,
systemd-networkd) при одновременной работе.
Интересные факты
- NetworkManager поддерживает «подключения по требованию» (on-demand), когда соединение активируется только при попытке доступа в интернет.
- Для работы с VPN-соединениями NetworkManager использует плагины, которые не входят в основной пакет, что позволяет избежать раздувания кода.
- В дистрибутиве Fedora NetworkManager является единственным поддерживаемым сетевым менеджером, начиная с версии 15 (2012 год).
- Проект активно развивается сообществом; последняя стабильная версия на момент написания — 1.48 (2024 год).
Источники
- Официальная документация NetworkManager (GNOME Developer Center)
- Страница проекта на GitLab (gitlab.freedesktop.org/NetworkManager/NetworkManager)
- «Linux Network Administrator's Guide» (O'Reilly Media)
- Статья «NetworkManager» в Arch Wiki
- Материалы Red Hat Enterprise Linux 9 — Networking Guide
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →