Введение

Программное обеспечение

NetworkManager — это демон, который работает поверх libudev и других интерфейсов ядра Linux (а также нескольких других демонов) и предоставляет высокоуровневый интерфейс для настройки сетевых интерфейсов.

Обоснование

NetworkManager — это программная утилита, предназначенная для упрощения работы с компьютерными сетями. NetworkManager доступен для операционных систем на базе ядра Linux и других Unix-подобных систем.

Как это работает

Для подключения компьютеров друг к другу были разработаны различные протоколы связи, например, IEEE 802.3 (Ethernet), IEEE 802.11 ("беспроводной"), IEEE 802.15.1 (Bluetooth), PPPoE, PPPoA и многие другие. Каждый участвующий компьютер должен иметь соответствующее оборудование, например, сетевую карту или беспроводную сетевую карту, и это оборудование должно быть соответствующим образом сконфигурировано для установления соединения. В случае монолитного ядра все драйверы устройств являются его частью. Доступ к аппаратному обеспечению (а также его настройка) осуществляется через драйвер устройства. В случае Linux, ядро представляет каждый драйвер устройства в виде файла устройства. Все файлы устройств находятся в каталоге /dev, и традиционно файлы устройств для оборудования Ethernet назывались eth0, eth1 и т. д. С момента появления systemd они стали называться иначе: enp4s0 и т. д. (Эта абстракция называется концепцией "всё есть файл"). Любая программа в пользовательском пространстве получает доступ к аппаратному обеспечению через файл устройства. Это относится и к утилите конфигурации для настройки оборудования, и к программам, таким как веб-браузер, SSH-клиент, NTP-клиент и т. д., для отправки и приема сетевых пакетов.

Конфигурация сетевых интерфейсов без NetworkManager

На Linux и всех Unix-подобных операционных системах утилиты ifconfig и более новая ip (из пакета iproute2) используются для настройки оборудования IEEE 802.3 и IEEE 802.11. Эти утилиты настраивают ядро напрямую, и настройка применяется немедленно. После загрузки системы пользователю требуется настроить их снова. Для применения одной и той же статической конфигурации после каждой загрузки используются программы PID1: System V init выполняет скрипты оболочки и бинарные программы, systemd анализирует собственные файлы конфигурации (и выполняет программы). Конфигурация загрузки сетевых интерфейсов хранится в файле /etc/network/interfaces для дистрибутивов Debian Linux и их производных, или в файлах ifcfg в каталоге /etc/sysconfig/network-scripts/ для Fedora и их производных, а DNS-серверы – в файле /etc/resolv.conf. Файлы /etc/network/interfaces или /etc/sysconfig/network-scripts/ifcfg* могут определять статический IP-адрес или dhclient для использования, а также здесь можно настроить различные VPN-соединения. В случае необходимости изменения конфигурации протокол DHCP позволяет сделать это автоматически, зачастую даже без участия пользователя.

Конфигурация сетевых интерфейсов с помощью NetworkManager

NetworkManager доступен через dbus. Конфигурация хранится в /etc/NetworkManager/NetworkManager.conf.

Однако, по мере перехода от физически крупных серверов к более портативным устройствам, которые пользователь может подключать и отключать (или перемещать между точками доступа Wi-Fi) по своему усмотрению, динамические конфигурации – то есть, не хранящиеся в статическом файле конфигурации, а получаемые из внешних источников и потенциально изменяющиеся после загрузки – стали более распространёнными. Bootp был одним из первых протоколов, использовавшихся для этого, и его потомок DHCP до сих пор широко применяется. Многие Unix-подобные системы включают программу dhclient для обработки динамической конфигурации. При относительно стабильной или простой динамической конфигурации, статическая конфигурация, модифицируемая dhclient, работает эффективно. Однако, с ростом сложности сетей и их топологий, централизованный менеджер для всей информации о сетевой конфигурации становится всё более необходимым.

Помощник по конфигурации мобильной широкополосной связи

Антти Кайянмяки объявил о разработке мастера настройки мобильной широкополосной связи для NetworkManager в апреле 2008 года; он стал доступен в NetworkManager версии 0.7.0. Вместе с пакетом информации о провайдерах мобильной широкополосной связи подключение настраивается легко.

История

Red Hat инициировала проект NetworkManager в 2004 году, чтобы упростить пользователям Linux работу с современными сетевыми задачами, особенно с беспроводными сетями. NetworkManager использует оппортунистический подход к выбору сети, стремясь использовать наилучшее доступное соединение при сбоях или при перемещении пользователя между беспроводными сетями. Он предпочитает Ethernet-соединения «известным» беспроводным сетям, которые, в свою очередь, предпочтительнее беспроводных сетей с SSID, к которым пользователь ранее не подключался. При необходимости пользователю предлагается ввести ключи WEP или WPA. Проект NetworkManager стал одним из первых крупных компонентов рабочего стола Linux, активно использующих D-Bus и HAL. Однако, начиная с июня 2009 года, NetworkManager больше не зависит от HAL, а с версии 0.9.10 (около 2014 года) ему также не требуется запущенный демон D-Bus для работы от имени пользователя root.