Вопрос или проблема
В /lib/systemd/network/10-eth0.network
на моем клиенте я не могу настроить ничего, что могло бы преобразовать мою ручную команду:
sudo ip route add default via 192.168.7.1 dev eth0
где 192.168.7.1
— это статический IPv4 адрес моего хоста.
Моя последняя попытка конфигурации 10-eth0.network
:
[Match]
Name=eth0
[Link]
RequiredForOnline=no
[Route]
Address=192.168.7.2/24
Destination=192.168.7.1/32
Gateway=192.168.7.1
Обновлено с помощью sudo systemctl restart systemd-networkd
и проверено с помощью ip route
(это не отображается).
Смотрите также:
[Route]
Опции секции- Ответы, которые не работают: systemd-networkd и прямые маршруты
Вы нигде не указали, что это должно быть значение по умолчанию; вместо этого у вас Destination=192.168.7.1/32
– что является полной противоположностью маршруту default
… а также является цикличным (самореферирующим) маршрутом. Согласно вашей конфигурации, он, вероятно, отображается как 192.168.7.1/32 dev eth0
в вашем выводе маршрутов (это будет эффективная интерпретация, если ядро не отклонит это).
Маршрут по умолчанию всегда 0.0.0.0/0
, т.е. общий маршрут с самым низким приоритетом, и это то, что вам нужно определить как Destination=
. (В качестве альтернативы вы можете полностью опустить Destination=.)
Маршрут через Gateway=192.168.7.1
может быть определен только в том случае, если вы находитесь в одной подсети. Для этого убедитесь, что параметр Address=192.168.7.2
находится либо в секции [Address]
, либо в секции [Network]
– это не имеет смысла в секции [Route].
Ответ или решение
Для настройки маршрута по умолчанию на физическом интерфейсе с использованием systemd-networkd
, вам следует учесть некоторые ключевые моменты и синтаксис конфигурации. Ваша текущая конфигурация имеет несколько ошибок, которые нужно исправить, чтобы данный маршрут корректно работал.
Шаги по добавлению маршрута по умолчанию через systemd-networkd
-
Обновление конфигурации файла:
Вам нужно изменить файл конфигурации10-eth0.network
, чтобы корректно задать маршрут по умолчанию. Текущая настройка не определяет маршрут по умолчанию и содержит ошибки в определении параметров.Пример правильной конфигурации файла
10-eth0.network
выглядит следующим образом:[Match] Name=eth0 [Network] Address=192.168.7.2/24 Gateway=192.168.7.1 [DHCP] UseDNS=no
В этом примере:
- В секции
[Network]
мы задаем IP-адрес192.168.7.2
с маской подсети/24
, а также указываем шлюз по умолчаниюGateway=192.168.7.1
. - Секция
[DHCP]
с параметромUseDNS=no
указывает, что системы не будут использовать DNS от DHCP-сервера (если такая конфигурация DHCP будет активна).
- В секции
-
Перезапуск
systemd-networkd
:
После внесения изменений в конфигурационный файл, необходимо перезапустить демонsystemd-networkd
, чтобы новые настройки вступили в силу. Команда для выполнения:sudo systemctl restart systemd-networkd
-
Проверка маршрутов:
После перезапуска службы следует проверить текущие маршруты, выполняя команду:ip route
Убедитесь, что вывод команды включает строку, указывающую на маршрут по умолчанию, например:
default via 192.168.7.1 dev eth0
Объяснение конфигурации
- Секция
[Match]
: Здесь определяется, к какому интерфейсу будут применяться описанные ниже параметры. В данном случае этоeth0
. - Секция
[Network]
: Важно, чтобы параметры IP-адреса и шлюза находились именно здесь. Неправильное размещение этих параметров, как в вашем случае, приводит к их игнорированию. - Секция
[Route]
: Для установки статического маршрута это не требуется, если вы задаете маршруты в секции[Network]
. Именно для маршрута по умолчанию0.0.0.0/0
необходимо использоватьGateway
.
Соблюдая эти рекомендации, вы сможете успешно настроить маршрут по умолчанию на физическом интерфейсе с использованием systemd-networkd
.