Eu configurei uma interface MACVLAN no Debian Stretch com systemd-networkd assim:
wlan0.network:
[Match]
MACAddress=b8:27:eb:20:d3:c6
[Network]
DHCP=yes
MACVLAN=wlan0.milight1
[DHCP]
RouteMetric=0
wlan0.milight1.netdev (a interface virtual):
[NetDev]
Name=wlan0.milight1
Kind=macvlan
MACAddress=00:11:0b:05:74:e9
[MACVLAN]
Mode=bridge
wlan0.milight1.network:
[Match]
MACAddress=00:11:0b:05:74:e9
[Network]
Address=192.168.0.53
[Route]
Gateway=192.168.0.1
Metric=20
[Route]
Destination=192.168.0.0/24
Gateway=0.0.0.0
Metric=20
No entanto, depois de fazer essa configuração, não consigo mais acessar a máquina via SSH. Olhando para a tabela de roteamento com ip route show
, mostra o seguinte:
default via 192.168.0.1 dev wlan0 proto dhcp src 192.168.0.31
default via 192.168.0.1 dev wlan0.milight1 proto static metric 20
192.168.0.0/24 dev wlan0.milight1 proto kernel scope link src 192.168.0.53
192.168.0.0/24 dev wlan0 proto kernel scope link src 192.168.0.31
192.168.0.0/24 dev wlan0.milight1 proto static metric 20
192.168.0.1 dev wlan0 proto dhcp scope link src 192.168.0.31
A rota problemática parece ser essa que é criada pelo kernel com métrica 0, o que significa que ela tem precedência sobre minhas regras de interface padrão para wlan0:
192.168.0.0/24 dev wlan0.milight1 proto kernel scope link src 192.168.0.53
Assim que eu excluir esta rota com
route del -net 192.168.0.0 gw 0.0.0.0 netmask 255.255.255.0 dev wlan0.milight1
tudo funciona como esperado. Mas, de tempos em tempos, o kernel adiciona essa regra novamente à tabela de roteamento, o que torna a máquina inacessível novamente. Então, existe a possibilidade de impedir que o kernel crie regras com métrica 0?
O dhcpcd e a rede estão desativados, o sistema resolvido está ativado.