<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Bitácora de Vuelo (Publicaciones sobre DNS)</title><link>http://blog.taniquetil.com.ar/</link><description></description><atom:link href="http://blog.taniquetil.com.ar/categories/dns.xml" rel="self" type="application/rss+xml"></atom:link><language>es</language><copyright>Contents © 2023 &lt;a href="mailto:facundo@taniquetil.com.ar"&gt;Facundo Batista&lt;/a&gt; CC BY-NC-SA</copyright><lastBuildDate>Mon, 29 May 2023 18:51:58 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Cacheando DNS</title><link>http://blog.taniquetil.com.ar/posts/0559/</link><dc:creator>Facundo Batista</dc:creator><description>&lt;p&gt;&lt;em&gt;(para los que no están al tanto qué es el DNS, una explicación rápida es que es un servicio que transforma los nombres que usamos los humanos para direcciones de servers (www.google.com, taringa.net, etc), a direcciones IP que la computadora necesita para acceder a dichos servers (173.194.42.17, 108.59.9.83, etc))&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Dependiendo de los servidores DNS que utilicen, un query a los mismos puede tardar entre algunos milisegundos, hasta decenas o centenares de milisegundos.&lt;/p&gt;
&lt;p&gt;Como un query DNS se ejecuta cada vez que algún programa tiene que convertir un nombre a una IP, esto puede hacer bastante lenta la navegación u otros programas que accedan a la red. Acelerar esto al máximo es siempre una buena idea. Y una forma fácil de acelerarlo es instalar localmente un "caché de DNS"... entonces si hay que resolver una dirección por primera vez, se tardará lo que se tarde en traer la IP desde el mundo exterior, pero las sucesivas veces el tiempo será virtualmente cero).&lt;/p&gt;
&lt;p&gt;Lástima que en Ubuntu Precise, NetworkManager levanta el dnsmasq (que cachea DNS y hace otras cosas copadas) con la opción &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;--cache-size=0&lt;/span&gt;&lt;/code&gt;, que efectivamente le dice que no cachee nada. Un estúpido. Encima, tiene esa opción hardcodeada en código (una mierda, ver &lt;a class="reference external" href="https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/903854"&gt;bug #903854&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Los siguientes son los pasos para solucionar esto....&lt;/p&gt;
&lt;p&gt;Editen el archivo de config de NetworkManager y borren la linea que dice &lt;code class="docutils literal"&gt;dnsmasq&lt;/code&gt;:&lt;/p&gt;
&lt;pre class="literal-block"&gt;sudo gedit /etc/NetworkManager/NetworkManager.conf&lt;/pre&gt;
&lt;p&gt;Instalen dnsmasq (les va a dar error al tratar de arrancar porque hay otro proceso tomando el puerto, no se preocupen):&lt;/p&gt;
&lt;pre class="literal-block"&gt;sudo apt-get install dnsmasq&lt;/pre&gt;
&lt;p&gt;Maten todas las instancias de dnsmasq que encuentren:&lt;/p&gt;
&lt;pre class="literal-block"&gt;ps -eaf | grep dnsmasq
sudo kill ...&lt;/pre&gt;
&lt;p&gt;Editen el archivo de configuración:&lt;/p&gt;
&lt;pre class="literal-block"&gt;sudo gedit /etc/dnsmasq.conf&lt;/pre&gt;
&lt;p&gt;Descomenten las lineas de no-resolv y no-poll, y agreguen servers externos a mano, esas lineas quedarían:&lt;/p&gt;
&lt;pre class="literal-block"&gt;no-resolv
no-poll
server=8.8.8.8
server=8.8.4.4&lt;/pre&gt;
&lt;p&gt;No las pongan en cualquier lado, funciona, pero les queda desordenado. Fíjense que el archivo de config las tiene por ahí. Finalmente, reinicien dnsmasq:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;sudo service dnsmasq restart&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Para verificar que funciona lindo, pueden usar el comando &lt;code class="docutils literal"&gt;dig&lt;/code&gt;, que resuelve nombres, y les dice cuanto tardó. Entonces hagan &lt;code class="docutils literal"&gt;dig unadireccionquenohayanusado.com&lt;/code&gt; dos veces, y vean la diferencia entre ambos tiempos (pista: el segundo tiempo debería ser cero o casi cero).&lt;/p&gt;</description><category>cache</category><category>configuración</category><category>dig</category><category>DNS</category><category>networkmanager dnsmasq</category><guid>http://blog.taniquetil.com.ar/posts/0559/</guid><pubDate>Fri, 04 May 2012 21:24:51 GMT</pubDate></item><item><title>Compartiendo Internet</title><link>http://blog.taniquetil.com.ar/posts/0066/</link><dc:creator>Facundo Batista</dc:creator><description>&lt;p&gt;En casa hay cuatro máquinas, algunas en producción y otras de desarrollo (¿?), y una está conectada a Internet (la mía). Me propuse compartir la conexión para que todas tengan banda ancha sin tener que pagar más conexiones.&lt;/p&gt;
&lt;p&gt;Antes que nada, tenía que decidir si era posible trabajar con una sola placa de red, conectando mi placa, las otras tres máquinas y el módem &lt;a class="reference external" href="http://es.wikipedia.org/wiki/ADSL%20"&gt;ADSL&lt;/a&gt; a un &lt;a class="reference external" href="http://es.wikipedia.org/wiki/Concentrador"&gt;HUB&lt;/a&gt;. Para esto debía hacer que mi placa de red trabajase con &lt;a class="reference external" href="https://es.wikipedia.org/wiki/Direcci%C3%B3n_IP"&gt;dos IPs&lt;/a&gt; distintas, la pública (que es la que me asigna Speedy) y una privada, para la &lt;a class="reference external" href="http://es.wikipedia.org/wiki/Lan"&gt;LAN&lt;/a&gt; hogareña. Luego de investigar bastante en Internet, llegué a la conclusión de que no sólo es más complicado, sino que esta solución no funciona muy bien a menos que sepamos configurar muy bien el tema de las colisiones y demás inconvenientes ocasionados por la dualidad de IPs para la misma placa. Como no quería meterme en más de quince quilombos al mismo tiempo, decidí comprar otra placa de red y agregarla a mi máquina.&lt;/p&gt;
&lt;p&gt;Como las placas de red son algo que duran, y no se ponen tecnológicamente viejas, compré una buena: 3Com. No sabía muy bien como instalar una segunda placa de red en el Linux, por lo que quise buscar un poco en Internet como hacerlo. Como no encontré nada en los primeros cinco minutos decidí probar a ver que pasaba. Abrí la máquina, coloqué la placa, cerré, enchufé, arranqué el Linux (Fedora Core 3). En tiempo de booteo, el Linux busca nuevo hardware, y me saltó un cartelito indicando que había encontrado una nueva placa de red (especificando el exacto modelo que yo tenía), que si la quería configurar ahora, después o nunca. Dije "ahora", le cargué la IP correspondiente, y listo, ¡voilá!, tenía dos placas de red.&lt;/p&gt;
&lt;p&gt;El Linux terminó de arrancar y me quise conectar a Internet, pero no se conectaba. Como &lt;a class="reference external" href="http://es.wikipedia.org/wiki/Root"&gt;root&lt;/a&gt; tiré un &lt;code class="docutils literal"&gt;ifconfig &lt;span class="pre"&gt;-a&lt;/span&gt;&lt;/code&gt; y me di cuenta que, aunque antes la única placa que tenía era &lt;code class="docutils literal"&gt;eth0&lt;/code&gt;, la nueva placa se había puesto como &lt;code class="docutils literal"&gt;eth0&lt;/code&gt; y la vieja estaba como &lt;code class="docutils literal"&gt;eth1&lt;/code&gt;. Entonces fui a la configuración de la red, y puse que Speedy estaba en &lt;code class="docutils literal"&gt;eth1&lt;/code&gt; y no en &lt;code class="docutils literal"&gt;eth0&lt;/code&gt; como antes. Listo, ahora también tenía Internet.&lt;/p&gt;
&lt;p&gt;Siguiendo &lt;a class="reference external" href="http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html_single/Home-Network-mini-HOWTO.html"&gt;este howto&lt;/a&gt;, configuré algunos detallitos y reinicié la red para que tome los cambios (un comando, nada de apagar la PC ni esas cosas...). Este tutorial, sin embargo, me explicaba las reglas de &lt;code class="docutils literal"&gt;ipchains&lt;/code&gt; para configurar el IP-Masquerading (que es lo que permite compartir conexión), así que seguí con &lt;a class="reference external" href="http://www.linuxsolved.com/forums/index.php?topic=115.0"&gt;este post&lt;/a&gt; en un foro que explicaba usando &lt;code class="docutils literal"&gt;iptables&lt;/code&gt; (que es lo que traen los Linuxes modernos para decir qué entra y qué en la máquina a nivel de red).&lt;/p&gt;
&lt;p&gt;Fui analizando que significaba cada opción, y ejecuté alguno de las órdenes que decía, otras no. Configuré la máquina de mi viejo, para la red nueva interna que había armado ahora, pero no funcionaba. Tenía &lt;a class="reference external" href="http://es.wikipedia.org/wiki/Ping"&gt;ping&lt;/a&gt; al exterior, pero no &lt;a class="reference external" href="http://es.wikipedia.org/wiki/DNS"&gt;DNS&lt;/a&gt;. Así que levanté un DNS en mi máquina, pero tampoco: entonces tenía que bajar un nivel a ver que pasaba. Abrí el &lt;a class="reference external" href="http://es.wikipedia.org/wiki/Ethereal"&gt;ethereal&lt;/a&gt; y vi que mi máquina estaba rechazando las conexiones. Entonces me puse a ver las reglas de iptables y me di cuenta que estaba haciendo pasar por el &lt;a class="reference external" href="http://es.wikipedia.org/wiki/Firewall"&gt;firewall&lt;/a&gt; a las máquinas internas también. Puse para aceptar todo lo que venga de adentro, y listo, ¡funcionó!.&lt;/p&gt;
&lt;p&gt;:D&lt;/p&gt;</description><category>ADSL</category><category>compartir</category><category>DNS</category><category>eth0</category><category>eth1</category><category>Ethereal</category><category>firewall</category><category>HUB</category><category>internet</category><category>iptables</category><category>ping</category><guid>http://blog.taniquetil.com.ar/posts/0066/</guid><pubDate>Sat, 06 Aug 2005 20:26:19 GMT</pubDate></item></channel></rss>