El 11/01/08, Antonio Trujillo Carmona <[EMAIL PROTECTED]> escribió: > El jue, 10-01-2008 a las 08:32 -0300, Gonzalo Rivero escribió: > > Hola, quiero redireccionar un webserver que tengo en mi red local con ip > > privada > > iptables -t nat -A PREROUTING -d x.y.z.w -p tcp -m tcp --dport 80 -j > > LOG --log-prefix "lalala DNAT lalala" > > iptables -t nat -A PREROUTING -d x.y.z.w -p tcp -m tcp --dport 80 -j > > DNAT --to-destination a.b.c.d > > > > x.y.z.w es la ip con la que me ve el mundo, a.b.c.d es el webserver > > que está en otra computadora. > > La primera línea es para hacer un log y ver si funciona. Pero no > > funciona, aunque hace el log. No funciona significa que solo obtengo > > timeouts en el navegador. > > Se me ocurrió agregar otra linea igual, pero con OUTPUT (para los > > paquetes generados en esa computadora) y cuando pongo en el navegador > > x.y.z.w me reenvía correctamente a a.b.c.d, la pregunta es: ¿que estoy > > haciendo mal en lo anterior? > > > > pd: tail /var/log/syslog > > Jan 10 08:44:51 localhost kernel: lalala DNAT lalala IN=eth2 OUT= > > MAC=00:08:54:45:8f:fd:00:1b:d5:0f:42:93:08:00 SRC=e.f.g.h DST=x.y.z.w > > LEN=48 TOS=0x00 PREC=0x00 TTL=124 ID=47944 DF PROTO=TCP SPT=3682 > > DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0 > > Jan 10 08:44:57 localhost kernel: lalala DNAT lalala IN=eth2 OUT= > > MAC=00:08:54:45:8f:fd:00:1b:d5:0f:42:93:08:00 SRC=e.f.g.h 0 > > DST=x.y.z.w LEN=48 TOS=0x00 PREC=0x00 TTL=124 ID=47945 DF PROTO=TCP > > SPT=3682 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0[/code] > > > > ¿eso significa que al menos lot está intentando? > > > No estoy muy seguro pero creo que el problema esta en la ruta que siguen > los paquetes, me explico un paquete con dirección A de fuera de tu red > llega al router y este identifica que es una petición para el puerto 80 > y lo redirige a la maquina correspondiente esta maquina recibe el > paquete, lo ve como un "marciano" (que no corresponde a la red) y no > sabe como contestarle. cuando la redirección es desde dentro de la red > si funciona porque el paquete no es un marciano. > Prueba a poner un "MASQUERADE" en el "POSTROUTING" para que el paquete > no sea un marciano, seria al así como: > "iptables -t nat -A POSTROUTING -j MASQUERADE -o ethlaqueseainterna". > y nos cuentas > Tiene sentido, pero estos días el nat está contra mí :'( Mis reglas quedaron (prefix: iptables -t nat)
-A PREROUTING -d 190.136.36.34 -p tcp -m tcp --dport 80 -j LOG --log-prefix "lalala DNAT afuera: " -A PREROUTING -d 190.136.36.34 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.5 -A POSTROUTING -j LOG -o eth0--log-prefix "MASQ--->" -A POSTROUTING -o eth0 -j MASQUERADE 190.136.36.34 es la ip pública y está en eth2. eth0 es la ip privada y 192.168.1.5 es donde quiero llegar. Hago la prueba y me sale el log 'normal' de la primera regla: Jan 11 10:36:38 localhost kernel: lalala DNAT afuera: IN=eth2 OUT= MAC=00:08:54:45:8f:fd:00:1b:d5:0f:42:93:08:00 SRC=190.137.215.130 DST=190.136.36.34 LEN=48 TOS=0x00 PREC=0x00 TTL=124 ID=10340 DF PROTO=TCP SPT=2843 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0 Pero el log del enmascaramiento sale bien extraño: Jan 11 10:51:04 localhost kernel: MASQ--->IN= OUT=eth0 SRC=172.20.2.251 DST=172.20.3.255 LEN=241 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=138 DPT=138 LEN=221 172.20.2.251/29 es la ip privada, eso va a otro router 172.20.2.13 que una de sus placas es a la red 192.168.1.0/24. Lo rarísimo para mi es que parece estar mandando al broadcast? (DST=172.20.3.255, mi máscara termina en 254.0, así que ese es el broadcast), suponiendo que dst signifique destination, no debería poner 192.168.1.5 o 172.20.2.13? -- http://fishblues.blogspot.com/ http://gonzalor.blogspot.com/ Nacemos desnudos, húmedos, hambrientos y con frío. ¡Y eso es sólo el principio!