Tengo la siguiente situación:
- - - - - - -
| namespace |-------o o------
- - - - - - - vethY ppp0
vethX
dónde:
ppp0
es una interfaz PPP y su dirección ip es 192.168.100.169/24vethX
es una interfaz ethernet virtual dentro del espacio de nombres y su dirección IP es 10.0.0.3/24vethY
es otra interfaz virtual de Ethernet, su dirección IP es 10.0.0.5/24 y también es la puerta de enlace predeterminada para el espacio de nombres.
De hecho, la tabla de enrutamiento en el espacio de nombres es la siguiente:
$ sudo ip netns exec my_namespace ip route
default via 10.0.0.5 dev vethX
10.0.0.0/24 dev vethX proto kernel scope link src 10.0.0.3
Quiero utilizar enrutamiento basado en políticas en este escenario; en particular, quiero usar una tabla de enrutamiento personalizada cuando la interfaz entrante de paquetes de red es vethY
o la ppp0
interfaz.
Creé la tabla de enrutamiento personalizada con el nombre 'T1'agregando la entrada "T1" en el archivo /etc/iproute2/rt_tables
.
Luego agregué la regla de enrutamiento de política que le indicará al sistema cuándo usar esta nueva tabla de enrutamiento.
Ahora las reglas de enrutamiento de políticas son:
$ ip rule
0: from all lookup local
32764: from all iif ppp0 lookup T1
32765: from all iif vethY lookup T1
32766: from all lookup main
32767: form all lookup default
Luego agregué las siguientes reglas a mi tabla personalizada
$ ip route show table T1
default via 192.168.100.169 dev ppp0
10.0.0.0/24 dev vethY scope link
192.168.100.180 dev ppp0 scope link
La última línea muestra cuál es el otro punto final del enlace punto a punto.
Además, la tabla de enrutamiento principal está vacía.
Con esta configuración, si estoy en el espacio de nombres y hago ping a 10.0.0.5, no recibo respuestas (ni la respuesta ARP).
Los paquetes de solicitud llegan a la interfaz vethY (lo he visto usando Wirehark) pero no se genera ninguna respuesta.
Si mi caché de arp está vacío, cuando se envía una solicitud de arp no se enviará ninguna respuesta de arp.
En cambio, si agrego la regla
10.0.0.0/24 dev vethY scope link
también a la tabla principal, todos los paquetes fluyen de la manera correcta.
¿Por qué no recibo respuestas si no agrego esta regla a la tabla principal?
¿Por qué está involucrada la tabla principal, ya que configuré el enrutamiento para usar T1 para todos los paquetes provenientes de vethY o ppp0?