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