Netplan (re) movendo a rota da tabela de roteamento principal para uma política de roteamento diferente

Netplan (re) movendo a rota da tabela de roteamento principal para uma política de roteamento diferente

A visão geral de alto nível é esta: eu tenho um servidor Impish Ubuntu com duas interfaces, endereços de 172.16.2.103/24e 10.1.2.10/24. Gostaria que o tráfego padrão passasse pelo gateway 172.16.2.254. No entanto, quando eu especifico um endereço de origem, 10.1.2.10quero que ele tenha um gateway de 10.1.2.254. O que se segue funciona 99% das vezes, mas desejo que o kernel selecione o IP de origem 172.16.2.103 mesmo ao entrar em contato com o 10.1.2.0/24. Isso foi possível, /etc/networks/interfaces mas não consegui descobrir usando o netplan.

Isto é o que tenho na minha configuração do netplan:

network:
  ethernets:
    ens160:
      addresses:
      - 172.16.2.103/24
      routes:
      - to: 0.0.0.0/0
        via: 172.16.2.254
      nameservers:
        addresses:
        - 10.1.2.1
        search:
        - localdomain
      optional: yes
    ens192:
      addresses:
      - 10.1.2.10/24
      routing-policy:
      - from: 10.1.2.10
        table: 10
      routes:
      - to: 0.0.0.0/0
        via: 10.1.2.254
        table: 10
      optional: yes
  version: 2

Como eu disse, isso funciona bem principalmente. Eu tenho uma política de roteamento (também conhecida como regra IP), o que significa que se eu alterar o endereço de origem dos pacotes, procuro a tabela de roteamento 10. No entanto, há uma rota adicional que desejo remover do main.

Isto é o que tenho quando verifico as tabelas de roteamento:

IN1:  me@host:~$ ip route
OUT1: default via 172.16.2.254 dev ens160 proto static
OUT2: 172.16.2.0/24 dev ens160 proto kernel scope link src 172.16.2.103
OUT3: 10.1.2.0/24 dev ens192 proto kernel scope link src 10.1.2.10

IN2:  me@host:~$ ip route list table 10
OUT5: default via 10.1.2.254 dev ens192 proto static

Gostaria que o OUT3 fosse removido ou, com mais precisão, movido para a tabela de roteamento 10, para que não houvesse link da camada 2 para 10.1.2.0/24 na tabela de roteamento principal. Eu posso fazer isso manualmente assim:

me@host:~$ sudo ip route del 10.1.2.0/24 dev ens192

Mas não consigo ver como incorporar isso no netplan. Anteriormente, eu teria adicionado uma declaração up, /etc/network/interfacesmas isso não é mais uma opção.

Desde já, obrigado.

Responder1

Eu não chamaria isso de solução, mas sim de solução alternativa. Meu problema era que eu queria remover uma rota indesejada: a solução alternativa é criaroutrorota com maior precedência!

network:
  ethernets:
    ens160:
      addresses:
      - 172.16.2.103/24
      routes:
      - to: 0.0.0.0/0
        via: 172.16.2.254
      # ** ADDITIONAL ROUTE **
      - to: 0.0.0.0/0
        via: 172.16.2.254
        table: 172
      # **********************
      nameservers:
        addresses:
        - 10.1.2.1
        search:
        - localdomain
      optional: yes
    ens192:
      addresses:
      - 10.1.2.10/24
      routing-policy:
      - from: 10.1.2.10
        table: 10
      # ** ADDITIONAL ROUTING POLICY **
      - to: 172.16.2.0/24
        table: 172
      # *******************************
      routes:
      - to: 0.0.0.0/0
        via: 10.1.2.254
        table: 10
      optional: yes
  version: 2

Observe a política de roteamento adicional e a rota para a interface ens160. Isso criará outra tabela de roteamento chamada 172, e esta terá uma rota padrão igual à rota padrão da tabela principal (172.16.2.254). Agora, quando eu roteiopara172.16.2.0/24, em vez de passar pela tabela principal com a rota errada, ele passará pela tabela de roteamento 172.

Ainda gostaria de saber se existe uma maneira de excluir a rota da tabela principal, mas agora tenho um sistema funcionando, então em 2 semanas marcarei esta como a solução aceita.

informação relacionada