Systemd-networkd — Управление сетью

Установка, настройка, эксплуатация.

Модератор: ROOT

Systemd-networkd — Управление сетью

Сообщение ROOT » 15 авг 2024, 19:24

Оглавление


 Темы 
 Преимущества systemd-networkd 
 Недостатки systemd-networkd 
 Настройка IPv4 и IPv6 с systemd-networkd 
 Пример настройки IPv4 
 Пример настройки IPv6 
 Основные команды для управления systemd-networkd 
 Демонстрационный пример 
 Реальный пример 
 Пример для TunnelBroker Hurricane Electric 6in4 
 Заключение 
 Настройка параметров Ethernet 
Дополнительные материалы
Network-Scripts — Управление сетью
NetworkManager — Управление сетью


systemd-networkd — это сетевой менеджер, являющийся частью systemd, предназначенный для управления сетевыми интерфейсами в Linux. Он поддерживает различные типы сетевых конфигураций, включая проводные и беспроводные сети, VPN, VLAN, мосты и т.д. Этот инструмент особенно полезен для серверов и минималистичных систем, где не требуется графический интерфейс.

 Преимущества systemd-networkd 
  1. Интеграция с systemd:Поскольку systemd-networkd является частью systemd, он тесно интегрирован с остальными компонентами системы, что обеспечивает быструю и эффективную работу.
  2. Легковесность: systemd-networkd потребляет минимальные ресурсы, что делает его идеальным выбором для серверов и встроенных систем.
  3. Автоматизация: Он автоматически обнаруживает и настраивает сетевые интерфейсы при их подключении.
  4. Гибкость: Поддержка множества сетевых функций, таких как VLAN, мосты, туннели, статические и динамические IP-адреса, маршрутизация и другие.
  5. Управление через конфигурационные файлы: systemd-networkd использует простой и понятный формат конфигурационных файлов, что упрощает его настройку и управление.

 Недостатки systemd-networkd 
  1. Отсутствие GUI: В отличие от NetworkManager, systemd-networkd не имеет графического интерфейса для управления сетью, что может затруднить его использование для пользователей, предпочитающих работать в графической среде.
  2. Меньшая популярность: В Fedora и других дистрибутивах по умолчанию используется NetworkManager, поэтому для некоторых пользователей переход на systemd-networkd может потребовать изучения новых инструментов и подходов.
  3. Меньшая поддержка для сложных сетевых конфигураций в десктопных средах: Для продвинутых конфигураций и взаимодействия с Wi-Fi systemd-networkd может быть менее удобным по сравнению с NetworkManager.

 Настройка IPv4 и IPv6 с systemd-networkd 
Для настройки сетевых интерфейсов через systemd-networkd, конфигурационные файлы создаются в директории /etc/systemd/network/. Название файла может быть любым, но важно, чтобы он имел расширение .network. Например, файл 20-wired.network.

 Пример настройки IPv4 
  1. Создайте конфигурационный файл:
    Код: выделить все
    nano /etc/systemd/network/20-wired.network
  2. Добавьте следующую конфигурацию для статического IP:
    Код: выделить все
    [Match]
    Name=enp1s0

    [Network]
    Address=192.168.1.100/24
    Gateway=192.168.1.1
    DNS=8.8.8.8
  3. Для получения IP-адреса через DHCP:
    Код: выделить все
    [Match]
    Name=enp1s0

    [Network]
    DHCP=yes
  4. Перезапустите systemd-networkd для применения изменений:
    Код: выделить все
    systemctl restart systemd-networkd


 Пример настройки IPv6 
  1. Для статической настройки IPv6:
    Код: выделить все
    [Match]
    Name=enp1s0

    [Network]
    Address=2000:2cc0:13b1:3333::4/64
    Gateway=2000:2cc0:13b1:3333::1
    DNS=2000:2cc0:13b1:3333::1
  2. Для получения IP-адреса через SLAAC:
    Код: выделить все
    [Match]
    Name=enp1s0

    [Network]
    IPv6AcceptRA=yes
  3. Для использования DHCPv6:
    Код: выделить все
    [Match]
    Name=enp1s0

    [Network]
    DHCP=yes
  4. Перезапустите systemd-networkd:
    Код: выделить все
    systemctl restart systemd-networkd

 Основные команды для управления systemd-networkd 
  1. Запуск systemd-networkd:
    Код: выделить все
    systemctl start systemd-networkd

  2. Автозапуск при загрузке:
    Код: выделить все
    systemctl enable systemd-networkd

  3. Просмотр статуса сетевых интерфейсов:
    Код: выделить все
    networkctl status

  4. Просмотр состояния конкретного интерфейса:
    Код: выделить все
    networkctl status enp1s0


Переключение сетевого менеджера
Код: выделить все
systemctl disable --now NetworkManager && systemctl enable --now systemd-networkd

После запуска системная служба systemd-resolved создаст свой собственный файл resolv.conf в одной из поддиректорий директории /run/systemd. Однако, обычной практикой является сохранение этого файла по пути /etc/resolv.conf, причем многие сетевые приложения все еще используют именно файл /etc/resolv.conf. Исходя из этого, вам придется создать символьную ссылку с именем /etc/resolv.conf следующим образом:
Код: выделить все
rm /etc/resolv.conf && ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf



 Демонстрационный пример 
Пример для демонстрации большинства необходимых опций конфигурирования.
Код: выделить все
[Match]
Name=eth0

[Network]
#DHCP=yes
#DHCP=ipv6
Address=192.168.114.10/24
Address=2000:2cc0:13b1:3333::4/64
DNS=192.168.114.3
DNS=2000:2cc0:13b1:3333::1
DNSSEC=false
DNSSECNegativeTrustAnchors=tr-home.de
Domains=tr-home.de ~.
# overrides setting via sysctl
IPv6PrivacyExtensions=kernel
ManageTemporaryAddress=true
IPv6AcceptRA=true
LinkLocalAddressing=ipv6
IPv6LinkLocalAddressGenerationMode=eui64

[IPv6AcceptRA]
UseDNS=false
Token=eui64

[DHCPv6]
UseDNS=false

[Route]
Gateway=192.168.114.1
GatewayOnlink=yes

[Route]
Gateway=2000:2cc0:13b1:3333::1

В конфигурационном файле для systemd-networkd используются различные параметры для настройки сетевого интерфейса и его поведения. Давайте рассмотрим назначение опций:

    [Match]
  • Name=eth0: Этот параметр указывает, что настройки из этого файла будут применяться только к сетевому интерфейсу с именем eth0. Если интерфейс имеет другое имя, настройки не будут применяться.

    [Network]
  • DNSSEC=false: Отключает проверку подписей DNSSEC при разрешении доменных имен. DNSSEC обеспечивает защиту от подделки данных DNS, но если эта опция отключена, система не будет проверять подлинность записей DNS.
  • DNSSECNegativeTrustAnchors=tr-home.de: Исключает домен tr-home.de из проверки DNSSEC, даже если DNSSEC включен. Это полезно, если домен не поддерживает DNSSEC, но вы все равно хотите использовать его без предупреждений о некорректных DNS-записях.
  • Domains=tr-home.de ~.: Определяет домены поиска для интерфейса. В этом случае, при запросе неполного имени хоста (например, host1), система сначала попробует найти его в домене tr-home.de, а затем в корневом домене (.). Символ ~. указывает, что этот домен должен использоваться как резервный, если имя не удалось разрешить в других доменах.
  • IPv6PrivacyExtensions=kernel: Управляет использованием временных IPv6-адресов, которые используются для повышения конфиденциальности. Значение kernel указывает, что конфигурация должна использовать параметры, заданные в ядре системы. Временные адреса помогают предотвратить отслеживание устройства на основе его MAC-адреса.
  • ManageTemporaryAddress=true: Если установлено в true, systemd-networkd будет управлять временными IPv6-адресами, которые создаются для повышения конфиденциальности. Эти адреса часто используются для исходящих подключений, чтобы скрыть основной IPv6-адрес устройства.
  • IPv6AcceptRA=true: Включает получение и обработку объявлений маршрутизаторов (RA) для настройки IPv6 через Stateless Address Autoconfiguration (SLAAC). Это позволяет устройству автоматически получать адреса и другую информацию от маршрутизаторов в сети.
  • LinkLocalAddressing=ipv6: Указывает, что на интерфейсе будут использоваться только локальные IPv6-адреса. Локальные адреса используются для связи между устройствами в одной сети (например, fe80::/64). Вариантами также могут быть ipv4, both, или no (отключает локальные адреса).
    IPv6LinkLocalAddressGenerationMode=eui64: Указывает, как генерировать локальный IPv6-адрес. Значение eui64 означает, что адрес будет сгенерирован на основе MAC-адреса интерфейса, что делает его стабильным и предсказуемым.

    [IPv6AcceptRA]
  • UseDNS=false: Отключает автоматическую настройку DNS-серверов, полученных через объявления маршрутизаторов (RA). Это может быть полезно, если вы хотите использовать свои DNS-серверы, а не те, которые предоставляются маршрутизатором.
  • Token=eui64: Использует механизм EUI-64 для генерации идентификатора интерфейса в IPv6-адресах, полученных через SLAAC. Это обеспечивает стабильность адресов, сгенерированных на основе MAC-адреса интерфейса.

    [DHCPv6]
  • UseDNS=false: Отключает использование DNS-серверов, полученных через DHCPv6. Это позволяет использовать вручную настроенные DNS-серверы вместо тех, что предлагает DHCP-сервер.

    [Route]
  • GatewayOnlink=yes: Этот параметр указывает, что шлюз, указанный для маршрута, может находиться в любой сети, не обязательно в сети, к которой подключен данный интерфейс. Это полезно, если шлюз находится за пределами прямого сетевого сегмента, но вы знаете, что он доступен через определённый интерфейс.
    Обычное поведение при указании шлюза в маршрутах — это проверка, находится ли шлюз в одной и той же сети, что и интерфейс, на который назначен маршрут. Если эта проверка не проходит, маршрут не будет активирован. Параметр GatewayOnlink=yes игнорирует эту проверку, позволяя маршрутам с указанным шлюзом быть активированными, даже если он находится "вне" локальной сети.
    Это может быть полезно в сложных сетевых конфигурациях, например, когда вы настраиваете маршрут через VPN или через многосегментные сети, где шлюз не принадлежит напрямую сети интерфейса.
Эти параметры позволяют гибко настроить поведение сетевого интерфейса eth0, управляя тем, как он получает IPv6-адреса, обрабатывает DNS-запросы, использует временные адреса для повышения конфиденциальности и взаимодействует с объявлениями маршрутизаторов. Они обеспечивают более точный контроль над тем, как интерфейс взаимодействует с сетью, что особенно важно в сложных или чувствительных к безопасности средах.


 Реальный пример 
Пример конфигурационного файла с опциями максимально приближенными к реальным условиям использования
Код: выделить все
[Match]
Name=enp0s3

[Network]
DHCP=no
DNS=192.168.114.254
DNS=2000:2cc0:13b1:3333::1
ManageTemporaryAddress=false
IPv6AcceptRA=false
LinkLocalAddressing=ipv6
IPv6LinkLocalAddressGenerationMode=eui64
Domains=free-adm.ru ~.
DNSSECNegativeTrustAnchors=free-adm.ru

[IPv6AcceptRA]
UseDNS=false

[Address]
Label=LANv4
Address=192.168.114.19/24

[Address]
Label=LANv6
Address=2000:2cc0:13b1:3333::19/64

[Route]
Gateway=192.168.114.254

[Route]
Gateway=2000:2cc0:13b1:3333::1



 Пример для TunnelBroker Hurricane Electric 6in4 
eth1.network
Код: выделить все
# Это может быть любой общедоступный интерфейс, в основном тот, который подключен к Интернету (собственный или мостовой).
[Match]
Name=eth1

[Network]
#ваш обычный адрес интерфейса: 10.1.1.2/24
Address=<LOCAL_IPV4>/<NETMASK>
Gateway=<LOCAL_IPV4_GW> # local ip gw e.g 10.1.1.1

#  ниже приведен адрес туннеля
Tunnel=he6
# Первый из ipv6-адресов маршрутизатора туннеля. ( 2001:470:xxx::1/64 or /48)
Address=<ROUTED_IPV6_ADDRESS>

he.netdev
Код: выделить все
#  Определение и создание туннельного интерфейса
[Match]

[NetDev]
Name=he6
Kind=sit
MTUBytes=1480

[Tunnel]
Remote=<SERVER_IPV4_ADDRESS>
Local=<LOCAL_IPV4>
TTL=255


he.network
Код: выделить все
# Это конфигурация вашего туннельного интерфейса
[Match]
Name=he6

[Network]
Address=<CLIENT_IPV6_ADDRESS>
Gateway=<SERVER_IPV6_ADDRESS>

# опционально ip forward
IPForward=yes

# Приведенные ниже маршруты на основе политики необходимы только в том случае,
# если вы уже настроили ipv6 и хотите убедиться, что входящая маршрутизация работает правильно
[Route]
Gateway=<SERVER_IPV6_ADDRESS>
Destination=::/0
Table=200
Metric=20

[RoutingPolicyRule]
Table=200
Family=ipv6
From=<CLIENT_IPV6_ADDRESS>

[RoutingPolicyRule]
Table=200
Family=ipv6
From=<ROUTED_IPV6_PREFIX>



 Заключение 
systemd-networkd — это мощный инструмент для управления сетью, особенно полезный на серверах и в минималистичных окружениях. Он обеспечивает легкость, гибкость и интеграцию с системой, однако требует знания и работы с конфигурационными файлами без графического интерфейса. Fedora, как и другие современные дистрибутивы, поддерживает использование systemd-networkd, что позволяет гибко управлять сетевыми интерфейсами как для IPv4, так и для IPv6.


 Настройка параметров Ethernet 
# /etc/systemd/networkd/internet.link
Код: выделить все
[Match]
MACAddress=a0:36:9f:6e:52:26

[Link]
BitsPerSecond=1G
Duplex=full
MTUBytes=1480
Администрирование Fedora Linux + настройка сети и прочая IT-Ботва


Для желающих поддержать
Карта SB: 5469 4009 6510 2267


Лучше ужасный конец, чем ужас без конца!
Аватар пользователя
ROOT
Администратор
 
Сообщений: 430
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Вернуться в Fedora

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron