Содержание
Введение
Одна из особенностей операционных систем на базе ядра Linux - это постоянные улучшения. Система свободна, и кто угодно может предложить свои нововведения. С другой стороны, есть тот, кто не желает применять эти нововведения. В связи с этим традиционно в Linux имеется несколько наборов инструментов для настройки чего-нибудь, в том числе и для настройки сети, и по началу бывает трудно разобраться как это все использовать.
Цель данной статьи – озвучить, какие есть инструменты для настройки сетевых параметров, и дать понимание, как эти инструменты связанны между собой. Подробности реализации каждого из методов имеются во множестве источников.
В общем существует четыре основных метода настройки сети, а именно:
1. Временная настройка вручную;
2. Использование скриптов инициализации;
3. Использование специальной службы для сетевых настроек;
4. Использование службы systemd.
Помимо указанных методов существуют и другие, которые применяются в отдельных ОС, например, netplan в Ubuntu, или используются, когда устанавливается специализированное ПО. Например, пакет frr для управления маршрутизацией помимо настройки протоколов маршрутизации может настраивать и адреса на сетевых интерфейсах.
Тут все просто. Здесь мы используем команду, которая создает и/или настраивает сетевой интерфейс. В современных дистрибутивах для этого обычно используется команда ip. Хотя ранее использовалась команда ifconfig, и которая может быть не установлена.
Цель данной статьи – озвучить, какие есть инструменты для настройки сетевых параметров, и дать понимание, как эти инструменты связанны между собой. Подробности реализации каждого из методов имеются во множестве источников.
Методы настроек
В общем существует четыре основных метода настройки сети, а именно:
1. Временная настройка вручную;
2. Использование скриптов инициализации;
3. Использование специальной службы для сетевых настроек;
4. Использование службы systemd.
Помимо указанных методов существуют и другие, которые применяются в отдельных ОС, например, netplan в Ubuntu, или используются, когда устанавливается специализированное ПО. Например, пакет frr для управления маршрутизацией помимо настройки протоколов маршрутизации может настраивать и адреса на сетевых интерфейсах.
Временная настройка вручную
Тут все просто. Здесь мы используем команду, которая создает и/или настраивает сетевой интерфейс. В современных дистрибутивах для этого обычно используется команда ip. Хотя ранее использовалась команда ifconfig, и которая может быть не установлена.
Сделаем некоторое отступление и объясним, что такое сетевой интерфейс. Это — программное соответствие физического или виртуального сетевого устройства, предназначенное для передачи данных между процессами через компьютерную сеть. Физические устройства это ethernet или Wi-Fi адаптеры. Виртуальные — мосты, агрегированные устройства, туннели и прочие. Каждому сетевому интерфейсу присваивается имя, но не создаются файлы устройств.
Пример настройки IP адреса 10.1.1.1/24 на сетевом интерфейсе с именем enp0s3:
ip address add 10.1.1.1/24 dev enp0s3
Вроде все просто, но все настройки, которые вы сделаете таким образом, будут забыты после перезагрузки. Поэтому этот метод используется как временное решение, например, чтобы что-нибудь протестировать или однократно подключиться к некоторой сети.
Использование скриптов инициализации
Этот классический метод настройки для постоянных настроек сети. Для начала администратор редактирует файл или файлы, в которых описаны сетевые настройки, а при старте ОС специальные скрипты обрабатывают эти файлы и настраивают сетевые интерфейсы в соответствии с тем, что написано в файле. Примером таких файлов являются /etc/network/interfaces в Debian и Debian-подобных дистрибутивах или /etc/sysconfig/network-scripts/ifcfg-* файлы в RedHat и RedHat-подобных ОС.
Обычно применение конфигурации осуществляется специальной службой (скриптом), например /etc/init.d/networking в Debian или /etc/init.d/network в RedHat. Поэтому для применения изменившихся настроек надо перезапустить эти службы или выключить и включить интерфейс командами ifup и ifdown. По названию утилит этот метод еще называют ifupdown.
Поскольку конфигурация применяется скриптами, постольку ОС не может отслеживать изменившиеся. Возьмем, к примеру, Wi-Fi на ноутбуке. Пользователь может взять его и перейти в другое место, в котором надо подключиться к другой сети, но данный метод не в состоянии такую задачу решить.
Этот метод в некоторых ОС считается устаревшим и уже полностью удален, например, в Fedora 39.
Использование специальной службы для сетевых настроек
Такой службой являются NetworkManager. Принцип работы следующий: служба NetworkManager работает постоянно и отслеживает состояние интерфейсов и применяет нужные настройки, описанные в конфигурации, так же NetworkManager уведомляет все заинтересованные приложения об изменившемся состоянии.
NetworkManager использует дополнительную абстракцию — подключение (connection). Подключение описывает логику того, как будет работать сетевой интерфейс. При этом подключение не тождественно интерфейсу (в терминологии NetworkManager — device), например, при настройке Wi-Fi для каждой беспроводной сети создается отдельное соединение, но все они связаны с одним интерфейсом.
Для настройки подключений не принято редактировать какие-либо файлы, хотя это возможно. Вместо этого используются специализированные утилиты: графические — nm-connection-editor или gnome-control-center; терминальные — nmcli или nmtui. Вы выбираете тот инструмент, который удобен в данный момент, но все инструменты делают одно и то же.
NetworkManager автоматизирует настройку, стремясь делать ее более простой и удобной.
Использование службы systemd
В systemd имеется отдельная служба systemd-networkd, которая предназначена для настройки сетевых интерфейсов. В systemd-networkd для настройки используются конфигурационные файлы с достаточно простым ini синтаксисом. При этом поддерживаются достаточно сложные конфигурации сети.
Служба systemd-networkd постоянно работает и автоматически применяет настройки, но в отличие от NetworkManager она не имеет интерфейса для уведомления другие приложения. В некоторых случаях для настройки сети потребуются дополнительные настройки посредством сторонних средств, снова приведу в пример Wi-Fi, для его настройки потребуется специальная настройка подключения к беспроводной сети посредством wpa_supplicant или iwd.
По функционалу и удобству systemd-networkd можно расположить между классическими скриптами инициализации и NetworkManager.
Заключение
В ОС Linux может быть реализовано несколько методов настройки сети. Когда вы будете что-либо настраивать, выбирайте один метод настройки. Если не следовать этому принципу, то результат может быть непредсказуем. Пример из жизни, в одной из ОС один интерфейс настроили с помощью скриптов, а другой посредством NetworkManager, и в результате поломалось разрешение имен. Надо заметить, что эту проблему уже исправили, но осадочек остался.
Другими словами, если взялись настраивать параметры сетевого подключения одним способом, никогда не используйте альтернативные способы в той же самой машине.
Для серверных установок метод настроек не важен, но часто администраторы в таких системах используют или скрипты инициализации или systemd-networkd, так как в серверных инсталляциях настройки относительно статичны. К тому же на сервере лучше не запускать «лишние» службы.
Для рабочих станций лучше использовать NetworkManager, так как этот метод позволяет применить сетевые настройки относительно просто, особенно если есть графическая среда. Второе преимущество NetworkManager это обратная связь с пользовательскими утилитами, когда пользователь может не только сам инициировать нужное ему подключение, например, VPN, но и получить уведомление о состоянии сетевых подключений.
За подробностями о том, как настраивать сеть, приглашаю вас на курсы в наш Учебный центр
Будьте в курсе всех событий
Подпишись на рассылку актуальных новостей
и читай нас в соц. сетях