{"id":176,"date":"2021-03-09T18:59:39","date_gmt":"2021-03-09T22:59:39","guid":{"rendered":"https:\/\/fabritorrico.whiteboxltda.com\/?p=176"},"modified":"2021-03-11T11:34:42","modified_gmt":"2021-03-11T15:34:42","slug":"servidor-dns-con-bind-en-ubuntu-18-04","status":"publish","type":"post","link":"https:\/\/fabritorrico.whiteboxltda.com\/index.php\/servidoresyservicios\/servidor-dns-con-bind-en-ubuntu-18-04\/","title":{"rendered":"Servidor DNS con BIND en Ubuntu 18.04"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"432\" height=\"244\" src=\"https:\/\/fabritorrico.whiteboxltda.com\/wp-content\/uploads\/2021\/03\/logo_post_dns_bind9.png\" alt=\"\" class=\"wp-image-177\" srcset=\"https:\/\/fabritorrico.whiteboxltda.com\/wp-content\/uploads\/2021\/03\/logo_post_dns_bind9.png 432w, https:\/\/fabritorrico.whiteboxltda.com\/wp-content\/uploads\/2021\/03\/logo_post_dns_bind9-300x169.png 300w\" sizes=\"(max-width: 432px) 100vw, 432px\" \/><\/figure>\n\n\n\n<!--more-->\n\n\n\n<p>Los Servidores de Nombres de Dominio (DNS) son probablemente (junto con los servidores web) los m\u00e1s implementados y usados.<\/p>\n\n\n\n<p>La parte te\u00f3rica es amplia y recomiendo revisarla; sin embargo, este post tiene el objetivo de mostrar la configuraci\u00f3n de BIND (Berkeley Internet Name Domain) en un servidor con Ubuntu 18.04 como sistema operativo base. Para ello se pueden seguir los siguientes pasos.<\/p>\n\n\n\n<p><strong>Actualizaci\u00f3n de la lista de paquetes<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$sudo apt-get update<\/code><\/pre>\n\n\n\n<p><strong>Instalaci\u00f3n de bind9 y complementos<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$sudo apt-get install bind9 bind9utils bind9-doc<\/code><\/pre>\n\n\n\n<p><strong>Establecer el uso \u00fanicamente de IPv4 (opcional)<\/strong><\/p>\n\n\n\n<p>Editar el archivo \u00abbind9\u00bb:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$sudo nano \/etc\/default\/bind9<\/code><\/pre>\n\n\n\n<p>Agregar la siguiente l\u00ednea:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>OPTIONS=\"-u bind -4\"<\/code><\/pre>\n\n\n\n<p><strong>Configuraci\u00f3n de opciones<\/strong><\/p>\n\n\n\n<p>Editar el archivo \u00abnamed.conf.options\u00bb<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$sudo nano \/etc\/bind\/named.conf.options<\/code><\/pre>\n\n\n\n<p>Tomar la siguiente configuraci\u00f3n como base. Donde la ip del servidor DNS es 10.0.0.16 y usa los servidores de google como \u00abforwarders\u00bb:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>options {\n   directory \"\/var\/cache\/bind\";\n   forwarders {\n       8.8.8.8;\n       8.8.4.4;\n   };\n   dnssec-validation auto;\n   auth-nxdomain no;    # conform to RFC1035\n   listen-on { 10.0.0.16; };\n \/\/listen-on-v6 { any; };\n};<\/code><\/pre>\n\n\n\n<p><strong>Configuraci\u00f3n de vistas y zonas<\/strong><\/p>\n\n\n\n<p>Editar el archivo \u00abnamed.conf.local\u00bb<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$sudo nano \/etc\/bind\/named.conf.local<\/code><\/pre>\n\n\n\n<p>Tomar la siguiente configuraci\u00f3n como base. Donde la red interna es 10.0.0.0\/24, se tienen dos vistas (interna y externa), cada vista tiene dos zonas y el dominio es \u00abfabritb.com\u00bb.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>acl interna { 10.0.0.0\/24; localhost; };\nacl externa { 0.0.0.0\/0; };\n\nview interna {\n    match-clients { interna; };\n    allow-recursion { any; };\n\n        zone \"fabritb.com\"\n        {\n            type master;\n            file \"\/etc\/bind\/zones\/db.interna.fabritb.com\";\n        };\n        zone \"0.0.10.in-addr.arpa\"\n        {\n            type master;\n            file \"\/etc\/bind\/zones\/db.0.0.10\";\n        };\n        include \"\/etc\/bind\/zones.rfc1918\";\n        include \"\/etc\/bind\/named.conf.default-zones\";\n};\n\nview externa {\n    match-clients { externa; };\n    allow-recursion { any; };\n\n        zone \"fabritb.com\"\n        {\n            type master;\n            file \"\/etc\/bind\/zones\/db.externa.fabritb.com\";\n        };\n        zone \"181.190.in-addr.arpa\"\n        {\n            type master;\n            file \"\/etc\/bind\/zones\/db.181.190\";\n        };\n        include \"\/etc\/bind\/zones.rfc1918\";\n        include \"\/etc\/bind\/named.conf.default-zones\";\n};<\/code><\/pre>\n\n\n\n<p><strong>Eliminar las zonas por defecto<\/strong><\/p>\n\n\n\n<p>Para eliminar las zonas por defecto, se debe editar el archivo \u00abnamed.conf\u00bb.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$sudo nano \/etc\/bind\/named.conf\n<\/code><\/pre>\n\n\n\n<p>Y comentar o eliminar la siguiente l\u00ednea:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/include \"\/etc\/bind\/named.conf.default-zones\";\n<\/code><\/pre>\n\n\n\n<p><strong>Configuraci\u00f3n de zonas<\/strong><\/p>\n\n\n\n<p>Se debe crear el directorio \u00abzones\u00bb.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$mkdir \/etc\/bind\/zones<\/code><\/pre>\n\n\n\n<p>Dentro del directorio \u00abzones\u00bb, se crean las zonas citadas en el archivo \u00abnamed.conf.local\u00bb. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$touch \/etc\/bind\/zones\/db.interna.fabritb.com\n$touch \/etc\/bind\/zones\/db.0.0.10\n$touch \/etc\/bind\/zones\/db.externa.fabritb.com\n$touch \/etc\/bind\/zones\/db.181.190<\/code><\/pre>\n\n\n\n<p>Y se edita cada uno de los archivos. Tomar como ejemplo la siguiente configuraci\u00f3n para \u00abdb.interna.fabritb.com\u00bb, donde se tienen subdominios para el sitio web (www), correo electr\u00f3nico (mail) y nube (cloud).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ORIGIN cteub.bo.\n$TTL    86400\n@   IN  SOA ns1.fabritb.com. root.fabritb.com. (\n         2021030923     ; Serial\n             604800     ; Refresh\n              86400     ; Retry\n            2419200     ; Expire\n              86400 )   ; Negative Cache TTL\n;\nCreado\n@   IN  NS  ns1.fabritb.com.\n@   IN  MX  10 mail.fabritb.com.\nns1 IN  A  10.0.0.16\nwww. IN  A  10.0.0.12\nmail IN  A  10.0.0.14\ncloud IN  A  10.0.0.15<\/code><\/pre>\n\n\n\n<p>De manera similar, tomar como ejemplo la configuraci\u00f3n de \u00abdb.0.0.10\u00bb.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$TTL    86400\n@       IN      SOA     ns1.fabritb.com. root.fabritb.com. (\n                     2021030901         ; Serial\n                         604800         ; Refresh\n                          86400         ; Retry\n                        2419200         ; Expire\n                         604800 )       ; Negative Cache TTL\n; name servers\n      IN      NS      ns1.fabritb.com.\n\n; PTR Records\n16.0.0.10.in-addr.arpa.   IN      PTR     ns1.fabritb.com.    ; 10.0.0.16\n12.0.0.10.in-addr.arpa.   IN      PTR     www.fabritb.com.    ; 10.0.0.12\n14.0.0.10.in-addr.arpa.   IN      PTR     mail.fabritb.com.    ; 10.0.0.14\n15.0.0.10.in-addr.arpa.   IN      PTR     cloud.fabritb.com.    ; 10.0.0.15\n<\/code><\/pre>\n\n\n\n<p>Se deber\u00e1 configurar tambi\u00e9n las zonas de la vista externa, siguiendo la misma l\u00f3gica pero empleando las direcciones IP p\u00fablicas.<\/p>\n\n\n\n<p><strong>Comprobaci\u00f3n de configuraciones<\/strong><\/p>\n\n\n\n<p>Para comprobar la sintaxis de los archvios named.conf.* hacer uso del siguiente comando.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$sudo named-checkconf<\/code><\/pre>\n\n\n\n<p>Para verificar las zonas, usar el comando \u00abnamed-checkzone\u00bb.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$sudo named-checkzone fabritb.com db.interna.fabritb.com<\/code><\/pre>\n\n\n\n<p><strong>Cambios y actualizaciones<\/strong><\/p>\n\n\n\n<p>Es com\u00fan implementar nuevos servidores que se deben publicar con alg\u00fan subdominio, para ello se deben editar los archivos \u00abdb.lo.que.corresponda\u00bb agregando la entrada con el subdominio y la direcci\u00f3n IP, adem\u00e1s de modificar el valor del \u00abSerial\u00bb, para ello se recomienda usar la nomenclatura A\u00f1oMesDiaNrocambio (ej 2021030901) para asegurar que el n\u00famero es siempre superior al de la configuraci\u00f3n previa. Tras ello se debe reiniciar el servicio y el mismo debe estar listo para ser usado.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$sudo service bind9 restart<\/code><\/pre>\n\n\n\n<p><strong>Recomendaciones<\/strong><\/p>\n\n\n\n<p>Con eso el servidor DNS deber\u00eda estar listo y operando. Si se desea publicar el servidor DNS y se tiene alg\u00fan dispositivo de seguridad (Firewall, NGF, UTM) se debe permitir el acceso al puerto 53 (TCP y UDP). As\u00ed mismo, para un entrono de producci\u00f3n, es recomendable revisar DNSSEC (Domain Name System Security Extensions). Y recuerda, si lo usar\u00e1s como DNS publicado en internet, en nic.bo o en tu proveedor de nombre de dominio debes establecer el (o los) servidor DNS como \u00abns1.dominio.com\u00bb (no solo \u00abdomino.com\u00bb).<\/p>\n\n\n\n<p>Como de costumbre, recalcar que este post no es nada del otro mundo y se puede encontrar lo mismo (inclusive con mas detalles) en otros blogs, sin embargo si esto te ayuda, eres libre de usarlo. Los siguientes enlaces est\u00e1n relacionados con el post.<\/p>\n\n\n\n<ul><li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.josedomingo.org\/pledin\/2017\/12\/vistas-views-en-el-servidor-dns-bind9\/\" target=\"_blank\">https:\/\/www.josedomingo.org\/pledin\/2017\/12\/vistas-views-en-el-servidor-dns-bind9\/<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-configure-bind-as-a-private-network-dns-server-on-ubuntu-18-04\" target=\"_blank\">https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-configure-bind-as-a-private-network-dns-server-on-ubuntu-18-04<\/a><\/li><li><a href=\"http:\/\/rauljesus.xyz\/redes\/dns\/bind\/zonasMultiplesEjemplo\/\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/rauljesus.xyz\/redes\/dns\/bind\/zonasMultiplesEjemplo\/<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[14,13],"_links":{"self":[{"href":"https:\/\/fabritorrico.whiteboxltda.com\/index.php\/wp-json\/wp\/v2\/posts\/176"}],"collection":[{"href":"https:\/\/fabritorrico.whiteboxltda.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fabritorrico.whiteboxltda.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fabritorrico.whiteboxltda.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fabritorrico.whiteboxltda.com\/index.php\/wp-json\/wp\/v2\/comments?post=176"}],"version-history":[{"count":16,"href":"https:\/\/fabritorrico.whiteboxltda.com\/index.php\/wp-json\/wp\/v2\/posts\/176\/revisions"}],"predecessor-version":[{"id":194,"href":"https:\/\/fabritorrico.whiteboxltda.com\/index.php\/wp-json\/wp\/v2\/posts\/176\/revisions\/194"}],"wp:attachment":[{"href":"https:\/\/fabritorrico.whiteboxltda.com\/index.php\/wp-json\/wp\/v2\/media?parent=176"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabritorrico.whiteboxltda.com\/index.php\/wp-json\/wp\/v2\/categories?post=176"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabritorrico.whiteboxltda.com\/index.php\/wp-json\/wp\/v2\/tags?post=176"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}