[eside-ghost] Iptables
Ender
eduvedder en terra.es
Vie Nov 5 12:27:20 CET 2004
Aupa!
El Viernes, 5 de Noviembre de 2004 08:52, Fernando de Urien escribió:
>iptables -t nat -A PREROUTING -p tcp -s IPCLIENTE -d *_SERVIDOR1_*
>--destination-port 80 -j DNAT --to-destination servidor2
> Todos las ips están en el mismo rango asi que no hay que hacer
> ni routing ni nat ni nada.
Pero tioooooooo, tonces si estan los 3 en el mismo rango no va a ir el paquete
a ningun firewall, sino a la dirección de destino. La regla de arriba no
sirve de nada si SERVIDOR1 y servidor2 están en la misma red/subred.
A ver explicate, porque si tienes
A - cliente 192.168.1.5/24
B - firewall-router (iptables) 192.168.1.1/24 + otra tarjeta que me da igual
C - serv web 192.168.1.10/24
Si A quiere mandar un paquete a C, NUNCA va a pasar por el firewall, ya que
están en la misma red. A no ser que hagas una tanada brutal y muy extraña.
Por el contrario, si...
A - cliente 192.168.33.5/24
B firewall-router (iptables): 192.168.33.1/24 + 192.168.1.1/24
C - serv web: 192.168.1.10/24
Si A quiere acceder a C va a mandar el paquete a su gateway predeterminado, o
sea, al firewall-router (iptables). Y en este caso NO SON LOS MISMOS RANGOS y
si es necesario ROUTING o NAT.
Consejo. Si el cliente A es de internet y no tiene por que conocer el rango de
C, haz NAT, que mas o menos, de forma ficticia es dar a C una ip de la red de
A. Esto se suele hacer dandole la misma IP que el firewall (tipico NAT de
puertos que conocemos, o PAT), ó, dandole una ip del rango estática (NAT
estático o real).
El NAT estático ese que comento nunca lo hacemos, porque en casa, en nuestros
ADSLs solo tenemos una IP del rango A (la de internet) y no podemos pillar
más... por lo que tenemos que compartir la IP para todos los servidores de
dentro.
Si el rango A es tuyo (por ejemplo un rango local o tienes contratada una
subred de internet), sí que puedes hacer NAT de este estilo y darle a C una
ip de NAT 192.168.33.10/24 por ejemplo.... esto es útil si quieres tener
varios servidores web en la red interna escuchando en el puerto 80 (con PAT
es imposible).
Por otra parte tu regla tiene un problema:
>iptables -t nat -A PREROUTING -p tcp -s IPCLIENTE -d *_SERVIDOR1_*
>--destination-port 80 -j DNAT --to-destination servidor2
esta regla lo que hace es que (suponiendo que las 3 maquinas estan en la misma
red):
A se cree que el servidor web es B, por lo que manda el paquete a B. B lo
recibe y gracias a tu regla le cambia la IP de destino y se lo enchufa a C
(serv web real).
Pero que pasa cuando llega a C????????
que recibe un paquete con origen A, y como está en la misma red se lo va a
devolver, por lo que el origen lo FLIPA, porque le llega un paquete de un
emisor al que él no había mandado nada.... lo entiendes?
Solucion: en B, cuando le pones destino C al primer paquete, ponle tambien con
otra regla origen a B, para que C, la respuesta se la envíe a B y no a A.
De esta forma, si el firewall se acuerda bien de los paquetes a los que ha
hecho NAT, podrá hacerles el nat inverso, y si no pues otras 2 reglas para el
paquete de vuelta de C a B (habría que probar)
Venga tio, no se si me he liado un poco yo solo con la explicación... saludos
Ender
Más información sobre la lista de distribución eside-ghost