Назад | Перейти на главную страницу

systemd-networkd не может запустить DHCPServer на магистральном порту с несколькими интерфейсами VLAN

Я пытаюсь настроить хост Linux, на котором работает systemd-networkd, на магистральном порту коммутатора. Хост имеет единый интерфейс enp4s0. В коммутаторе всего пара портов VLAN, остальные не помечены. Я хочу добавить DHCP-сервер на магистральный порт.

Мой файл конфигурации с новыми настройками DHCP-сервера выглядит следующим образом.

[Match]
Name=enp4s0

[Network]
DHCPServer=true
VLAN=enp4s0.10
VLAN=enp4s0.20
VLAN=enp4s0.30
DNS=192.168.1.1
Gateway=192.168.1.1
Address=192.168.1.2/24

[DHCPServer]
PoolOffset=100
PoolSize=150
DefaultLeaseTimeSec=300s

Эта комбинация не работает со следующей ошибкой:

systemd-networkd[]: enp4s0: Could not start DHCPv4 server instance: Device or resource busy
systemd-networkd[]: enp4s0: Failed

Бег route -n показывает все маршруты, кроме шлюза по умолчанию. Следуя предложению в: systemd-networkd и прямые маршруты, Я добавил следующее:

[Address]
Address=192.168.1.2/24
Peer=192.168.1.1/32

Это позволило запустить DHCP-сервер, открыть интерфейс и указать маршрут к шлюзу. Все вроде работало. Однако DHCP-сервер никогда не отвечал на запросы. С помощью tcpdump Я видел, как поступают запросы, но от сервера не было ответа.

Затем я добавил маршрут уровня связи к 255.255.255.255, но это не сработало (я думал, что это так, когда тестировал его вручную, но я не могу его воспроизвести). Я добавил:

[Route]
Destination=255.255.255.255/32
Scope=link

Возврат к исходной конфигурации, но комментирование двух VLAN также работает. При следующей конфигурации сеть появляется, VLAN ... фактически, все 3 интерфейса VLAN подходят (?!) ... и DHCPServer отвечает на запросы.

[Match]
Name=enp4s0

[Network]
DHCPServer=true
VLAN=enp4s0.10
#VLAN=enp4s0.20
#VLAN=enp4s0.30
DNS=192.168.1.1
Gateway=192.168.1.1
Address=192.168.1.2/24

[DHCPServer]
PoolOffset=100
PoolSize=150
DefaultLeaseTimeSec=300s

Мне нужно протестировать конфигурацию выше с VLAN, которые появляются, но закомментированы, но в настоящее время я не могу это сделать. Наконец, возврат к конфигурации без DHCP, но запуск внешнего DHCP-сервера работает нормально. То есть автономный запуск udhcpd с этим работает:

[Match]
Name=enp4s0

[Network]
VLAN=enp4s0.10
VLAN=enp4s0.20
VLAN=enp4s0.30
DNS=192.168.1.1
Gateway=192.168.1.1
Address=192.168.1.2/24

Боюсь, что есть что-то фундаментальное, чего я не понимаю, что мешает мне сказать, что это ошибка в systemd-networkd. У кого-нибудь работает этот сценарий? Я использую systemd-237.

Похоже, это работает, как ожидалось. При комментировании идентификаторов VLAN и перезапуске сети уже настроенные интерфейсы (теперь закомментированные) не удаляются. При работе без головы невозможно отключить интерфейс, отредактировать, а затем восстановить его, поэтому при необходимости я просто удаляю устаревшие VLAN вручную.