Ya tenemos PDC, pero ¿y el DNS?

En una entrada anterior vimos como montar un PDC sencillo, pero no puse la configuración del DNS que usé para hacer las pruebas. Acá explicaré el proceso y la configuración usada.

Nota: Asumo que usted sabe que esta configuración es de prueba, en un DNS que llamaré “inutil”.

Empezamos.

Recordemos que usaremos las direcciones:

# Our servers
10.10.1.1 gw.inutil.cu gw
10.10.1.2 dns.inutil.cu dns
10.10.1.3 mail.inutil.cu mail
10.10.1.4 pdc.inutil.cu pdc
10.10.1.5 proxy.inutil.cu proxy
10.10.1.6 jabber.inutil.cu jabber

Las cuales usamos en nuestro /etc/hosts.

Entonces, instalando bind:

apt install bind9 bind9-doc dnsutils net-tools

Con esta sentencia instalamos bind9, el programa que brinda el servicio dns, dnsutils las herramientas de bind para encuestar los registros de nombres y en net-tools vienen los utilitarios ifconfig y netstat, que no ayudan a testear nuestra config de red y ver los puertos abiertos en la pc en cuestión.

Nota: Si no queremos usar IPv6, debemos editar el archivo /etc/default/bind9 y en la línea:

OPTIONS="-u bind"

dejarla así:

OPTIONS="-4 -u bind"

Entonces, instalado bind lo primero es dirigirnos a su carpeta de instalación, /etc/bind, donde su fichero de configuración nos dirá lo siguiente:

// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the 
// structure of BIND configuration files in Debian, *BEFORE* you customize 
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

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

Lo cual nos indica que se cargará por orden las configuraciones, named.conf.options de primera, named.conf.local de segunda y por último, named.conf.default-zones, las cuales generlmente no se tocan. Lo que necesitaremos editar se encuentra generalmente en options/local.

Nota: En caso de no conocer algun termino de los usados de ahora en adelante, leer manual oficial de configuración de Bind9[en inglés].

Ahora veamos options:

acl my_net{
	10.10.1.0/24;
	127.0.0.1;
};

options {
	allow-query { my_net; };
	allow-query-cache { my_net; };
	allow-recursion { my_net; };
	allow-transfer { none;};
	auth-nxdomain no;
	dnssec-enable yes;
	dnssec-validation yes;
	directory "/var/cache/bind";
	listen-on { 10.10.1.2; 127.0.0.1;};
	forwarders { 200.55.128.3; 200.55.128.4; 200.55.128.11; 8.8.8.8; 8.8.4.4;};
	listen-on-v6 { none; };
	version none;
	notify no;
	empty-zones-enable no;

	//========================================================================
	// If BIND logs error messages about the root key being expired,
	// you will need to update your keys.  See https://www.isc.org/bind-keys
	//========================================================================
};

Lo obvio es obvio… Creamos una ACL llamada my_net, la que se usará para poner nuestro segmento de red y darle permiso de preguntar nombres/direcciones, sólo a ella. Asi evitamos saturacion a nuestro dns desde afuera de nuestra red, no haremos transferencia de zonas, escuchará por las direcciones 127.0.0.1 y por la 10.10.1.2, los forwarders son los servidores donde preguntará si no logra resolver una direccion que se le pida, que no use IPv6, que no muestre la version de bind[regla de seguridad], y que no habilite las zonas vacías.

Ahora veremos local. En named.conf.local se definen nuestras zonas, en este ejemplo “inutil.cu”:

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

zone "1.10.10.in-addr.arpa" {
    type master;
    file "/etc/bind/db.inutil";
};

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; };
};

De los archivos de log no voy a especificar mucho porque ya hablé de eso en una entrada anterior.

Ahora bien, veamos inutil.db o zona de resolución directa.

cd /etc/bind/
cp db.local inutil.db

Ahora editamos el archivo y lo dejamos como este:

$TTL    604800
@	IN	SOA	dns.inutil.cu.	sysadmin.inutil.cu. (
			2018041001     ; Serial
			604800         ; Refresh
			86400          ; Retry
			2419200        ; Expire
			604800 )       ; Negative Cache TTL
;-------------------------------------------
@       IN      NS      dns.inutil.cu.
;-------------------------------------------
inutil.cu.	IN	MX	10 mail.inutil.cu.
inutil.cu.	IN	TXT	"v=spf1 mx -all"
inutil.cu.	IN	SPF	"v=spf1 mx -all"
inutil.cu.	IN	TXT	"INUTIL.CU"
inutil.cu.	IN	TXT	"E-Mail: sysadmin at inutil.cu"
inutil.cu.	IN	TXT	"Contacto: +53 78387462"

;Records del Jabber
_jabber._tcp.inutil.cu.		IN	SRV	5	0	5269	jabber.inutil.cu.
_xmpp-server._tcp.inutil.cu.	IN	SRV	5	0	5269	jabber.inutil.cu.
_conferencia._tcp.inutil.cu.	IN	SRV	5	0	5269	jabber.inutil.cu.
_xmpp-client._tcp.inutil.cu.	IN	SRV	5	0	5222	jabber.inutil.cu.

ns		IN	CNAME	dns
ns1		IN	CNAME	dns
webmail		IN	CNAME	mail
correo		IN	CNAME	mail
lista		IN	CNAME	mail

; Correo 
pop             IN      CNAME   mail 
pop3            IN      CNAME   mail 
smtp            IN      CNAME   mail 
imap            IN      CNAME   mail
gw		IN	A 	10.10.1.1
dns		IN	A	10.10.1.2
mail		IN	A	10.11.10.3
pdc		IN	A	10.11.10.4
proxy		IN	A	10.11.10.5
jabber		IN	A	10.11.10.6
mx		IN	A	10.11.10.7

; Servidores
pve1		IN	A	10.10.1.201
pve2		IN	A	10.10.1.202
nas		IN	A	10.10.1.203

; Otros servidores
repo		IN	A	10.10.1.8

Ahora para la zona inversa:

cp db.127 db.inutil

Lo editamos con vi/nano, su editor de consola preferido:

$TTL    604800
@	IN	SOA	dns.inutil.cu	sysadmin.inutil.cu. (
			2018041001    ; Serial
			604800        ; Refresh
			86400         ; Retry
			2419200       ; Expire
			604800 )      ; Negative Cache TTL
;-------------------------------------------------------
@	IN	NS	inutil.cu.
;-------------------------------------------------------
1	IN	PTR	gw.inutil.cu.
2	IN	PTR	dns.inutil.cu.
3	IN	PTR	mail.inutil.cu.
4	IN	PTR	pdc.inutil.cu.
5	IN	PTR	proxy.inutil.cu.
6	IN	PTR	jabber.inutil.cu.
7	IN	PTR	mx.inutil.cu.
8	IN	PTR	repo.inutil.cu.

Y listo. Ahora sólo nos queda probar que no haya errores, con:

named-checkconf

Si no devuelve nada es que la config esta OK! Ahora debemos reiniciar bind9:

/etc/init.d/bind9 restart

Sólo queda revisar los logs, y ver que todo está funcionando como debe. No hay mucho más que agregar. No pongo vistas pues acá no son necesarias, pero esten conscientes que las vistas son muy importantes cuando debes ver varias zonas/redes en tu DNS.

Un saludo y espero les sirva.

3 comentarios de “Ya tenemos PDC, pero ¿y el DNS?

  1. HOLA aun tengo el error…
    le explico…….
    MONTADO DNS = a este tutorial…
    TUTORIAL 1 |PDC simple con Samba 4| que funsiona estupendamente muchas gracias fue de mucha ayuda, tomo y configuro todo hasta el punto ( 4 – Instalar servicio NTP)
    (dhcp, ntp, configuración de la red y /etc/hosts) en el PCD y funcionan perfectamente!
    REGRESO AL TUTORIAL 2 |PDC + Samba 4 + DLZ, o PDC con Samba4 y delegación de zona|
    y funciona hasta…

    root@pdc:/usr/local/src/samba-4.8.0# chgrp bind /var/lib/samba/private/dns.keytab
    root@pdc:/usr/local/src/samba-4.8.0# chmod g+r /var/lib/samba/private/dns.keytab
    root@pdc:/usr/local/src/samba-4.8.0# cd
    root@pdc:~# mv /etc/krb5.conf{,.orig}
    root@pdc:~# ln -s /var/lib/samba/private/krb5.conf /etc/krb5.conf
    root@pdc:~# nano /var/lib/samba/private/named.conf.update.static
    root@pdc:~# mkdir /var/run/samba
    mkdir: no se puede crear el directorio «/var/run/samba»: El fichero ya existe
    root@pdc:~# chown -R root:bind /var/lib/samba/private/dns
    chown: no se puede acceder a ‘/var/lib/samba/private/dns’: No existe el fichero o el directorio
    root@pdc:~# mkdir /var/lib/samba/private/dns
    root@pdc:~# chown -R root:bind /var/lib/samba/private/dns
    root@pdc:~# chmod 775 -R /var/lib/samba/private/dns
    root@pdc:~# mkdir /var/run/named
    root@pdc:~# chmod 775 -R /var/run/named
    root@pdc:~# chown root:bind /var/run/named
    root@pdc:~# named -u bind -4 -d 3 &
    [2] 28643
    root@pdc:~# samba -i -M single &
    [3] 28648
    samba version 4.8.0 started.
    [2] Salida 1 named -u bind -4 -d 3
    root@pdc:~# Copyright Andrew Tridgell and the Samba Team 1992-2018
    binary_smbd_main: samba: using ‘single’ process model
    Attempting to autogenerate TLS self-signed keys for https for hostname ‘PDC.inutil.cu’
    TLS self-signed keys generated OK
    ../source4/dsdb/dns/dns_update.c:330: Failed DNS update – with error code 110

  2. Deseo que se fije (root@pdc:~# mkdir /var/run/samba) desde ahi para abajo….
    y me diga que error cometo?
    si es posible discutir todas las opciones y errores q cometo…puedo si lo desea ver en persona si es posible?
    NOTA:
    _________________mire una duda ____________________
    also-notify { 10.10.1.2;};
    # //allow-transfer { 10.10.1.3;}; // si va a ser transferencia de zona a otro servidor de dns esclavo
    notify-source 10.10.1.2;
    transfer-source 10.10.1.2;
    _________________que ip pongo…2 o 4?______________

    aunque lo intente con las 2 primero y luego con la 4…..mmmm no se!

  3. Buenas, y con sssd (pam, etc)
    Porque cuando lo intento sssd me instala unas samba libs y utils que me crean conflictos con la version compilada y deja de funcionar samba.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *