GNU/Linux >> Tutoriales Linux >  >> Linux

Linux – ¿Enrutamiento a través de Iptables?

Tengo este cliente vpn que toca la tabla de enrutamiento y luego sigue observándolo para salir si se toca.
Es el tipo de configuración necesaria para un punto final, como una computadora portátil.

Quiero usar una PC pequeña como punto final vpn y enrutar a través de ella para otras máquinas en mi LAN (192.168.0.0/24).
Como no puedo tocar la tabla de enrutamiento y todos los paquetes son forzados a través de vpns dispositivo tun0, estaba pensando que iptables podría ayudarme a enviar paquetes POSTROUTE a la red 192.168.0.0 de regreso al dispositivo eth1. ya está en la red de destino, y no sé si el paquete ya se resolvió o no sucederá hasta que llegue a la iface.
¿Alguna pista?

Respuesta aceptada:

Como no ha proporcionado más información, no estoy seguro de cuál es la mejor respuesta.

Así que aquí va mi intento de darte algunas instrucciones, ignorando deliberadamente que no puedes modificar tu tabla de enrutamiento (comprenderás por qué al leer mi sugerencia):

Según el cliente VPN y dónde se conecta a la FIB (base de información directa) del kernel, es posible que tenga suerte en que el monitoreo de la FIB o, usando su tabla de enrutamiento de expresión, por la VPN solo ocurre para el local y main tablas de reglas Puede verificar sus reglas de enrutamiento usando

ip rule show

Para cada una de las cadenas detrás de la etiqueta "búsqueda" (que son las entradas de la tabla de reglas), puede consultar la información de enrutamiento correspondiente de la FIB, usando

ip route show table <name>

Con un poco de suerte, podría intentar construir una regla que coincida con sus requisitos y darle preferencia en la tabla de búsqueda de reglas. Por ejemplo (hice algo para darle una ventaja), agreguemos una nueva regla con mayor preferencia que main a ciertos flujos:

ip rule add from 192.168.1.0/24 to 10.10.212.1/30 iif eth0 oif eth2 lookup 888 pref 12000
ip rule show
   0:   from all lookup local 
   12000:   from 192.168.1.0/24 to 10.10.212.1/30 iif eth0 oif eth2 lookup 888 
   32766:   from all lookup main 
   32767:   from all lookup default 

En un sistema Linux estándar (Ubuntu en el caso de esta publicación), vería las tres tablas de reglas predeterminadas local , main y default , del cual normalmente solo ves el main tabla al invocar netstat -rn por ejemplo.

Ahora queremos completar las entradas FIB en la tabla de búsqueda 888 con nuevas entradas de enrutamiento:

ip route add default via 10.37.129.4 dev eth2 table 888

Veamos cómo se ven nuestras entradas de enrutamiento en la tabla 888:

ip route show table 888
  default via 10.37.129.4 dev eth2

Creo que entiendes la idea. Ahora, con respecto a sus necesidades específicas de enrutamiento, no está claro qué es exactamente lo que está tratando de lograr. Asegúrese de vaciar la memoria caché de enrutamiento cuando juegue con las tablas de reglas:

ip route flush cache

Tenga en cuenta que al usar la arquitectura iproute2, básicamente puede filtrar y modificar prácticamente cualquier entrada de FIB; incluso se pueden hacer entradas de reglas basadas en fwmarks y/o clasificadores u32, como sigue (ejemplo tomado del libro de enrutamiento de políticas):

tc filter add dev eth1 parent ffff: protocol ip prio 1 u32 
    match ip src 10.1.1.0/24 classid :1
ip rule add fwmark 1 table 1 prio 15000 realms 3/4
ip route add default via 192.168.1.1 table 1 src 192.168.1.254
ip route flush cache

Debido a que las cosas se vuelven locas en las entradas de las tablas de reglas, hace muchos años había preparado un pequeño fragmento de bash para que mi sistema volviera al estado original de las reglas de enrutamiento:

: ${KEEP:="local main default"}
while read prio rule; do
     continue=0
     for keep in ${KEEP}; do
         if [ "${rule//lookup ${keep}/}" != "${rule}" ]; then
             continue=1
         fi
     done
     if [ ${continue} -eq 0 ]; then
         ip rule del prio ${prio%%:*} ${rule//all/0/0}
     fi
done < <(ip rule show)

Sorprendentemente, parece que después de más de 10 años de iproute2 de la existencia, todavía solo unas pocas personas parecen saber que hay un universo más allá del clásico “roto” herramientas como ifconfig o netstat .


Linux
  1. Cómo:Linux General – IPTables en General

  2. Cómo mostrar la tabla de enrutamiento en Linux

  3. iptables:comando no encontrado

  4. Cómo abrir puerto en Linux

  5. error de enrutamiento de linux?

Conduce una locomotora a través de tu terminal Linux

Tutorial de Iptables:la guía definitiva para el firewall de Linux

Cómo configurar el cortafuegos de iptables en Linux

Cómo:Solución de problemas básicos de IPTables

Los 5 mejores cortafuegos de Linux

Entendiendo la utilidad fdisk de Linux