Instalación de servicio DNS en Debian 11 (Bullseye) IPv4

 

En este manual se instala el servicio DNS Bind9 utilizando Debian Bullseye y se configura con chroot para asegurar el servicio ademas esta configuracion es para ipv4.  Esta configuraciones se han realizado en base al manual proporcionado por Debian para este servicio, el cual lo pueden encontrar en el siguiente enalce: https://wiki.debian.org/Bind9#Installation.    Espero les sea de ayuda.

 

Instalamos el servicio Bind9  

apt install bind9 bind9utils dnsutils

 

Modificamos OPTIONS en el siguiente archivo

vi /etc/default/named

#

# run resolvconf?

RESOLVCONF=no

# startup options for the server

OPTIONS="-u bind -t /var/bind9/chroot"


Paramos el servicio

systemctl stop bind9

 

Creamos la estructura de directorios que utilizará el servicio.

mkdir -p /var/bind9/chroot/{etc,dev,run/named,var/cache/bind,var/log,var/lib/bind,usr/share/dns,usr/share/GeoIP}


Modificamos los archivos siguientes

vi /etc/bind/named.conf

acl internals { 127.0.0.0/8; 172.16.0.0/16; };

controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; }; };

include "/etc/bind/named.conf.options";

include "/etc/bind/named.conf.local";

include "/etc/bind/named.conf.default-zones";

include "/etc/bind/named.conf.log";



vi /etc/bind/named.conf.local

include "/etc/bind/zones.rfc1918";

zone "dominio.com" {

type master;

file "/var/lib/bind/db.dominio.com";

allow-update { key rndc-key; };

};

zone "30.20.10.in-addr.arpa" {

type master;

file "/var/lib/bind/db.dominio.com.inv";

allow-update { key rndc-key; };

};



vi /etc/bind/named.conf.options

options {

directory "/var/cache/bind";

query-source address * port *;

forward only;

forwarders {

10.20.15.250; // los dns de tu proveedor de Internet

10.15.20.250;

};

auth-nxdomain no; # conform to RFC1035

interface-interval 0;

listen-on-v6 { none; };

listen-on { 127.0.0.1; 172.16.100.247; };

allow-transfer { none; };

allow-query { any; };

allow-recursion { internals; };

version none;

// minimal-responses no-auth-recursive; //short aswer

minimal-responses no;

};


vi /etc/bind/named.conf.log

logging {

channel update_debug {

file "/var/log/update_debug.log" versions 3 size 100k;

severity debug;

print-severity yes;

print-time yes;

};

channel security_info {

file "/var/log/security_info.log" versions 1 size 100k;

severity info;

print-severity yes;

print-time yes;

};

channel bind_log {

file "/var/log/bind.log" versions 3 size 1m;

severity info;

print-category yes;

print-severity yes;

print-time yes;

};

category default { bind_log; };

category lame-servers { null; };

category update { update_debug; };

category update-security { update_debug; };

category security { security_info; };

};


vi /var/bind9/chroot/var/lib/bind/db.dominio.com.inv

$TTL 3600

@ IN SOA ns2.dominio.com. root.dominio.com. (

2007010401 ; Serial

3600 ; Refresh [1h]

600 ; Retry [10m]

86400 ; Expire [1d]

600 ) ; Negative Cache TTL [1h]

;

@ IN NS ns2.dominio.com.

145 IN PTR portal.dominio.com.

146 IN PTR ns1.dominio.com.

147 IN PTR ns2.dominio.com.

149 IN PTR mail1.dominio.com.


vi /var/bind9/chroot/var/lib/bind/db.dominio.com

$TTL 3600

@ IN SOA ns2.dominio.com. root.dominio.com. (

2007010401 ; Serial

3600 ; Refresh [1h]

600 ; Retry [10m]

86400 ; Expire [1d]

600 ) ; Negative Cache TTL [1h]

;

IN NS ns1.dominio.com.

IN NS ns2.dominio.com.

IN MX 10 mail1.dominio.com.

@ IN A 10.20.30.147

ns1 IN A 10.20.30.146

ns2 IN A 10.20.30.147

portal IN A 10.20.30.145

correo IN A 10.20.30.148

mail1 IN A 10.20.30.149


Movemos el directorio /etc/bind hacia el directorio del chroot y creamos un enlace simbólico.

mv /etc/bind /var/bind9/chroot/etc
ln -s /var/bind9/chroot/etc/bind /etc/bind 


Asignamos los permisos a los directorios

chown bind:bind /var/bind9/chroot/etc/bind/rndc.key
chown bind:bind /var/bind9/chroot/{run/named,var/cache,var/log,run/named}
chmod 775 /var/bind9/chroot/{var/cache/bind,run/named}
chgrp bind /var/bind9/chroot/{var/cache/bind,run/named}
 

Creamos los dispositivos null y random utilizados por el servicio.

mknod /var/bind9/chroot/dev/null c 1 3
mknod /var/bind9/chroot/dev/random c 1 8
mknod /var/bind9/chroot/dev/urandom c 1 9
chmod 660 /var/bind9/chroot/dev/{null,random,urandom}
 

Copiamos los siguientes archivos:

cp /etc/localtime /var/bind9/chroot/etc/

cp /usr/share/dns/* /var/bind9/chroot/usr/share/dns/


Modificamos los permisos.

chmod 770 /var/bind9/chroot/usr/share/dns -Rf

chown bind:bind /var/bind9/chroot/usr/share/dns -Rf 
 
Configuracionde apparmor

vi /etc/apparmor.d/local/usr.sbin.named

/var/bind9/chroot/etc/bind/** r,
/var/bind9/chroot/var/** rw,
/var/bind9/chroot/dev/** rw,
/var/bind9/chroot/run/** rw,
/var/bind9/chroot/usr/** rw, 

 
Configuramos el servicio rsyslog
 
echo "\$AddUnixListenSocket /var/bind9/chroot/dev/log" > /etc/rsyslog.d/bind-chroot.conf
 

Comprobamos la configuración

/usr/sbin/named-checkconf -t /var/bind9/chroot/ /etc/bind/named.conf

 

Reiniciamos los servicios

systemctl daemon-reload

systemctl restart rsyslog

systemctl restart apparmor

systemctl status bind9

 

Ver los sockets de rsyslog 
lo hacemos con el siguiente comando
netstat -ap | grep rsyslog 

 

Probamos el servicios

dig @127.0.0.1 dominio.com


Con esto deberiamos tener una resolución DNS para ipv4.






 

 


 

Comentarios