Hetzner · Документация

Настройка сети через systemd-networkd: файлы .network, маршруты и IPv6

Обновлено

systemd-networkd — встроенный в systemd сетевой менеджер, который читает конфигурацию из файлов в /etc/systemd/network/. Он используется в серверных образах Debian и Ubuntu (netplan с renderer: networkd тоже создаёт для него файлы) и подходит для статических конфигураций серверов. Ниже — типовые настройки; адреса в примерах документационные, свои значения возьмите в Robot или консоли.

Включение

systemctl enable --now systemd-networkd
systemctl enable --now systemd-resolved
ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

Если на сервере работают ifupdown или NetworkManager, отключите их, чтобы они не конфликтовали.

Статический адрес

# /etc/systemd/network/10-wan.network
[Match]
Name=enp0s31f6

[Network]
Address=203.0.113.10/26
Gateway=203.0.113.1
Address=2001:db8:1234::2/64
Gateway=fe80::1
DNS=185.12.64.1
DNS=185.12.64.2

Применить: networkctl reload (или systemctl restart systemd-networkd). Проверить: networkctl status enp0s31f6.

Дополнительные адреса и маршруты

[Network]
Address=203.0.113.10/26
Address=203.0.113.55/32
Gateway=203.0.113.1

[Route]
Destination=198.51.100.0/24
Gateway=203.0.113.1

Для адресов, шлюз которых находится вне подсети интерфейса, используйте GatewayOnLink=yes в секции [Route]:

[Route]
Gateway=203.0.113.1
GatewayOnLink=yes

Подробнее об адресации — в справке Конфигурация статического IP.

VLAN (vSwitch) с MTU 1400

Для vSwitch Hetzner рекомендует ограничить MTU VLAN-интерфейса значением 1400. Нужны два файла:

# /etc/systemd/network/10-enp0s31f6.4000.netdev
[NetDev]
Name=enp0s31f6.4000
Kind=vlan
MTUBytes=1400

[VLAN]
Id=4000
# /etc/systemd/network/10-wan.network — добавьте в основной интерфейс
[Network]
VLAN=enp0s31f6.4000

# /etc/systemd/network/20-vlan4000.network
[Match]
Name=enp0s31f6.4000

[Network]
Address=10.0.1.2/24

Идентификатор VLAN берите из Robot. Если на сервере включён межсетевой экран, разрешите внутренние адреса (Межсетевой экран — FAQ).

Отладка

networkctl list
networkctl status -a
journalctl -u systemd-networkd -b --no-pager | tail -50
ip -br addr; ip route; ip -6 route

Файлы применяются в алфавитном порядке, и для интерфейса действует первый подходящий .network: используйте числовые префиксы и следите, чтобы два файла не совпадали по [Match].

Типичные ошибки

  • Два .network файла на один интерфейс — применяется только первый по имени.
  • Не запущен systemd-resolved, а resolv.conf указывает на заглушку.
  • Старый netplan создаёт файлы в /run/systemd/network и перебивает ваши настройки: оставьте один источник конфигурации (Debian и Ubuntu).

Частые вопросы

Нужно ли перезагружать сервер после изменений?

Нет, достаточно networkctl reload и, если нужно, networkctl reconfigure ИМЯ. Меняя основной интерфейс, делайте это из консоли.

Как включить DHCP?

Вместо адресов укажите в секции [Network] параметр DHCP=yes; в облаке это поведение по умолчанию.

Чем networkd отличается от NetworkManager?

networkd проще и подходит серверам со статической конфигурацией, NetworkManager удобнее для динамических сетей и ноутбуков.