Netplan (re)moviendo la ruta de la tabla de enrutamiento principal a una política de enrutamiento diferente

Netplan (re)moviendo la ruta de la tabla de enrutamiento principal a una política de enrutamiento diferente

La descripción general de alto nivel es la siguiente: tengo un servidor Impish Ubuntu con dos interfaces, direcciones de 172.16.2.103/24y 10.1.2.10/24. Me gustaría que el tráfico predeterminado pasara por la puerta de enlace 172.16.2.254. Sin embargo, cuando especifico una dirección de origen de 10.1.2.10quiero que tenga una puerta de enlace de 10.1.2.254. Lo que sigue funciona el 99% de las veces, pero deseo que el kernel seleccione la IP de origen 172.16.2.103 incluso cuando contacte 10.1.2.0/24. Esto fue posible /etc/networks/interfaces pero no pude resolverlo usando netplan.

Esto es lo que tengo en mi configuración de 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 digo, esto funciona bien en su mayoría. Tengo una política de enrutamiento (también conocida como regla de IP), lo que significa que si cambio la dirección de origen de los paquetes, busco la tabla de enrutamiento 10. Sin embargo, hay una ruta adicional que deseo eliminar de la ruta principal.

Esto es lo que tengo cuando reviso las tablas de enrutamiento:

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

Me gustaría eliminar OUT3, o más exactamente moverlo a la tabla de enrutamiento 10, de modo que no haya un enlace de capa 2 a 10.1.2.0/24 en la tabla de enrutamiento principal. Puedo hacerlo manualmente así:

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

Pero no veo cómo integrar eso en netplan. Anteriormente habría agregado una declaración ascendente, /etc/network/interfacespero ya no es una opción.

Gracias de antemano.

Respuesta1

Yo no llamaría a esto una solución, más bien una solución alternativa. Mi problema era que quería eliminar una ruta no deseada: la solución es crearotroruta con mayor prioridad!

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

Tenga en cuenta la política de enrutamiento adicional y la ruta para la interfaz ens160. Esto creará otra tabla de enrutamiento llamada 172, y tiene una ruta predeterminada igual que la ruta predeterminada de la tabla principal (172.16.2.254). Ahora cuando hago la rutaa172.16.2.0/24, en lugar de pasar por la tabla principal con la ruta incorrecta, pasará por la tabla de enrutamiento 172.

Aún así agradecería saber si hay alguna manera de eliminar la ruta en la tabla principal, pero ahora tengo un sistema que funciona, así que en 2 semanas la marcaré como la solución aceptada.

información relacionada