Aller à : navigation, rechercher

SAMBA - Integration avec bind9

Remarque

Le DNS intégré à Samba4 est fonctionnel pour les tests, mais il est nécessaire de passer en mode "Bind DLZ" une fois que l'on passe en production. En effet, bien que le DNS interne Samba est très simple à mettre en place. Toutefois, il a deux gros désavantages:

  • il ne fait pas de cache
  • on ne peut pas avoir de configuration DNS avancée.

L'installation d'un serveur Bind9 en frontal de Samba4 avec une intégration DLZ permet d'avoir à la fois la performance et la flexibilité de Bind9, et de bénéficier de la gestion des zones DNS intégrées à Active Directory de la même manière que le DNS interne.

Debian

Installation

Procédure pour un debian Stretch 64bit avec une installation de Samba par paquet deb. Installation de Bind9:

apt-get install bind9

Suppression du rôle DNS sur le serveur Samba. Modifier le fichier /etc/samba/smb.conf et rajouter la ligne suivante

[global]
...
server services = -dns
...

On peut aussi commenter ou supprimer la ligne de forwarder DNS qui peut se trouver dans le fichier /etc/samba/smb.conf car elle ne sera plus nécessaire.

# dns forwarders = 8.8.8.8

Modification du fichier /etc/bind/named.conf.local et rajouter la ligne suivante (note: la référence à "samba4" ici est purement informative car elle n'est utilisé ni par bind ni par le module samba4 dlz)

dlz "samba4" {
    # For BIND 9.9.0
    database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_9.so";
};

Modification de droits sur les répertoires et de liens symboliques pour permettre à bind d'accèder aux bases des données samba4

mkdir /var/lib/samba/private/dns/
ln -s /var/lib/samba/private/sam.ldb /var/lib/samba/private/dns/sam.ldb
ln -s /var/lib/samba/private/sam.ldb.d /var/lib/samba/private/dns/sam.ldb.d
chmod 755  /var/lib/samba/private
chmod 750  /var/lib/samba/private/sam.ldb.d
chgrp bind /var/lib/samba/private/sam.ldb.d /var/lib/samba/private/sam.ldb
chmod 660  /var/lib/samba/private/sam.ldb
chgrp bind /var/lib/samba/private/sam.ldb.d/*
chmod 660  /var/lib/samba/private/sam.ldb.d/* 

Changer le mode de fonctionnement DNS du mode "DNS interne" au mode "bind DLZ" (le mode par défaut est "DNS interne")

samba_upgradedns  --dns-backend=BIND9_DLZ  
chown bind /var/lib/samba/private/dns.keytab

Relancer le serveur samba

systemctl restart samba-ad-dc


Modification du fichier /etc/bind/named.conf.options, rajouter la ligne suivante

options {
...
tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";
...
};

Relance du serveur DNS bind

service bind9 restart

Vérification que c'est bien le serveur bind qui écoute sur le port 53

netstat -tapn | grep 53
    tcp        0      0 192.168.149.11:53       0.0.0.0:*               LISTEN      5291/named

Le serveur Samba4 sera probablement sur un réseau NATé et il sera alors préférable de configurer un forwarder DNS. Pour cela il faut modifier le fichier /etc/bind/named.conf.options et décommenter la partie concernant les forwarders

  options{
        ....
	forwarders {
		192.168.147.11;
	};
        ....
  }

Tester la résolution DNS

dig @localhost google.fr
dig @localhost srvads.mondomaine.lan
dig -t SRV @localhost _ldap._tcp.mondomaine.lan

Autres modifications

Si votre environnement n'est pas correctement configuré pour le DNSSEC, il peut être utile de modifier la ligne suivante dans le fichier /etc/bind/named.conf.options

options {
  ...
  dnssec-validation no;
  ...
}

Désactivation de l'écoute ipv6, modifier le fichier /etc/default/bind9

OPTIONS="-4 -u bind"

Permettre aux différents sous réseaux de se connecter (par défaut uniquement le subnet du serveur est autorisé) en éditant le fichier /etc/bind/named.conf.options

options {
  ...
  allow-query {  any;};
  ...
}

Centos

yum install bind
vi /etc/named.conf

ajouter dans la section options:

        listen-on port 53 { any; };
        forwarders {
                8.8.8.8;
        };
        tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";

	allow-query {
	        any;
	};
        allow-recursion {
                any;
        };
        allow-query-cache {
                any;
        };

ajouter a la fin du fichiers:

dlz "mondomaine.local" {
    # For BIND 9.9.0
    database "dlopen /usr/lib64/samba/bind9/dlz_bind9_9.so";
};
vi /etc/sysconfig/named
OPTIONS="-4"
systemctl enable named
mkdir /var/lib/samba/private/dns/
ln -s /var/lib/samba/private/sam.ldb /var/lib/samba/private/dns/sam.ldb
ln -s /var/lib/samba/private/sam.ldb.d /var/lib/samba/private/dns/sam.ldb.d
chmod 755  /var/lib/samba/private
chmod 750  /var/lib/samba/private/sam.ldb.d
chgrp named /var/lib/samba/private/sam.ldb.d /var/lib/samba/private/sam.ldb
chmod 660  /var/lib/samba/private/sam.ldb
chgrp named /var/lib/samba/private/sam.ldb.d/*
chmod 660  /var/lib/samba/private/sam.ldb.d/* 
vi /etc/samba/smb.conf

ajouter:

server services = -dns

et commenter la ligne:

# dns forwarders =


samba_upgradedns  --dns-backend=BIND9_DLZ  
chown named /var/lib/samba/private/dns.keytab
systemctl restart samba
systemctl restart bind

vérifications

Vérification que c'est bien le serveur bind qui écoute sur le port 53

netstat -tapn | grep 53
    tcp        0      0 192.168.149.11:53       0.0.0.0:*               LISTEN      5291/named
dig @localhost google.fr
dig @localhost srvads.mondomaine.lan
dig -t SRV @localhost _ldap._tcp.mondomaine.lan

Remarques

Note : Bind DLZ ne fonctionne pas en mode multiview de Bind si il est référencé dans plusieurs zones