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