
Mi configuración es la siguiente:
Tengo un servidor Linux con dos interfaces eth0
y eth1
. eth1
Tiene una conexión a Internet a través de mi LAN normal. eth0
sirve DHCP y la interfaz en sí tiene una dirección IP de 10.0.0.1
.
Quiero lograr lo siguiente:
Quiero que los paquetes en el puerto 80 que se originan en las máquinas conectadas eth0
sean redirigidos al puerto 80 en la propia máquina de enrutamiento y, por supuesto, los paquetes de respuesta sean redirigidos de regreso. Eso en sí mismo es bastante simple, pero tengo un requisito más. Me gustaría que los clientes eth0
con ciertas direcciones IP pudieran estar exentos de esto y que los paquetes del puerto 80 se enrutaran como lo harían normalmente. ¿Cómo puedo hacer esto? Hasta ahora, he hecho lo siguiente para redirigir todos los paquetes del puerto 80 eth0
a la máquina local. Está funcionando, pero no sé cómo cumplir con mi segundo requisito.
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.0.0.1:80 -i eth0
iptables -t nat -A POSTROUTING -p tcp -d 127.0.0.1 --dport 80 -j SNAT --to-source 10.0.0.1
Respuesta1
Solo necesitas salir de la PREROUTING
tabla antes de llegar a la DNAT
línea:
iptables -t nat -I PREROUTING -p tcp -s <exempt ip> -j RETURN
Esto debería insertar ( -I
) una nueva regla para salir ( -j RETURN
) de la tabla de enrutamiento para cualquier paquete de la IP exenta ( -s <exempt ip>
) como primera regla, de modo que se acceda antes de llegar a la DNAT
regla.
(Es posible que también necesites hacer algo similar en POSTROUTING
, no estoy seguro).
La otra opción es crear un conjunto de IP ( man ipset
) para las IP que desea eximir y luego agregar una coincidencia invertida a sus reglas DNAT
y :SNAT
ipset create exempt hash:ip
ipset add exempt <exempt ip 1>
ipset add exempt <exempt ip 2>
ipset add exempt <exempt ip 3>
iptables -t nat -A PREROUTING -p tcp --dport 80 -m set ! --match-set exempt src -j DNAT --to-destination 10.0.0.1:80 -i eth0
Esto es más fácil de administrar porque puede agregar o eliminar fácilmente IP exentas del ipset sin modificar iptables.