{"id":221,"date":"2004-10-23T19:23:08","date_gmt":"2004-10-23T17:23:08","guid":{"rendered":"http:\/\/www.marblestation.com\/blog\/?p=221"},"modified":"2012-04-26T18:54:54","modified_gmt":"2012-04-26T16:54:54","slug":"chownat-conexiones-directas-entre-pcs-detras-de-nat","status":"publish","type":"post","link":"https:\/\/www.marblestation.com\/?p=221","title":{"rendered":"Chownat: conexiones directas entre PCs detr\u00e1s de NAT"},"content":{"rendered":"<p><a href=\"http:\/\/chownat.lucidx.com\/\">Chownat<\/a> es un fant\u00e1stico script perl que permite que dos ordenadores que se encuentre en redes locales diferentes y accedan a internet a trav\u00e9s de un servidor que hace NAT con firewall puedan conectarse directamente sin tener que redirigir puertos. Es decir, si tenemos una configuraci\u00f3n:<\/p>\n<p>Ordenador A -> Servidor LAN NAT1 -> Internet < - Servidor LAN NAT2 <- Ordenador B\n\nDe forma directa, el ordenador A no podria establecer una conexi\u00f3n a un puerto del ordenador B ya que el Servidor NAT2 no permitiria ese tr\u00e1fico, b\u00e1sicamente pq si la red local est\u00e1 compuesta por varios ordenadores no sabria a quien dirigir dicho paquete a no ser que tenga definida una regla explicita. La soluci\u00f3n habitual es precisamente definir estas reglas, pero no siempre tenemos el control del servidor de salida de nuestra red.\n<!--more--><br \/>\nChownat aprovecha las caracter\u00edsticas de NAT para hacer posible una conexi\u00f3n directa desde el ordenador A a un puerto del ordenador B sin tener que cambiar la configuraci\u00f3n de los servidores.<\/p>\n<p>Supongamos que el Ordenador B tiene un servidor web en el puerto 80 y queremos acceder desde el ordenador A. En el ordenador B vamos a ejecutar:<\/p>\n<p>.\/chownat.pl -d -s 80 ip_publica_servidor_nat1<\/p>\n<p>Esto har\u00e1 que nuestro ordenador empiece a enviar paquetes UDP al servidor NAT1 al puerto 2222, por supuesto el servidor lo que har\u00e1 ser\u00e1 descartar autom\u00e1ticamente dicho tr\u00e1fico ya que no sabr\u00e1 a quien va dirigido. Sin embargo, el servidor NAT2 observar\u00e1 que se est\u00e1 enviando desde el ordenador B trafico a la ip del servidor NAT1 (puerto 2222) y por tanto se &#8220;anotar\u00e1&#8221; que si recibe algo procedente de ah\u00ed lo redirija a nuestro ordenador B (as\u00ed es como funciona el NAT habitualmente, un servidor NAT ve como establecemos una conexi\u00f3n a una determinada IP\/puerto y nos redirigir\u00e1 la respuesta autom\u00e1ticamente).<\/p>\n<p>Seguidamente en el ordenador A ejecutaremos:<\/p>\n<p>.\/chownat.pl -d -c 8000 ip_publica_servidor_nat2<\/p>\n<p>Esto har\u00e1 2 cosas:<\/p>\n<p>1) Empezar\u00e1 a enviar paquetes UDP al servidor nat2 puerto 2222, este servidor aceptar\u00e1 estos paquetes y creer\u00e1 que se trata de respuestas a la informaci\u00f3n enviada previamente por el ordenador B, por tanto redireccionar\u00e1 autom\u00e1ticamente el tr\u00e1fico a dicho ordenador. A la misma vez, el servidor nat1 observ\u00e1 que estamos enviando tr\u00e1fico al servidor nat2 por el puerto 2222 y autom\u00e1ticamente nos redireccionar\u00e1 todo aquello que llegue de all\u00ed. Os recuerdo que los scripts envian de forma constante estos paquetes, por tanto en este punto ya seremos capaces de llegar de extremo a extremo.<\/p>\n<p>2) Se abre el puerto 8000 en la m\u00e1quina local (ordenador A) y se establece un tunel entre dicho puerto y el puerto 80 remoto de forma que realmente nuestro tr\u00e1fico viajar\u00e1 por la conexi\u00f3n UDP que hemos establecido anteriormente al puerto 2222.<\/p>\n<p>Ahora ya podemos acceder al servidor web del ordenador B abriendo un navegador en nuestro ordenador A y apuntando a &#8220;http:\/\/localhost:8000&#8221;.<\/p>\n<p>Personalmente lo he probado simplemente con netcat entre 1 ordenador detr\u00e1s de NAT y otro con conexi\u00f3n directa. En el que estaba detr\u00e1s de NAT he ejecutado:<\/p>\n<p>nc -l -p 80<\/p>\n<p>De forma que netcat escucha por el puerto 80. Y en el otro ordenador, despu\u00e9s de utilizar chownat tal y como he explicado me he conectado a dicho puerto mediante:<\/p>\n<p>telnet localhost 8000<\/p>\n<p>Y la conexi\u00f3n se ha establecido sin problemas (podia escribir texto en ambas terminales y se transmitia al otro extremo). Absolutamente fascitante ya que no he tenido que modificar nada del servidor que hace NAT ni de la configuraci\u00f3n del firewall, lo que me hace pensar tambi\u00e9n que esto se podria utilizar como herramienta de ataque en redes privadas as\u00ed que habr\u00e1 que ir con cuidado \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Chownat es un fant\u00e1stico script perl que permite que dos ordenadores que se encuentre en redes locales diferentes y accedan a internet a trav\u00e9s de un servidor que hace NAT con firewall puedan conectarse directamente sin tener que redirigir puertos. Es decir, si tenemos una configuraci\u00f3n: Ordenador A -> Servidor LAN NAT1 -> Internet < &hellip; <a href=\"https:\/\/www.marblestation.com\/?p=221\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Chownat: conexiones directas entre PCs detr\u00e1s de NAT<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,6],"tags":[],"class_list":["post-221","post","type-post","status-publish","format-standard","hentry","category-espanyol","category-tecnologia"],"_links":{"self":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts\/221","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=221"}],"version-history":[{"count":1,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts\/221\/revisions"}],"predecessor-version":[{"id":1701,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts\/221\/revisions\/1701"}],"wp:attachment":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}