Em um sistema Debian Stretch com várias interfaces, eu preciso definir a rota padrão através de uma interface específica ens3
. Essa interface recebe seu endereço de IP 10.33.34.2
por meio do dhcp.
Eu ajustei o seguinte guia às minhas necessidades:
5.3. A moderna configuração de rede sem GUI
Assim, criei um arquivo /etc/systemd/network/route.network
com o seguinte conteúdo
[Match]
Name=ens3
[Network]
Gateway=10.33.34.1
No entanto, a rota padrão não está definida corretamente na inicialização.
Ativei a depuração de systemd-networkd
de acordo com Como depurar systemd-networkd?
Depois de reiniciar o systemd-networkd
, vejo o seguinte nos registros:
Aug 21 13:43:13 vpn systemd-networkd[15671]: ens3: Setting routes
Aug 21 13:43:13 vpn systemd-networkd[15671]: ens3: Could not set route: Network is unreachable
Aug 21 13:43:13 vpn systemd-networkd[15671]: ens3: Routes set
Aug 21 13:43:13 vpn dhclient[15709]: Listening on LPF/ens3/52:54:00:3f:f1:d0
Aug 21 13:43:13 vpn dhclient[15709]: Sending on LPF/ens3/52:54:00:3f:f1:d0
Aug 21 13:43:13 vpn dhclient[15709]: Sending on Socket/fallback
Aug 21 13:43:13 vpn dhclient[15709]: DHCPDISCOVER on ens3 to 255.255.255.255 port 67 interval 8
Aug 21 13:43:13 vpn dhclient[15709]: DHCPREQUEST of 10.33.34.2 on ens3 to 255.255.255.255 port 67
Aug 21 13:43:13 vpn dhclient[15709]: DHCPOFFER of 10.33.34.2 from 10.33.34.1
Aug 21 13:43:13 vpn dhclient[15709]: DHCPACK of 10.33.34.2 from 10.33.34.1
Aug 21 13:43:13 vpn systemd-networkd[15671]: ens3: Adding address: 10.33.34.2/24 (valid forever)
Parece que o networkd tenta definir a rota antes que o endereço IP seja atribuído via dhcp.
Como faço para definir a rota padrão para uma interface específica com o systemd?
== Editar ==
Eu estava errado em assumir que o systemd-networkd traz as interfaces. Se eu reiniciar o sistema, vejo
$ sudo service systemd-networkd status
● systemd-networkd.service - Network Service
Loaded: loaded (/lib/systemd/system/systemd-networkd.service; disabled; vendor pres
Drop-In: /etc/systemd/system/systemd-networkd.service.d
└─10-debug.conf
Active: inactive (dead)
Docs: man:systemd-networkd.service(8)
Assim, a configuração em /etc/systemd/network/route.network
não tem efeito ao inicializar. Atualmente, estou imaginando qual serviço é responsável por exibir todos os dispositivos de rede.
== Editar 2 ==
Este artigo de Steven Iveson fornece uma boa visão de como os dispositivos de rede são iniciados por systemd-udevd
e como modificar a configuração da interface.
Ao testar e ler mais, eu também gostaria de reafirmar meu problema:
As múltiplas interfaces são criadas em ordem aleatória. Cada um obtém uma configuração correta do dhcp. A primeira interface a ser criada definirá a rota padrão e, portanto, 10.33.34.1
nem sempre será usado como rota padrão