[LUG.ro] Iptables y frowarding

Sebastian Dominguez sebaminguez en gmail.com
Lun Dic 20 18:12:19 ART 2010


El 20/12/10 15:08, Mario Oroz escribió:
> El 17/12/2010 10:40 a.m., Mey escribió:
>> El vie, 17-12-2010 a las 10:06 -0300, Mario Oroz escribió:
>>> Estoy probando un servicio que esta escuchando en el puerto tcp 23999
>>> en una pc con IP 192.168.1.222 dentro de mi LAN, la cual tiene un
>>> gateway/firewall con IP 192.168.1.254 haciendo NAT.
>>>
>>> Lo que estoy intentando es forwardear las conexiones que llegan al firewall
>>> desde internet hacia el servicio escuchando en la PC 192.168.1.222:23999.
>>>
>>> Con la lineas siguientes logro atender peticiones desde INETRNET.
>>>
>>> $IPTABLES -t nat -A PREROUTING -i ppp0 -p tcp --dport 23999 -j DNAT
>>> - --to-destination 192.168.1.22:23999
>>> $IPTABLES -A FORWARD -i ppp0 -o eth0 -p tcp --dport 23999 -j ACCEPT
>>>
>>> ppp0 ->  iface de INETRNET del firewall
>>> eth0 ->  iface de la LAN del firewall
>>>
>>>
>>> PERO; las peticiones desde una IP dentro de la LAN distinta o igual a la del PC
>>> con el servicio en 192.168.1.222:23999, invocando la IP del firewall
>>> 222.145.2.66:23999 no son contestadas!.
>>
Me engancho medio tarde al hilo. no tengo los correos anteriores.

Esta perfecto que no sean contestadas las peticiones.

Primero no entran en el DNAT porque tenes interface de entrada ppp0 y tu 
red interna entra por la eth0. Tendrias que hacer mas generica la regla 
de DNAT haciendolo por ip publica del router al estilo

$IPTABLES -t nat -A PREROUTING -d 222.145.2.66 -p tcp --dport 23999 -j DNAT
- --to-destination 192.168.1.22:23999


Segundo el forward no te va a dejar pasar las conexiones porque 
nuevamente la regla posee interfaz de entrada ppp0. nuevamente tendrías 
que hacer mas generica la regla.

Por último al servidor destino le llegan las conexiones desde la ip 
interna original, por lo que va a contestarle directamente  (y no a 
travez del router). Esto te va a generar seguramente problemas por lo 
que necesitas cambiar la ip de origen para esas conexiones a, por 
ejemplo, la ip publica del router. En este caso intenta ser lo mas 
detallado posible en la regla para no enmascarar otras conexiones. 
Recorda que en la cadena POSROUTING no podes utilizar -i <interfazEntrada>.

Juntando todo, en el orden mencionado, quedaría algo similar a lo siguiente

$IPTABLES -t nat -A PREROUTING -p tcp --dport 23999 -d 222.145.2.66 -j DNAT --to $192.168.1.22 (si el puerto es el mismo no hace falta aclarar)
$IPTABLES -A FORWARD -p tcp --dport 23999 -d $192.168.1.22 -j ACCEPT
$IPTABLES -t nat -A POSTROUTING -o $eth0 -p tcp --dport 23999 -s 192.168.1.0/24 -d $192.168.1.22 -j SNAT --to $222.145.2.66



Te toca analizar si los rangos de red estan correctas y si las reglas no 
son mas permisivas de lo que necesitas (desconozco cuantas placas/zonas 
tenes en tu red)

Saludos!
-- 
Sebastian A. Dominguez

<http://odiolasllaves.com.ar>


Más información sobre la lista de distribución Lugro