<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>firewall - Soi57.net</title>
	<atom:link href="https://soi57.net/blog/tag/firewall/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>soi57.net/blog</description>
	<lastBuildDate>Tue, 08 Sep 2020 14:55:44 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7</generator>

<image>
	<url>https://soi57.net/blog/wp-content/cropped-logo_soi57.net_half_ico-32x32.jpg</url>
	<title>firewall - Soi57.net</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Acceder a servicio en ip publica mapeada a tu propia maquina con iptables</title>
		<link>https://soi57.net/blog/acceder-a-servicio-en-ip-publica-mapeada-a-tu-propia-maquina-con-iptables/</link>
					<comments>https://soi57.net/blog/acceder-a-servicio-en-ip-publica-mapeada-a-tu-propia-maquina-con-iptables/#comments</comments>
		
		<dc:creator><![CDATA[root]]></dc:creator>
		<pubDate>Thu, 31 Dec 2009 10:07:03 +0000</pubDate>
				<category><![CDATA[guias]]></category>
		<category><![CDATA[dnat]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[puertos]]></category>
		<category><![CDATA[snat]]></category>
		<guid isPermaLink="false">http://soi57.net/articles/?p=215</guid>

					<description><![CDATA[<p>La semana pasada tuve que mapear un puerto de una ip del firewall para que llegase a una máquina de una subred interna que tenía como puerta de enlace una &#8230; </p>
<p>La entrada <a href="https://soi57.net/blog/acceder-a-servicio-en-ip-publica-mapeada-a-tu-propia-maquina-con-iptables/">Acceder a servicio en ip publica mapeada a tu propia maquina con iptables</a> se publicó primero en <a href="https://soi57.net/blog">Android, administracion de sistemas y seo</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>La semana pasada tuve que <strong>mapear</strong> un puerto de una ip del <strong>firewall</strong> para que llegase a una máquina de una subred interna que tenía como puerta de enlace una <strong>ip de la subred interna</strong> del firewall.  Accediendo desde afuera de nuestra red el puerto funcionaba sin problemas haciendo la redirección con rinetd o con las siguientes reglas en <strong>iptables</strong>.</p>
<blockquote><p>
iptables -A INPUT -i INTERFAZ_PUBLICO_FIREWALL -p tcp &#8211;dport PUERTO_PUBLICO_FIREWALL -j ACCEPT<br />
iptables -A PREROUTING -i INTERFAZ_PUBLICO_FIREWALL -t nat -p tcp &#8211;dport PUERTO_PUBLICO_FIREWALL -j DNAT &#8211;to IP_SERVICIO_RED_INTERNA:PUERTO_SERVICIO_RED_INTERNA<br />
iptables -A FORWARD -i INTERFAZ_PUBLICO_FIREWALL -p tcp -d IP_SERVICIO_RED_INTERNA &#8211;dport PUERTO_SERVICIO_RED_INTERNA -j ACCEPT</p></blockquote>
<p>De esta manera todos los paquetes que vengan de Internet al <strong>puerto publico</strong> de mi <strong>firewall</strong> irán al <strong>puerto del servicio</strong> que está corriendo en la ip de la máquina de la subred interna. El problema es cuando te intentas conectar desde un host de la <strong>misma red local</strong> a la que pertenece el servidor interno (conectándote a la ip pública del firewall) . No se puede. Es un <strong>problema de enrutado</strong>: comenzaremos estudiando lo que ocurre en el caso normal. Veamos que ocurre paso a paso:</p>
<li>El paquete deja la máquina de la red interna para dirigirse a ip pública del firewall.</li>
<li>El paquete llega al cortafuegos.</li>
<li>El paquete sufre la traducción <strong>DNAT</strong> y todas las acciones necesarias se toman en consecuencia, si bien al paquete no se le efectúa ninguna traducción <strong>SNAT</strong> y mantiene la misma dirección IP de origen (es decir una ip de la red interna) </li>
<li>El paquete sale del cortafuegos y alcanza la máquina que está corriendo el servicio</li>
<p>.</p>
<li>El servidor interno intenta responder al paquete y observa en las tablas de enrutado que el<br />
   paquete viene de una máquina local de la misma red, por lo que intenta enviar el paquete<br />
   directamente a la dirección IP de origen (que a partir de ese momento se convierte en la dirección IP<br />
   de destino).</p>
<li>
<li> El paquete llega al cliente, que no sabe qué hacer puesto que el paquete devuelto no proviene del<br />
   host al que envió la petición original. Por éllo el cliente desecha el paquete y continúa esperando la<br />
   respuesta válida.</li>
<h2>Solución</h2>
<p>Una solución es hacer una traducción <strong>SNAT</strong> a todos los paquetes que entren al <strong>cortafuegos</strong> y a los que sabemos que también se les va a aplicar la traducción <strong>DNAT</strong>. Por ej., vamos a efectuar una traducción SNAT a los paquetes que entren al firewall y estén destinados a la ip interna de nuestro servicio en el puerto correspondiente, de forma que parecerá que provengan de la ip de la <strong>subred interna</strong> del <strong>firewall</strong>. Ésto forzará al servidor interno a devolver los paquetes a través del cortafuegos, que invertirá la traducción <strong>DNAT</strong> y los reenviará al cliente. </p>
<blockquote><p>
iptables -A INPUT -i INTERFAZ_PUBLICO_FIREWALL -p tcp &#8211;dport PUERTO_PUBLICO_FIREWALL -j ACCEPT<br />
iptables -t nat -A PREROUTING &#8211;dst IP_PUBLICA_FIREWALL -p tcp &#8211;dport PUERTO_PUBLICO_FIREWALL -j DNAT &#8211;to-destination IP_SERVIDOR_INTERNO:PUERTO_SERVICIO_INTERNO<br />
iptables -t nat -A POSTROUTING -p tcp &#8211;dst IP_SERVIDOR_INTERNO &#8211;dport IP_SERVICIO_INTERNO -j SNAT  &#8211;to-source IP_INTERNA_FIREWALL<br />
iptables -t nat -A OUTPUT &#8211;dst IP_PUBLICA_FIREWALL -p tcp &#8211;dport PUERTO_PUBLICO_FIREWALL -j DNAT &#8211;to-destination IP_SERVIDOR_INTERNO:PUERTO_SERVICIO_INTERNO<br />
iptables -A FORWARD -i INTERFAZ_PUBLICO_FIREWALL -p tcp -d IP_SERVIDOR_INTERNO &#8211;dport PUERTO_SERVICIO_INTERNO -j ACCEPT
</p></blockquote>
<p>No sé si lo he explicado claro y si hay alguna forma mejor de hacerlo, pero a mi me ha funcionado.</p>
<div style='text-align:left' class='yasr-auto-insert-visitor'></div><p>La entrada <a href="https://soi57.net/blog/acceder-a-servicio-en-ip-publica-mapeada-a-tu-propia-maquina-con-iptables/">Acceder a servicio en ip publica mapeada a tu propia maquina con iptables</a> se publicó primero en <a href="https://soi57.net/blog">Android, administracion de sistemas y seo</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://soi57.net/blog/acceder-a-servicio-en-ip-publica-mapeada-a-tu-propia-maquina-con-iptables/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
