El enrutamiento no funciona igual en dos NIC internas

El enrutamiento no funciona igual en dos NIC internas

En el servidor mu Ubuntu 22.04 tengo dos NIC internas y una externa conectadas a Internet. He definido las interfaces con Netplan de la siguiente manera:

network:
  ethernets:
    eno1:
      dhcp4: true
      dhcp4-overrides:
        route-metric: 100
    enp2s0:
      addresses:
        - 172.16.1.1/24
      nameservers:
        addresses:
        - 127.0.0.53
        - 8.8.8.8
        search:
        - wombats.org
      routes:
        - to: default
          via: 192.168.0.254
        - to: 172.16.1.0/24
          via: 172.16.1.1
          metric: 200
          table: 101
      routing-policy:
        - from: 172.16.1.0/24
          table: 101
    wlp8s0:
      dhcp4: no
      addresses:
        - 172.16.2.1/24
      routes:
        - to: 172.16.2.0/24
          via: 172.16.2.1
          metric: 20
          table: 102
      routing-policy:
        - from: 172.16.2.0/24
          table: 102
  version: 2

Una computadora conectada a enp2s0 está perfectamente enrutada a Internet e internamente. Cuando la misma computadora está conectada a través de wlp8s0 ni siquiera puede llegar a la red administrada por enp2s0 (172.16.1.1/24). Aquí están las dos tablas de enrutamiento: conectadas a través de enp2s0:

ip r
default via 172.16.1.1 dev enxf8e43b9d4867 proto dhcp metric 100 
169.254.0.0/16 dev enxf8e43b9d4867 scope link metric 1000 
172.16.1.0/24 dev enxf8e43b9d4867 proto kernel scope link src 172.16.1.3 metric 100 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown

conectado a través de wlp8s0:

ip r
default via 172.16.2.1 dev wlp0s20f3 proto dhcp metric 20600 
169.254.0.0/16 dev wlp0s20f3 scope link metric 1000 
172.16.2.0/24 dev wlp0s20f3 proto kernel scope link src 172.16.2.4 metric 600 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown

La diferencia notable es la métrica de la ruta predeterminada en ambas configuraciones. Esto no proviene del servidor DHCP ya que ambas subredes están configuradas de manera idéntica. Intenté deshabilitar ufw e intenté agregar iptables. Pero todo eso no ha cambiado el resultado.

¡No entiendo por qué no puedo enrutar el tráfico del wlp8s0! ¿El hecho de que una NIC sea un cable y la otra wifi explica la diferencia? No debería ser así, ya que reciben las IP de la misma manera.

Gracias por tu ayuda. Ene

Respuesta1

La solución a este problema fue doble: primero, el enmascaramiento debe realizarse en ambas interfaces (subredes):

-A POSTROUTING -s 172.16.1.0/24 -o eno1 -j MASQUERADE
-A POSTROUTING -s 172.16.2.0/24 -o eno1 -j MASQUERADE

Entonces lo que no es menos importante es que las interfaces se monten con o sin portadora. Esto se hace en /etc/netplan/00-installer-config.yaml con la línea:

    enp2s0:
      ignore-carrier: true

Lo mismo para el wlp8s0. Si no lo hace

información relacionada