Configurando iptables para Haproxy

Configurando iptables para Haproxy

Máquina Ubuntu que ejecuta haproxy con 2 tarjetas de red, 1 conectada a WAN (llamada wan0) y otra conectada a LAN (llamada lan0). Todas las cadenas configuradas para DROP tráfico.

# Masquerade traffic from LAN to WAN
-A POSTROUTING -o wan0 -s 192.168.x.x/24 -j MASQUERADE

# Allow traffic from LAN to WAN
iptables -I FORWARD -i lan0 -o wan0 -j ACCEPT

# Allow HTTP traffic in/out both interfaces
-A INPUT -p tcp --dport 80 -j ACCEPT
-A OUTPUT -p tcp --sport 80 -j ACCEPT

*** Is below rule needed? ***
# -A FORWARD -i wan0 -o lan0 -p tcp –dport 80 -j ACCEPT

Quiero permitir el tráfico HTTP (puerto 80) desde la WAN a la LAN, donde haproxy lo enrutará a los servidores backend. La documentación que he leído dice:

"ENTRADA, ADELANTE y SALIDA están separados. Un paquete sólo llegará a una de las tres cadenas".

¿Me falta alguna regla de iptable que enrute el tráfico HTTP (puerto 80) entre interfaces?

Respuesta1

Como dijiste, tienes la política de cadena predeterminada configurada en DROP. Por lo tanto, debe tener ACCEPTuna regla explícita para cada tipo de tráfico que desee permitir.

La siguiente regla permitirá que el tráfico pase por su caja proveniente de lan0la interfaz y salga de ella wan0.

iptables -I FORWARD -i lan0 -o wan0 -j ACCEPT

Además, es una buena idea permitir otros tipos de tráfico como RELACIONADO y ESTABLECIDO usando una regla como:

iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

Esto es necesario para permitir el paso del tráfico de respuesta. Haz lo mismo con las cadenas INPUTy OUTPUT.

Realmente depende de tus necesidades y de lo que quieras permitir y negar.

En cuanto a la frase:

"ENTRADA, ADELANTE y SALIDA están separados. Un paquete sólo llegará a una de las tres cadenas".

Sí, es cierto. Un paquete llegará a:

  1. INPUTcadena cuando está destinada a la máquina local.
  2. OUTPUTcadena cuando se origina en la máquina local.
  3. FORWARDde lo contrario, la cadena (se recibe de otra máquina y debe reenviarse a otra máquina).

información relacionada