Configurar o roteamento com systemd-networkd através de um gateway resulta em erro: Não foi possível definir rota: a rede está inacessível

0

Eu executei vários contêineres LXC em minha máquina, alguns dos quais têm seu próprio endereço IP fora de uma rede compartilhada com o host. Esse endereço IP, bem como a máscara de rede e o gateway correspondentes, foram fornecidos pelo meu provedor. Eu estou usando o systemd 238 e tentei seguir a configuração [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

No systemd-networkd logs, vejo o seguinte erro: Could not set route: Network is unreachable , mas não consigo explicar isso. Se eu não especificar um gateway, o kernel pode rotear para esta rede muito bem. Assim, eu diria que ele também seria capaz de rotear o tráfego para o gateway através dessa mesma interface. Isso nem funciona, se eu especificar uma rota com Destination=10.0.0.65/32 antes da rota para 10.0.0.64/29 , para pegar o kernel pela mão e explicar como alcançar essa rede.

ATUALIZAÇÃO: Enquanto isso, mudei a configuração de rede do host de forma significativa, mas estes eram os endereços IPv4 e rotas que foram configurados com [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]: traduzi os endereços IP reais para endereços semelhantes em redes não roteadas por motivos de privacidade.

    
por devurandom 18.07.2018 / 23:47

1 resposta

1

In the systemd-networkd logs I see following error: Could not set route: Network is unreachable, but I cannot really explain this.

Bem, isso lhe diz qual é o problema real. Você precisa ter o roteador dentro da sub-rede de um dos endereços IP atribuídos a qualquer interface de rede.

No seu caso, você tem um endereço IP de 192.168.0.2 com e máscara de sub-rede de 24 . O gateway está em 192.168.0.1 , que deve ser encontrado na sub-rede.

O problema ocorre dentro desta seção:

[Route]
Destination=10.0.0.64/29
Gateway=10.0.0.65

Se você não tiver outros arquivos de configuração systemd-networkd que especifiquem uma interface com um endereço IP em 10.0.0.64/29 systemd-networkd não saberá como acessar o gateway de 10.0.0.65 . Observe que os nomes de arquivos regulam a ordem na qual os arquivos estão sendo processados, pois são classificados lexicalmente antes da execução. Como afirmei acima, o gateway tem que ser próximo salto , o que significa que ele está dentro de uma sub-rede específica conhecida pelo host.

    
por 24.07.2018 / 10:48