Comprender iptables en el dispositivo de enrutamiento

Comprender iptables en el dispositivo de enrutamiento

Entonces, he estado configurando una Raspberry Pi para que actúe como un enrutador VPN con la ayuda de stunnel, OpenVPN y muchos artículos en línea (principalmente los deJayden Chua) y puedo crear uno con éxito, pero no entiendo completamente la parte de iptables (descrita a continuación), aunque he leído ayuda en línea sobre el tema.

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -A FORWARD -i wlan0 -j ACCEPT
iptables -A FORWARD -i tun0 -o wlan1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan1 -o tun0 -j ACCEPT

¿Alguien puede explicarme cada línea? Sé que puede ser simple pero honestamente no puedo entender por qué funciona =P

Muchas gracias de antemano =)

Respuesta1

En primer lugar, debemos definir el reenvío de IP. No voy a explicarlo muy profundamente (tampoco lo sé), pero básicamente, bajo este contexto, lo que necesitas saber es que significa el flujo de paquetes de un host a otro a través de este host.

Debo señalar que ninguna de las -A FORWARD ... -j ACCEPTreglas/comandos es necesaria a menos que tenga -P FORWARD DROPo algo similar (es decir, descarte cualquier paquete que se supone que debe reenviarse). Las reglas no permiten que se realice el reenvío, pero sólo hacen una excepción cuando el valor predeterminado no es "ACEPTAR". (Usted "habilita" el reenvío con sysctl.)

Ahora podemos mirar las reglas:

iptables -A FORWARD -i wlan0 -j ACCEPT

Esto significa permitir que los paquetes que llegan desde wlan0 se reenvíen (a otra red a través de cualquier interfaz en este host).

iptables -A FORWARD -i wlan1 -o tun0 -j ACCEPT

Esto significa permitir que los paquetes que llegan desde wlan1 se reenvíen a tun0. (Tenga en cuenta que esto no es necesario para que los paquetes lleguen a las direcciones del propio tun0, ya que eso no cuenta como "reenvío".)

iptables -A FORWARD -i tun0 -o wlan1 -m state --state RELATED,ESTABLISHED

Esto significa permitir que los paquetes que ingresan desde tun0 se reenvíen a wlan1, solo si hay una conexión relacionada o establecida, verificando con la extensión/módulo state(quedó obsoleto con conntrack, que toma el conmutador --ctstate). Junto con la regla anterior, esencialmente significan permitir el reenvío entre tun0 y wlan1, siempre y cuando la conexión no sea iniciada por un paquete de tun0.

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

Básicamente, esto significa que los paquetes que salen de tun0 tendrían su dirección de origen cambiada a la de tun0. Si no se hace esto, el siguiente enrutador necesitará tener una ruta de retorno para que cualquier respuesta llegue a la dirección de origen original. (es decir, para llegar a la dirección de origen original, este host debe ser la puerta de enlace). Esto también se conoce como NAT (sobrecarga)/PAT. Piense en ello como hacer que tun0 funcione como el puerto/interfaz WAN de un enrutador típico de consumo.

Respuesta2

Para comprender esto, debe comprender los principios del enrutamiento. Sin embargo, no puedo escribir un libro con esta respuesta, así que lo seré breve y sencillo.

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

Esta regla básicamente toma el paquete, se aplicaNAT, pero después de que se toma la decisión de cómo enrutar este paquete. Por eso se aplica a POSTROUTING. Luego envía el paquete nuevamente al túnel llamado tun0. Esta es tu conexión VPN. También se aplica enmascaramiento, porque la regla no conoce la IP del dispositivo. Sin él, necesitarías usar este comando para cada dispositivo que se conecte. Entonces podrías ver esto como una especie de comodín.

iptables -A FORWARD -i wlan0 -j ACCEPT 
iptables -A FORWARD -i wlan1 -o tun0 -j ACCEPT

Esta línea dice que se acepte todo el tráfico reenviado a la wlan0interfaz. Supongo wlan0que se utiliza como conexión a Internet principal en esta guía, por lo que esta es la ruta principal entre el enrutador y el túnel VPN. Esto hace que Pi acepte paquetes en esta interfaz y le daacceso a la red interna. La segunda línea aquí es básicamente el camino de regreso del paquete. Desde el pi, de regreso al túnel.

iptables -A FORWARD -i tun0 -o wlan1 -m state --state RELATED,ESTABLISHED -j ACCEPT

Esta línea permite que el tráfico proveniente del túnel tun0vaya a la interfaz wlan0, pero sólo si se estableció una conexión.establecidopreviamente.

En pocas palabras, esas reglas permiten que los paquetes provenientes del túnel VPN fluyan hacia el resto de la red privada y regresen.

información relacionada