На моей машине я запускаю несколько контейнеров LXC, некоторые из которых имеют свои собственные IP-адреса вне сети, доступной для хоста. Этот IP-адрес, а также соответствующая маска сети и шлюз были предоставлены мне моим провайдером. Я использую systemd 238 и попробовал следующую конфигурацию [1]:

[Match]
Name=enpXsY

[Network]
Address=192.168.0.2/24
Gateway=192.168.0.1
IPForward=yes

[Route]
Destination=10.0.0.64/29
Gateway=10.0.0.65

В журналах systemd-networkd я вижу следующую ошибку: Could not set route: Network is unreachable , но я не могу это объяснить. Если я не укажу шлюз, ядро сможет нормально маршрутизировать эту сеть. Таким образом, я предполагаю, что он также сможет направлять трафик к шлюзу через тот же интерфейс. Это даже не работает, если я указываю маршрут с Destination=10.0.0.65/32 перед маршрутом к 10.0.0.64/29 , чтобы взять ядро за руку и объяснить, как добраться до этой сети.

ОБНОВЛЕНИЕ: Тем временем я значительно изменил конфигурацию сети хоста, но это были адреса IPv4 и маршруты, с которыми он был настроен [1]:

# ip -4 address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: enpXsY: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    inet 192.168.0.2/24 brd 192.168.0.255 scope global enpXsY
       valid_lft forever preferred_lft forever
4: lxcbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    inet 10.10.10.1/24 brd 10.10.10.255 scope global lxcbr0
       valid_lft forever preferred_lft forever

# ip -4 route
default via 192.168.0.1 dev enpXsY proto static 
192.168.0.0/24 dev enpXsY proto kernel scope link src 192.168.0.2
10.10.10.0/24 dev lxcbr0 proto kernel scope link src 10.10.10.1 

[1]: Я перевел фактические IP-адреса в аналогичные адреса в не маршрутизированных сетях из соображений конфиденциальности.

1 ответ1

1

В журналах systemd-networkd я вижу следующую ошибку: Could not set route: Network is unreachable , но я не могу это объяснить.

Ну, это говорит вам, что является реальной проблемой. У вас должен быть маршрутизатор в Подсети с одним IP-адресом, назначенным любому сетевому интерфейсу.

В вашем случае у вас есть IP-адрес 192.168.0.2 с маской подсети 24 . Шлюз находится по адресу 192.168.0.1 который должен быть найден внутри подсети.

Проблема возникает в этом разделе:

[Route]
Destination=10.0.0.64/29
Gateway=10.0.0.65

Если у вас нет других файлов конфигурации systemd-networkd, в которых указан интерфейс с IP-адресом в 10.0.0.64/29 systemd-networkd не знает, как добраться до шлюза 10.0.0.65 . Обратите внимание, что имена файлов регулируют порядок, в котором файлы обрабатываются, так как они отсортированы лексически перед выполнением. Как я уже говорил выше, шлюз должен быть следующего перехода, что означает, что он находится в определенной подсети, известной хосту.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .