Bind9 como DNS con delegación de zona

Muchos de los sysadmins en algún momento debemos configurar un Bind o Servidor DNS, hoy les quiero mostrar como configurar el mismo para que haga la función de DNS Externo de su red y a la vez que tenga Delegación de Zona con vistas.

Partimos de que tenemos 2 enlaces uno nacional y uno internacional, en caso de que solo tengas uno solo tienes que obviar la parte de las vista del DNS.

Domain                   dominio.cu
Enlace Internet       200.55.1.0/29
Enlace Nacional       190.6.2.184/29
IP DNS externo(DMZ)   10.11.10.201

DNS ns1.dominio.cu y ns2.dominio.cu
Como notaran puse que el enlace nacional en vez de empezar en 0 espesara un 4, para que puedan entender bien como es la delegación.

Lo primero antes de llamar a ETECSA o a su ISP y solicitar la delegación del dominio y su zona ip debes tener bien tu DNS externo bien configurado.

Instalación del bind

apt install bind9

Como vamos a poner la vista nacional creamos el archivo

touch /etc/bind/named.conf.cuba

Agregamos la carga del archivo al bind

touch /etc/bind/named.conf
nano /etc/bind/named.conf
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.internet";
include "/etc/bind/named.conf.cuba";

 

Ahora editamos la vista de Internet

touch /etc/bind/named.conf.internet
nano /etc/bind/named.conf.internet
view all {
   match-clients { any; };

zone "dominio.cu" {
type master;
file "/etc/bind/dominio.cu.zone";
};

zone "1.55.200.in-addr.arpa" IN {
type master;
file "/etc/bind/dominio.cu.reverse1.zone";
};

zone "0/29.1.55.200.in-addr.arpa" IN {
type master;
file "/etc/bind/dominio.cu.reverse2.zone";
};

zone "2.6.190.in-addr.arpa" IN {
type master;
file "/etc/bind/dominio.cu.reverse3.zone";
};

zone "184/29.2.6.190.in-addr.arpa" IN {
type master;
file "/etc/bind/dominio.cu.reverse4.zone";
};
};

Ahora editamos la vista de cuba

touch /etc/bind/named.conf.cuba
nano /etc/bind/named.conf.cuba
acl cuba {
152.206.0.0/15;
169.158.0.0/16;
181.225.224.0/19;
190.6.64.0/19;
190.15.144.0/20;
190.92.112.0/20;
190.107.0.0/20;
196.1.112.0/24;
196.1.135.0/24;
196.3.152.0/24;
200.0.16.0/24;
200.0.24.0/22;
200.5.12.0/22;
200.13.144.0/21;
200.14.48.0/21;
200.55.128.0/18;
201.220.192.0/19;
};

view cuba {
   match-clients { cuba; };

zone "dominio.cu" {
type master;
file "/etc/bind/dominio.cu.zone.cuba";
};

zone "1.55.200.in-addr.arpa" IN {
type master;
file "/etc/bind/dominio.cu.reverse1.zone";
};

zone "0/29.1.55.200.in-addr.arpa" IN {
type master;
file "/etc/bind/dominio.cu.reverse2.zone";
};

zone "2.6.190.in-addr.arpa" IN {
type master;
file "/etc/bind/dominio.cu.reverse3.zone";
};

zone "184/29.2.6.190.in-addr.arpa" IN {
type master;
file "/etc/bind/dominio.cu.reverse4.zone";
};
};

Notaran que se mantuvo la misma configuración de las inversa de los ips ya que como tal eso no cambia, de cambiar es simplemente crear un archivo distino.

Configuramos la seguridad y logs del servicio

touch /etc/bind/named.conf.options
nano /etc/bind/named.conf.options
options {
                allow-query { cuba; any;};
                allow-query-cache { cuba; any;};
                allow-recursion { none; };
                allow-transfer { none;};
                auth-nxdomain no;
                dnssec-enable yes;
                dnssec-validation yes;
                directory "/var/cache/bind";
                listen-on { 10.11.10.201; 127.0.0.1;};
                listen-on-v6 { none; };
                version "unknown";
                notify no;
                empty-zones-enable no;
//Protecciones anti-ddos
                rate-limit  {
                     slip 2;    // Every other response truncated
                     window 15;    // Seconds to bucket
                     responses-per-second 5;  // # of good responses per prefix-length/sec
                     referrals-per-second 5;  //   referral responses
                     nodata-per-second 5;   //   nodata responses
                     nxdomains-per-second 5;  //  nxdomain responses
                     errors-per-second 5;   //  error responses
                     all-per-second 20;   // When we drop all
                     log-only no;    // Debugging mode
                     qps-scale 250;    // x / query rate * per-second
                                      //       = new drop limit
                     exempt-clients  {127.0.0.1; 10.11.8.0/24;};
                     ipv4-prefix-length 24;   // Define the IPv4 block size
                     max-table-size 20000;   // 40 bytes * this number = max memory
                     min-table-size 500;   // pre-allocate to speed startup
                 };
};

logging {
                channel err {
                        file "/var/log/bind9/bind.err";
                        severity error;
                        print-time yes;
                        print-category yes;
                        print-severity yes;
                };
                channel info {
                        file "/var/log/bind9/bind.info";
                        severity info;
                        print-time yes;
                        print-category yes;
                        print-severity yes;
                };
                channel warn {
                        file "/var/log/bind9/bind.warn";
                        severity warning;
                        print-time yes;
                        print-category yes;
                        print-severity yes;
                };
                channel log {
                        file "/var/log/bind9/bind.log";
                        severity debug 1;
                        print-time yes;
                        print-category yes;
                        print-severity yes;
                };
                category default { err; info; warn; log; };
};

Ya una vez creado estos archivos pasamos a la creación de las carpetas de los logs, seguidamente la zona de cada vista

mkdir -p /var/log/bind9
mkdir -p /var/cache/bind/
chown -R bind /var/log/bind9/
chown -R bind /var/cache/bind/
touch /etc/bind/dominio.cu.zone
touch /etc/bind/dominio.cu.zone.cuba
touch /etc/bind/dominio.cu.reverse1.zone
touch /etc/bind/dominio.cu.reverse2.zone
touch /etc/bind/dominio.cu.reverse3.zone
touch /etc/bind/dominio.cu.reverse4.zone

Pasamos a configurar la Zona de Internet
nano /etc/bind/dominio.cu.zone

$ORIGIN dominio.cu.
$TTL 7200
@       IN      SOA     ns1.dominio.cu.      sysadmin.dominio.cu. (
                        2018041801	        ; serial number
                        3600                    ; refresh
                        900                     ; retry
                        1209600                 ; expire
                        7200                    ; ttl
                        )
; Name servers
                    IN      NS      ns1.dominio.cu.
                    IN      NS      ns2.dominio.cu.

; MX records
                    IN      MX      10 mail.dominio.cu.

; TXT records
                    IN      TXT      "v=spf1 a mx -all"
                    IN      TXT      "Empresa de Administradores Cuba"
                    IN      TXT      "Adress: El patio de mi casa es particular"
                    IN      TXT      "GPS: 22.3026414,-80.9802364"
                    IN      TXT      "IT Support: menganitoperes"
                    IN      TXT      "Voice: +53-(PROVINCIA)TELEFONO"
                    IN      TXT      "E-Mail: [email protected]"

; SRV records
_jabber._tcp.dominio.cu.          IN      SRV     5       0       5269    jabber.dominio.cu.
_xmpp-server._tcp.dominio.cu.     IN      SRV     5       0       5269    jabber.dominio.cu.
_conference._tcp.dominio.cu.      IN      SRV     5       0       5269    jabber.dominio.cu.
_xmpp-client._tcp.dominio.cu.     IN      SRV     5       0       5269    jabber.dominio.cu.
_submission._tcp.dominio.cu.      IN      SRV     5       0       587     mail.dominio.cu.
_pop3s._tcp.dominio.cu.           IN      SRV     0       1       995     mail.dominio.cu.
_imaps._tcp.dominio.cu.           IN      SRV     5       0       993     mail.dominio.cu.
_caldavs._tcp.dominio.cu.         IN      SRV     5       0       443     mail.dominio.cu.

; Lets Encrypt records
_acme-challenge.dominio.cu.       IN      TXT      "kzVNNLb5zvWxxiW30WbdD54OMYO5gbXRmqmpKPHihmQ"

; DKIM records
_domainkey.dominio.cu.            IN      TXT      "o=~"
_adsp._domainkey.dominio.cu.      IN      TXT      "dkim=unknown"
mail._domainkey.dominio.cu.       IN      TXT     ( "v=DKIM1; k=rsa; "
      "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA43OObSbPwrEb2FuHpjYAkeGftJEA8zLW9jYB4SdscFBoRfD/XlQ+/40JkcbYeEifInSD/rteWYPnTBYHqfooF5QPAUtl0qzU2/Udi2CAROaImFt1MLJySTY6wVcVae0KRWc5EkRuUmyeqXYQjrhCK6mFhhjhGcOV5YsIb1uD2mqcm7C658Bmtkuc/1559W+CC+QGJ1ck3VkpWn"
      "E0kAVWUD0leIYFhBj2/Yy2iCtvXDAVnAsSS/RFuleU9lbAt7ty7+cNOw0dAxqYwvbKUoF+rgTk2NC+K6TIUBY2gV5QNT2ris59j8x7a0nYsEHtTjIERxdXo0gf2wtBmJVdDAysbQIDAQAB" )

; DMARC records
_dmarc.dominio.cu.                 IN       TXT "v=DMARC1; p=none; adkim=r; aspf=r; rf=afrf; sp=none"

; CNAME
ns                  IN      CNAME    ns1
smtp                IN      CNAME    mail
pop                 IN      CNAME    mail
pop3                IN      CNAME    mail
imap                IN      CNAME    mail


; A records
ns1                 IN      A        200.55.1.2
ns2                 IN      A        190.6.2.186
mail                IN      A        200.55.1.3
jabber	 	    IN      A	     200.55.1.2

; Additional A records
@                   IN      A       200.55.1.2
www                 IN      A       200.55.1.2

Pasamos a configurar la Zona de Cuba
nano /etc/bind/dominio.cu.zone.cuba

$ORIGIN dominio.cu.
$TTL 7200
@       IN      SOA     ns2.dominio.cu.      sysadmin.dominio.cu. (
                        2018041801	        ; serial number
                        3600                    ; refresh
                        900                     ; retry
                        1209600                 ; expire
                        7200                    ; ttl
                        )
; Name servers
                    IN      NS      ns1.dominio.cu.
                    IN      NS      ns2.dominio.cu.

; MX records
                    IN      MX      10 mail.dominio.cu.

; TXT records
                    IN      TXT      "v=spf1 a mx -all"
                    IN      TXT      "Empresa de Administradores Cuba"
                    IN      TXT      "IT Support: menganitoperes"
                    IN      TXT      "Voice: +53-(PROVINCIA)TELEFONO"
                    IN      TXT      "E-Mail: [email protected]"

; SRV records
_jabber._tcp.dominio.cu.          IN      SRV     5       0       5269    jabber.dominio.cu.
_xmpp-server._tcp.dominio.cu.     IN      SRV     5       0       5269    jabber.dominio.cu.
_conference._tcp.dominio.cu.      IN      SRV     5       0       5269    jabber.dominio.cu.
_xmpp-client._tcp.dominio.cu.     IN      SRV     5       0       5269    jabber.dominio.cu.
_submission._tcp.dominio.cu.      IN      SRV     5       0       587     mail.dominio.cu.
_pop3s._tcp.dominio.cu.           IN      SRV     0       1       995     mail.dominio.cu.
_imaps._tcp.dominio.cu.           IN      SRV     5       0       993     mail.dominio.cu.
_caldavs._tcp.dominio.cu.         IN      SRV     5       0       443     mail.dominio.cu.

; Lets Encrypt records
_acme-challenge.dominio.cu.       IN      TXT      "kzVNNLb5zvWxxiW30WbdD54OMYO5gbXRmqmpKPHihmQ"

; DKIM records
_domainkey.dominio.cu.           IN      TXT      "o=~"
_adsp._domainkey.dominio.cu.     IN      TXT      "dkim=unknown"
mail._domainkey.dominio.cu.      IN      TXT     ( "v=DKIM1; k=rsa; "
      "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA43OObSbPwrEb2FuHpjYAkeGftJEA8zLW9jYB4SdscFBoRfD/XlQ+/40JkcbYeEifInSD/rteWYPnTBYHqfooF5QPAUtl0qzU2/Udi2CAROaImFt1MLJySTY6wVcVae0KRWc5EkRuUmyeqXYQjrhCK6mFhhjhGcOV5YsIb1uD2mqcm7C658Bmtkuc/1559W+CC+QGJ1ck3VkpWn"
      "E0kAVWUD0leIYFhBj2/Yy2iCtvXDAVnAsSS/RFuleU9lbAt7ty7+cNOw0dAxqYwvbKUoF+rgTk2NC+K6TIUBY2gV5QNT2ris59j8x7a0nYsEHtTjIERxdXo0gf2wtBmJVdDAysbQIDAQAB" )

; DMARC records
_dmarc.dominio.cu.               IN       TXT "v=DMARC1; p=none; adkim=r; aspf=r; rf=afrf; sp=none"

; CNAME
ns                  IN      CNAME    ns1
smtp                IN      CNAME    mail
pop                 IN      CNAME    mail
pop3                IN      CNAME    mail
imap                IN      CNAME    mail


; A records
ns1                 IN      A        200.55.1.2
ns2                 IN      A        190.6.2.186
mail                IN      A        200.55.1.3
jabber	 	    IN      A	     190.6.2.186

; Additional A records
@                   IN      A       190.6.2.186
www                 IN      A       190.6.2.186

Explicación de la zona:

  1. El SOA debe cumplir el formato de la rfc1982 podemos usar YEAR-MES-DIA-NUMERO es decir 2018041801, no debe pasarte de esta cantidad de caracteres.
  2. Los Registros SPF se pone el registro TXT correspondiente para nuestra red y algunas informaciones de nuestra empresa
  3. Los Registros SRV estan definidos cumpliendo las RFC internacionales, se ponen en caso de que se habré para la red externa el correo y el jabber
  4. Tambien ponemos en su momento el registro TXT que nos manda a crear cuando saquemos el certificado Wildcard de Let’s Encrypt
  5. Los Registros DKIM y DMARC son todos aquellos que se agregan cuando habilitamos esas comprobaciones en nuestro servidor de correo
  6. Notaran que de la vista de Internet a la Vista Nacional solo se cambia los datos del SOA y en los IPs, ya que lo que se hace establece que los servicios salgan por el IP nacional para optimizar el consumo de los enlaces, mantenimos el IP del servidor de correo para no tener conflicto

Pasamos a configurar las Zonas Inversa
nano /etc/bind/dominio.cu.reverse1.zone

$ORIGIN 1.55.200.in-addr.arpa.
$TTL 7200
@       IN      SOA     ns1.dominio.cu.      syadmin.dominio.cu. (
                        2018041801        ; serial number
                        3600                    ; refresh
                        900                     ; retry
                        1209600                 ; expire
                        7200                    ; ttl
                        )
; Name servers
                    IN      NS      ns1.dominio.cu.
                    IN      NS      ns2.dominio.cu.

; CNAME records
2                       IN      CNAME     2.0/29.1.55.200.in-addr.arpa.
3                       IN      CNAME     3.0/29.1.55.200.in-addr.arpa.

nano /etc/bind/dominio.cu.reverse2.zone

$ORIGIN 0/29.1.55.200.in-addr.arpa.
$TTL 7200
@       IN      SOA     ns1.dominio.cu.      syadmin.dominio.cu. (
                        2018041801        ; serial number
                        3600                    ; refresh
                        900                     ; retry
                        1209600                 ; expire
                        7200                    ; ttl
                        )
; Name servers
                    IN      NS      ns1.dominio.cu.
                    IN      NS      ns2.dominio.cu.

; PTR records
2                       IN      PTR     ns1.dominio.cu.
3                       IN      PTR     mail.dominio.cu.

nano /etc/bind/dominio.cu.reverse3.zone

$ORIGIN 2.6.190.in-addr.arpa.
$TTL 7200
@       IN      SOA     ns1.dominio.cu.      syadmin.dominio.cu. (
                        2018041801        ; serial number
                        3600                    ; refresh
                        900                     ; retry
                        1209600                 ; expire
                        7200                    ; ttl
                        )
; Name servers
                    IN      NS      ns1.dominio.cu.
                    IN      NS      ns2.dominio.cu.

; CNAME records
186                       IN      CNAME     186.184/29.2.6.190.in-addr.arpa.

nano /etc/bind/dominio.cu.reverse4.zone

$ORIGIN 184/29.2.6.190.in-addr.arpa.
$TTL 7200
@       IN      SOA     ns1.dominio.cu.      syadmin.dominio.cu. (
                        2018041801        ; serial number
                        3600                    ; refresh
                        900                     ; retry
                        1209600                 ; expire
                        7200                    ; ttl
                        )
; Name servers
                    IN      NS      ns1.dominio.cu.
                    IN      NS      ns2.dominio.cu.

; PTR records
186                       IN      PTR     ns2.dominio.cu.

Comprobamos las configuraciones

named-checkconf -z /etc/bind/named.conf
named-checkzone dominio.cu /etc/bind/dominio.cu.zone
named-checkzone dominio.cu /etc/bind/dominio.cu.zone.cuba
named-checkzone 1.55.200.in-addr.arpa /etc/bind/dominio.cu.reverse1.zone
named-checkzone 0/29.1.55.200.in-addr.arpa /etc/bind/dominio.cu.reverse2.zone
named-checkzone 2.6.190.in-addr.arpa /etc/bind/dominio.cu.reverse3.zone
named-checkzone 184/29.2.6.190.in-addr.arpa /etc/bind/dominio.cu.reverse4.zone

Reiniciamos el Bind
service bind9 restart

Comprobacion del Servicio

Como lo dice esto es para comprobar que lo que hicimos lo hicimos bien y no un dedaso…

dig dominio.cu. @200.55.1.2 ANY +norec +short
host -t any dominio.cu 200.55.1.2
nslookup -q=any dominio.cu 200.55.1.2
nslookup 200.55.1.2 200.55.1.2

Habilitar el inicio automatico de Bind

update-rc.d bind9 enable
systemctl enable bind9

Recuerden dar los datos a su ISP a la hora de solicitar tu DNS, tienes que darle los fqdn y ip es decir

ns1.dominio.cu IN A 200.55.1.2
ns2.dominio.cu IN A 190.6.2.186

Y ya de esta tenemos el DNS listo para ser consultado por los DNS internacionales

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 4.8 / 5. Recuento de votos: 18

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Sobre Armando Felipe Fuentes Denis 82 artículos
Cloud Architect | DevOps | SecOps | SRE | Cloud | SysAdmins

6 comentarios

  1. Google Chrome 125.0.0.0 Google Chrome 125.0.0.0 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36

    No se si todavia estara el admin de aqui al tanto pero aqui va mi duda. Por que a los DNS de cara a internet tienen dos zonas inversas? Es obligatorio poner los CNAME esos en la zona inversa, no basta con los PTR?

  2. Firefox 99.0 Firefox 99.0 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0

    Buenas Noches
    Tengo este problema como me pueden ayudar
    named.service – BIND Domain Name Server
    Loaded: loaded (/lib/systemd/system/named.service; enabled; vendor preset: enabled)
    Active: failed (Result: exit-code) since Sat 2022-04-23 23:22:23 CDT; 7min ago
    Docs: man:named(8)
    Process: 6948 ExecStart=/usr/sbin/named -f $OPTIONS (code=exited, status=1/FAILURE)
    Main PID: 6948 (code=exited, status=1/FAILURE)

    Apr 23 23:22:23 named[6948]: command channel listening on 127.0.0.1#953
    Apr 23 23:22:23 named[6948]: configuring command channel from ‘/etc/bind/rndc.key’
    Apr 23 23:22:23 named[6948]: command channel listening on ::1#953
    Apr 23 23:22:23 named[6948]: isc_stdio_open ‘/var/log/bind9/bind.err’ failed: permission denied
    Apr 23 23:22:23 named[6948]: isc_stdio_open ‘/var/log/bind9/bind.err’ failed: permission denied
    Apr 23 23:22:23 named[6948]: configuring logging: permission denied
    Apr 23 23:22:23 named[6948]: loading configuration: permission denied
    Apr 23 23:22:23 named[6948]: exiting (due to fatal error)
    Apr 23 23:22:23 systemd[1]: named.service: Main process exited, code=exited, status=1/FAILURE
    Apr 23 23:22:23 systemd[1]: named.service: Failed with result ‘exit-code’.

  3. Firefox 99.0 Firefox 99.0 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0

    Cuando hago la comprobación de los servicio como estan puesto me da este error
    ;; Connection to 190.225.250.120#53(190.225.250.120) for prueba.cu. failed: connection refused.

  4. Opera 70.0.3728.178 Opera 70.0.3728.178 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36 OPR/70.0.3728.178

    Pregunta, que puediera ser que tengo 3 servidores dns y solo en 2 me sale el spf y lo tengo bien declarado, la unica diferencia es en el que no me funciona tiene debian 9, los mx me funcionan ok..


  5. Warning: Undefined array key 1 in /var/www/html/sysadminsdecuba/wp-content/plugins/wp-useragent/wp-useragent-detect-os.php on line 668
    Firefox 75.0 Firefox 75.0 Ubuntu x64 Ubuntu x64
    Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:75.0) Gecko/20100101 Firefox/75.0

    Ojo, el tuto es con Debian, si usas ubuntu es lo mismo, pero… el directorio de los logs debe ser cambiado de /var/log/bind9 a /var/log/named porque ubuntu tiene una config de apparmor que restringe que sea ESE y solo ESE directorio.

  6. Firefox 59.0 Firefox 59.0 Windows 8.1 x64 Edition Windows 8.1 x64 Edition
    Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0

    Muy buen tutorial espero que hagas uno proximamente de como montar un mx con todo lo que tienes declarado en las zonadas del dns

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*