Добавьте маршрут по умолчанию на физическом интерфейсе, используя systemd-networkd

Вопрос или проблема

В /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 (это не отображается).

Смотрите также:

Вы нигде не указали, что это должно быть значение по умолчанию; вместо этого у вас 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

  1. Обновление конфигурации файла:
    Вам нужно изменить файл конфигурации 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 будет активна).
  2. Перезапуск systemd-networkd:
    После внесения изменений в конфигурационный файл, необходимо перезапустить демон systemd-networkd, чтобы новые настройки вступили в силу. Команда для выполнения:

    sudo systemctl restart systemd-networkd
  3. Проверка маршрутов:
    После перезапуска службы следует проверить текущие маршруты, выполняя команду:

    ip route

    Убедитесь, что вывод команды включает строку, указывающую на маршрут по умолчанию, например:

    default via 192.168.7.1 dev eth0

Объяснение конфигурации

  • Секция [Match]: Здесь определяется, к какому интерфейсу будут применяться описанные ниже параметры. В данном случае это eth0.
  • Секция [Network]: Важно, чтобы параметры IP-адреса и шлюза находились именно здесь. Неправильное размещение этих параметров, как в вашем случае, приводит к их игнорированию.
  • Секция [Route]: Для установки статического маршрута это не требуется, если вы задаете маршруты в секции [Network]. Именно для маршрута по умолчанию 0.0.0.0/0 необходимо использовать Gateway.

Соблюдая эти рекомендации, вы сможете успешно настроить маршрут по умолчанию на физическом интерфейсе с использованием systemd-networkd.

Оцените материал
Добавить комментарий

Капча загружается...