Forums:
Dentro de mi red privada local tengo varios equipos DVR q contienen camaras de videos, este DVR se le configura una IP local, el puerto tcp 37777 (este puerto viene por defecto en el equipo DVR), tiene para puerto udp, etc. En mi firewall tengo implementada algunas lineas IPTABLES, el objetivo es q esa IP se pueda acceder desde el internet y poder visualizar los videos ya que el equipo trae un software para visualizar por internet, cosa q no me funca, enmascare la IP y le di acceso al puerto. En resumen hice esto.
$IPT -t nat -A POSTROUTING -s 192.168.1.100 -j MASQUERADE
$IPT -A INPUT -p tcp -s 0/0 -d 0/0 --dport 37777 -j ACCEPT
$IPT -A INPUT -p udp -s 0/0 -d 0/0 --dport 37777 -j ACCEPT
$IPT -A OUTPUT -p tcp -s 0/0 -d 0/0 --dport 37777 -j ACCEPT
$IPT -A OUTPUT -p udp -s 0/0 -d 0/0 --dport 37777 -j ACCEPT
$IPT -A FORWARD -p tcp -s 0/0 -d 0/0 --dport 37777 -j ACCEPT
$IPT -A FORWARD -p udp -s 0/0 -d 0/0 --dport 37777 -j ACCEPT
$IPT -t nat -A PREROUTING -i $IF_EXTERNA -p tcp -m tcp -s 0/0 --dport 37777 -j DNAT --to-destination 192.168.1.100:37777
$IPT -A FORWARD -p tcp -s 0/0 --dport 37777 -j ACCEPT
dir_ip_local =192.168.1.100
si me podrian ayudar a redireccionar correctamente la ip local a la publica y para poderla observar por internet fuera de la red local.
Primero unas recomendaciones
Primero unas recomendaciones para que mantengas "limpio" tu script, sin reglas innecesarias que te pueden confundir:
Las reglas de INPUT y OUTPUT para el puerto 37777 están de más, puesto que al estar usando el NAT te debes fijar solo en el FORWARD.
La línea: $IPT -A FORWARD -p tcp -s 0/0 --dport 37777 -j ACCEPT está repetida con la línea: $IPT -A FORWARD -p tcp -s 0/0 -d 0/0 --dport 37777 -j ACCEPT
Mientras que la regla del FORWARD para el puerto UDP está de más si solo estás NATeando el puerto TCP.
Ahora si, me parece que la regla del MASQUERADE y del NAT están bien, solo faltaría ver cuál es la política en el FORWARD o si estás bloqueando algo, en todo caso, podrías agregar también la regla:
$IPT -A FORWARD -p tcp -s 192.168.1.100 --sport 37777 -j ACCEPT
Y finalmente, no olvides verificar que en el equipo interno (192.168.1.100) esté configurada adecuadamente la puerta de enlace.
Cuando hagas las pruebas, puedes verificar las reglas con "iptables -L -n -v " y con "iptables -t nat -L -n -v", con lo que podrías ver contadores de paquetes en cada regla aplicada.
Saludos,
- Edwin
----
Edwin Boza
about.me/edwinboza
Corregido y casi solucionado
Gracias por la explicación y corrección Edwin, pos ya corregí el asunto, y la ip la apunte al puerto 80 para q salga al Internet, en fin quedo así:
$IPT -t nat -A POSTROUTING -s 192.168.1.100 -j MASQUERADE
$IPT -t nat -A PREROUTING -i $IF_EXTERNA -p tcp -m tcp -s 0/0 --dport 37777 -j DNAT --to-destination 192.168.1.100:80
$IPT -A FORWARD -p tcp -s 0/0 --dport 37777 -j ACCEPT
con esto ya puedo ingresar al inicio de sesión del equipo a atraves de la ip publica:puerto
192.xxx.xxx.xxx:37777
gracias
Tiempo fuera cuando quiero iniciar sesion
Siguiendo con el tramite de ver por Internet la aplicación web del equipo DVR pos ahora ya funca la redireccion a traves de la ip publica:puerto, pero cuando quiero iniciar sesion pos me sale un mensaje TIEMPO FUERA y de hay no pasa, no se q mas me faltaria hacer.
seguro q utiliza ese pto tu
seguro q utiliza ese pto tu aplicacion?? como tienes las politicas del forward ?? en tu scrip de iptables
puerto tcp 37777 y el puerto http 80 eso tiene el equipo dvr
$IPT -t nat -A PREROUTING -i $IF_EXTERNA -p tcp -m tcp -s 0/0 --dport 37777 -j DNAT --to-destination 200.10.xxx.xxx:80
este el forward para el puerto de la ip del equipo
$IPT -A FORWARD -p tcp -s 0/0 --dport 37777 -j ACCEPT
en el iptables tambien hay otros forward como esto, pos seran utiles para este caso
$IPT -A FORWARD -p tcp -s 0/0 --dport 80 -j ACCEPT
$IPT -A FORWARD -p tcp -s 0/0 --dport 8881 -j ACCEPT
cualquier indicacion sera bienvenida para probar, gracias
no no te estoy preguintando
no no te estoy preguintando si tienes el forward en accept o drop ??
iptables -P FORWARD ACCEPT/DROP
Puede ser que te falte una
Puede ser que te falte una regla que permita nuevas conexiones a parti de una ya iniciada
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
Saludos
Juan Yépez
0993681879
Dj - Discomovil Quito
solucion a mi funciono
eth1=wan
eth0=lan
++++++++++++++++
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 7001 -j DNAT --to 192.168.1.101:7001
iptables -A FORWARD -s 192.168.1.101 -i eth0 -p tcp --dport 7001 -j ACCEPT
iptables -A FORWARD -s 192.168.1.101 -i eth0 -p udp --dport 7001 -j ACCEPT