Tenho duas conexões WAN alimentando meu roteador Linux homebrew. Ambas são apresentadas como conexões ethernet. Uma usa dhcp, a outra é PPPoE. Configurei ambas usando nmcli.
O próximo passo é usar o roteamento de políticas para sistemas selecionados. Como teste, adicionei uma tabela de roteamento para cada conexão WAN, criei dois novos IPs no lado LAN do roteador e adicionei uma regra de IP para cada um desses IPs para usar uma das tabelas de roteamento. Isso também funciona bem quando configurado manualmente usando comandos iproute2.
O problema surge quando tento configurar esse cenário com nmcli. Chego perto com:
nmcli con mod pppoe ipv4.routes "0.0.0.0/0 onlink=1 table=200"
nmcli con mod pppoe ipv4.routing-rules "priority 999 from 10.87.3.204 lookup 200"
nmcli con up pppoe
nmcli con mod eth2 ipv4.routes "0.0.0.0/0 onlink=1 table=201"
nmcli con mod eth2 ipv4.routing-rules "priority 999 from 10.87.3.59 lookup 201"
nmcli con up eth2
Fiquei agradavelmente surpreso ao descobrir que a conexão PPPoE realmente funcionou, já que deixar a opção nexthop fora da regra faz com que o padrão seja usar o dispositivo para roteamento, que é exatamente o que eu fiz manualmente.
Entretanto, fazer o mesmo para a conexão dhcp não funciona, pois usar 'dev eth2' para a rota está errado... Ele precisa do endereço do próximo salto/gateway, que é dinâmico e o que eu fiz manualmente.
Obviamente, criar um script para atualizar a tabela de roteamento é simples, mas seria melhor fazer o gerenciador de rede fazer isso quando a conexão for criada. Ele obviamente terá essas informações, como a interface ppp é conhecida pela conexão PPPoE.
Existe algum mecanismo para incorporar ip4.gateway na sequência de roteamento? Ou existe outro método para atingir o mesmo objetivo?
Não sou especialista em nmcli, pois nos anos passados sempre o evitei. Estou gostando do desafio de lidar com ele agora, então espero que haja algo muito básico que eu tenha perdido e que não tenha aprendido na minha jornada até agora.
Qualquer ajuda seria apreciada