{"id":1867,"date":"2015-07-13T11:28:02","date_gmt":"2015-07-13T10:28:02","guid":{"rendered":"http:\/\/www.javiercarrasco.es\/?p=1867"},"modified":"2015-07-13T11:28:02","modified_gmt":"2015-07-13T10:28:02","slug":"dnsmasqiptables-en-ubuntu-14-04","status":"publish","type":"post","link":"https:\/\/www.javiercarrasco.es\/?p=1867","title":{"rendered":"Dnsmasq+IPTables en Ubuntu 14.04"},"content":{"rendered":"<p>Este curso que entra he decidido hacer un cambio en los servidores de aula, dejando de lado el proxy Squid, inclin\u00e1ndome hacia un servidor m\u00e1s ligero. Por este motivo he decidido instalar <a href=\"https:\/\/wiki.archlinux.org\/index.php\/Dnsmasq_%28Espa%C3%B1ol%29\" target=\"_blank\" rel=\"noopener\">Dnsmasq<\/a> y las correspondientes IPTables para convertir los servidores de aula <em>routers<\/em>.<\/p>\n<p>Dnsmasq es un paquete que nos permitir\u00e1 instalar un servidor DNS y DHCP ligero y de f\u00e1cil configuraci\u00f3n para redes peque\u00f1as. Tambi\u00e9n permite resolver los nombres que tengamos configurados en el fichero <code>\/etc\/hosts<\/code>.<\/p>\n<p>Para este caso, disponemos de un servidor de aula con <strong>dos tarjetas de red<\/strong>. Una conectada al <em>router<\/em> que proporciona Internet (<span style=\"text-decoration: underline;\">eth0<\/span>) y que est\u00e1 configurada por DHCP. Y la otra ser\u00e1 la que est\u00e9 conectada a la red interna del aula (<span style=\"text-decoration: underline;\">eth1<\/span>), configurada manualmente la direcci\u00f3n IP (192.168.0.1), m\u00e1scara de red, puerta de enlace y DNS.<\/p>\n<p><strong>Instalar Dnsmasq<\/strong><\/p>\n<p>Desde un terminal ejecutamos el siguiente comando para instalar el paquete.<\/p>\n<pre>$ sudo apt-get install dnsmasq<\/pre>\n<p>Una vez instalado pasamos a la configuraci\u00f3n. Todo lo que tenemos que modificar lo encontraremos en el archivo <code>\/etc\/dnsmasq.conf<\/code>.<\/p>\n<p>Buscamos las siguientes l\u00edneas y hacemos las modificaciones necesarias.<\/p>\n<pre>interface=eth1  # indicamos la tarjeta por la que serviremos la configuraci\u00f3n DHCP.<\/pre>\n<pre>listen-address=192.168.0.1  # hace lo mismo que la anterior, pero en este caso especifica la direcci\u00f3n IP que escuchar\u00e1 la peticiones.<\/pre>\n<pre>dhcp-range=192.168.0.10,192.168.0.50,24h  # establecemos el rango de IPs a servir y el tiempo de concesi\u00f3n.<\/pre>\n<p>Por \u00faltimo, buscamos la l\u00ednea <code>bind-interfaces<\/code> y la descomentamos quitando la almohadilla (#). Esta \u00faltima opci\u00f3n es recomendable activarla cuando se tienen dos tarjetas, ya que permite a Dnsmasq discriminar peticiones.<\/p>\n<p><strong>DHCP<\/strong><\/p>\n<p>En la configuraci\u00f3n DHCP del servidor \u00fanicamente deberemos descomentar una l\u00ednea. Editamos el archivo <code>\/etc\/dhcp\/dhclient.conf<\/code>. Buscamos la l\u00ednea <code>prepend domain-name-servers 127.0.0.1;<\/code> y le quitamos la almohadilla.<\/p>\n<p><strong>Activar intercambio de paquetes entre tarjetas<\/strong><\/p>\n<p>Esta opci\u00f3n permitir\u00e1 que el sistema pueda comunicar ambas tarjetas e intercambiar paquetes entre ellas. Hay dos formas de hacerlo, en este ejemplo se har\u00e1 de ambas formas, no supone ning\u00fan problema y as\u00ed nos aseguramos que realmente se active.<\/p>\n<p>De forma permanente, editamos el archivo <code>\/etc\/sysctl.conf<\/code>. Buscamos la l\u00ednea <code>net.ipv4.ip_forward=1<\/code> y la descomentamos quitando la almohadilla.<\/p>\n<p>La otra forma es ejecutando el siguiente comando, que como se ver\u00e1 a continuaci\u00f3n se ejecuta con las IPTables.<\/p>\n<pre>echo 1 &gt; \/proc\/sys\/net\/ipv4\/ip_forward<\/pre>\n<p><strong>IPTables<\/strong><\/p>\n<p>Ya s\u00f3lo nos queda indicar como se realizar\u00e1 la comunicaci\u00f3n entre las tarjetas, para eso, creamos un <em>script<\/em> que deberemos copiar en el directorio <code>\/etc\/network\/if-up.d<\/code>, sin extensi\u00f3n, que contendr\u00e1 los siguientes comandos. Aseg\u00farate que tiene los permisos correctos (root:root y 755).<\/p>\n<p>Al copiar el <em>script<\/em> en este directorio, \u00e9ste se ejecutar\u00e1 durante el inicio, cuando las tarjetas de red est\u00e9n levantadas. F\u00edjate que durante la ejecuci\u00f3n del <em>script<\/em> nos aseguramos que Dnsmasq se inicie, as\u00ed como activar el <em>forward<\/em> de las tarjetas de red.<\/p>\n<pre>#!\/bin\/sh\n# Interface conectada a Internet\nINTERNET=\"eth0\"\n# Interface interna\nLAN=\"eth1\"\n\n# Se inicia dnsmasq\nservice dnsmasq start\n\n# Limpia las reglas anteriores\niptables -F\niptables -X\niptables -t nat -F\niptables -t nat -X\n\n# Se activa el forward para permitir que pasen paquetes de una interfaz de red a otra\necho 1 &gt; \/proc\/sys\/net\/ipv4\/ip_forward\n\n# Politica de filtro por defecto\niptables -P INPUT DROP\niptables -P OUTPUT ACCEPT\n\n# Acceso ilimitado a loop back\niptables -A INPUT -i lo -j ACCEPT\niptables -A OUTPUT -o lo -j ACCEPT\n\n# Permite UDP, DNS y FTP pasivo\niptables -A INPUT -i $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT\n\n# Establecer el servidor como router para la red\niptables --table nat --append POSTROUTING --out-interface $INTERNET -j MASQUERADE\niptables --append FORWARD --in-interface $LAN -j ACCEPT\n\n# acceso ilimiato a la LAN\niptables -A INPUT -i $LAN -j ACCEPT\niptables -A OUTPUT -o $LAN -j ACCEPT\n\n# Registrar todo\niptables -A INPUT -j LOG\niptables -A INPUT -j DROP\n<\/pre>\n<p>Para cualquier cambio que hagas sobre Dnsmasq acu\u00e9rdate de reiniciar el servicio.<\/p>\n<pre>$ sudo service dnsmasq restart<\/pre>\n<p><strong>Reservas de IPs<\/strong><\/p>\n<p>Si tienes que hacer reservas de IPs para algunos equipos, o todos, s\u00f3lo tienes que a\u00f1adir una l\u00ednea como la siguiente por cada una de las reservas en el archivo <code>\/etc\/dnsmasq.conf<\/code>.<\/p>\n<pre>dhcp-host=11:22:33:44:55:66,192.168.0.60<\/pre>\n<p>Indicando la direcci\u00f3n MAC del equipo para el que quieres la reserva y la direcci\u00f3n IP que quieres asignarle.<\/p>\n<p>Si necesitas consultar las concesiones de Dnsmasq, s\u00f3lo tienes que consultar el archivo de <em>leases<\/em> en <code>\/var\/lib\/misc\/dnsmasq.leases<\/code>.<\/p>\n<p>Espero que os sirva, au!!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Este curso que entra he decidido hacer un cambio en los servidores de aula, dejando de lado el proxy Squid, inclin\u00e1ndome hacia un servidor m\u00e1s ligero. Por este motivo he decidido instalar Dnsmasq y las correspondientes IPTables para convertir los servidores de aula routers. Dnsmasq es un paquete que nos permitir\u00e1 instalar un servidor DNS [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[39,68,80,115,125],"class_list":["post-1867","post","type-post","status-publish","format-standard","hentry","category-cuaderno-linux","tag-dnsmasq","tag-iptables","tag-lubuntu","tag-scripts","tag-ubuntu"],"_links":{"self":[{"href":"https:\/\/www.javiercarrasco.es\/index.php?rest_route=\/wp\/v2\/posts\/1867","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javiercarrasco.es\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javiercarrasco.es\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javiercarrasco.es\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javiercarrasco.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1867"}],"version-history":[{"count":0,"href":"https:\/\/www.javiercarrasco.es\/index.php?rest_route=\/wp\/v2\/posts\/1867\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.javiercarrasco.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1867"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javiercarrasco.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1867"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javiercarrasco.es\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1867"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}