¿Cómo puedo mantener una entrada en mi tabla de enrutamiento, incluso cuando la interfaz asociada se cae?

2

Tengo una caja de Linux configurada como mi enrutador de Internet. Tengo la eth0interfaz conectada al lan, y la eth1interfaz conectada a un módem pppoa y configurado con dhcp a mi ip pública. Debido a problemas con ARP, tengo que conectarme a Internet usando el módem mismo (que tiene la ip 172.16.0.1) como el próximo salto. Para hacer esto, uso las siguientes 2 líneas:

route add -host 172.16.0.1 dev eth1
route add default gw 172.16.0.1

Esto generalmente se ejecuta después de que la interfaz se ha configurado con dhcp, y todo está bien. El problema surge cuando el módem se desconecta, se vuelve a conectar y mi isp le asigna una nueva dirección IP. Cuando el demonio dhcpc reconfiguró la eth1interfaz para la nueva ip, mi tabla de enrutamiento pierde las entradas que necesita para acceder a Internet, lo que significa que necesito ingresar los 2 routecomandos nuevamente. ¿Hay alguna manera de obligar a Linux a mantener las rutas, o posiblemente de que se agreguen automáticamente cuando dhcpcdsea ​​necesario?

Una búsqueda en Google de "rutas persistentes" muestra formas de mantener las rutas a través de las botas, pero eso no es lo que necesito.

Robbie Mckennie
fuente

Respuestas:

3

Opción 1

Por lo general, puede configurar la puerta de enlace predeterminada en su servidor DHCP, por lo que siempre que asigne IP también proporcionará una puerta de enlace predeterminada para que los clientes la utilicen. Consulte la configuración de su servidor DHCP sobre cómo hacer esto.

opcion 2

Otra forma de lograr esto en el cliente es creando un enlace dhcpcd en /usr/lib/dhcpcd/dhcpcd-hooks(el directorio puede ser diferente en slackware, pero lo dudo mucho). Cree un nuevo archivo llamado 40-routecon contenido:

route add -host 172.16.0.1 dev eth1
route add default gw 172.16.0.1

O, alternativamente, esto también debería funcionar:

ip route add 172.16.0.0/24 via 172.16.0.1

Esto debería ejecutar este comando después de que dhcpcd obtenga una nueva IP. Tiene que cambiar 192.168.0.0/24a lo que está utilizando su red.

phoops
fuente
+1 para ganchos DHCP. Tuve que descubrirlo un día cuando tuve la misma pregunta. Funciona bien.
VL-80
Es importante tener en cuenta que la interfaz a través de la cual hablo 172.16.0.1/ no / tiene una ip en el 172.16/24bloque. Por eso routese necesita la primera línea. Por lo tanto, no puedo simplemente haber dhcpcdconfigurado la puerta de enlace predeterminada. Además, no hay /usr/lib/dhcpcddirectorio en mi máquina.
Robbie Mckennie
find / | grep dhcpcd-hooksapareció/lib/dhcpcd/dhcpcd-hooks
Robbie Mckennie
Después de rozar brevemente DHCPCD-RUN-HOOKS(8)encontré $interfacey $reason. Una breve ifdeclaración más tarde y tengo lo que necesito, gracias por su ayuda
Robbie Mckennie
0

Para la posteridad, esto es lo que funcionó para mí.

# /lib/dhcpcd/dhcpcd-hooks/40-route
if [ "$reason" = "BOUND" ] && [ "$interface" = "eth1" ]; then
  route add -host 172.16.0.1 dev eth1
  route add default gw 172.16.0.1
fi
Robbie Mckennie
fuente