[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