DNS - a-kalin0/Admin-Projet-CAA GitHub Wiki

Resolver

Resolver est le conteneur qui va nous permettre de gérer les requêtes DNS au sein de l'entreprise Woddytoys ainsi que de faire de la délégation vers le SOA. Nous avons 2 fichiers dans notre conteneur : Dockerfile et named.conf.


Dockerfile

Voici à quoi ressemble la configuration de notre Dockerfile :

FROM ubuntu/bind9:latest
MAINTAINER 2TL1-1

RUN mkdir -p /var/log/named
RUN apt update -y
RUN apt install net-tools -y
RUN apt install nano -y
RUN apt install iputils-ping -y
RUN apt install traceroute -y
RUN apt install dnsutils -y
RUN apt install links -y
RUN apt install tcpdump -y
COPY named.conf /etc/bind/
EXPOSE 53/udp 53/tcp
CMD ["named", "-g"]

Explication :

  • Ce Dockerfile utilise une image Ubuntu avec BIND9 préinstallé, installe plusieurs outils réseau et copie le fichier de configuration BIND9. Il expose également les ports 53/udp et 53/tcp et lance BIND9 avec la commande named -g lorsque le conteneur est démarré.

Named.conf

  • Voici la configuration de notre fichier named.conf
options {
        dnssec-validation no; 

	directory "/var/cache/bind";

	allow-recursion {
		172.20.1.0/24;
		127.0.0.1/32;
	};
	
	allow-query{
		172.20.1.0/24;
		127.0.0.1/32;
	};

	// Configure the IPs to listen on here.
	listen-on port 53 { any; };
	listen-on-v6 { none; };
	
	pid-file "/var/run/named/named.pid";
	allow-transfer { none; };

};

zone "." IN {
	type hint;
	file "/usr/share/dns/root.hints";
};

zone "localhost" IN {
	type master;
	file "/etc/bind/db.local";	
	allow-update { none; };
	notify no;
};

zone "127.in-addr.arpa" IN {
	type master;
	file "/etc/bind/db.127";
	allow-update { none; };
	notify no;
};

zone "woodytoys.lab" IN {
    type forward;
    forwarders { 172.20.1.3; };
    forward only;
};

zone "0.17.172.in-addr.arpa" IN {
    type forward;
    forwarders { 172.20.1.3; };
    forward only;
};
  • Explication :

    • La première partie "options" définit les options globales du serveur, comme le dossier de travail, les adresses IP autorisées à effectuer des requêtes, les adresses IP écoutées et le fichier PID utilisé pour le processus du serveur.

    • La deuxième partie "zone" définit les zones gérées par le serveur. Chaque zone est définie par son nom et son type, et contient des informations sur les enregistrements DNS pour cette zone. Ici, la zone "." est la zone racine du DNS et contient des informations sur les serveurs racines. La zone "localhost" contient des informations sur l'adresse IP locale, et la zone "woodytoys.lab" définit une zone locale avec un serveur DNS de redirection spécifié.

    • Chaque zone est ensuite suivie de son propre fichier de données DNS, qui contient les enregistrements DNS pour cette zone. Les fichiers de données spécifiés sont /etc/bind/db.local pour la zone "localhost", /etc/bind/db.127 pour la zone "127.in-addr.arpa" et les zones "woodytoys.lab" et "0.17.172.in-addr.arpa" utilisent les serveurs DNS de redirection spécifiés pour effectuer les résolutions DNS.


Lancement du conteneur

Voir : DOCKER-COMPOSE


Test de fonctionnement

  • ping

image

  • dig

image


Soa

Le conteneur soa est va nous permettre de ping toutes nos infrastructures réseaux de l'intranet. Il est constitué des fichiers suivants : Dockerfile,named.conf woodytoys.lab, reverse.lab et woodytoys.public.forward.


Dockerfile

FROM ubuntu/bind9:latest
MAINTAINER 2TL1-1
RUN mkdir -p /var/log/named
RUN apt update -y
RUN apt install net-tools -y
RUN apt install nano -y
RUN apt install iputils-ping -y
RUN apt install traceroute -y
RUN apt install dnsutils -y
RUN apt install traceroute -y
RUN apt install links -y
RUN apt install tcpdump -y
COPY named.conf /etc/bind/
COPY woodytoys.lab /etc/bind/
COPY reverse.lab /etc/bind/
EXPOSE 53/udp 53/tcp
CMD ["named", "-g"]
  • Explication :

    • Ce Dockerfile crée une image Docker à partir de l'image Ubuntu avec le serveur DNS Bind9 installé. Il installe également des outils de réseau, copie les fichiers de configuration pour Bind9 et expose les ports utilisés par le serveur. Enfin, la commande par défaut à exécuter lorsque le conteneur est démarré est le serveur Bind9 en mode daemon.

Named.conf

options {
        directory "/var/cache/bind";

        allow-query {
                172.20.1.0/24;
                127.0.0.1/32;
        };

        allow-recursion {
                none;
        };
        recursion no;

        // Configure the IPs to listen on here.
        listen-on port 53 { any; };
        listen-on-v6 { none; };

        pid-file "/var/run/named/named.pid";
        allow-transfer { none;};
};

zone "." IN {
        type hint;
        file "/usr/share/dns/root.hints";
};

zone "localhost" IN {
        type master;
        file "db.local";
        allow-update { none; };
        notify no;
};
zone "127.in-addr.arpa" IN {
        type master;
        file "db.127";
	allow-update { none; };
        notify no;
};

zone "woodytoys.lab" IN {
        type master;
        file "/etc/bind/woodytoys.lab";
        allow-update { none;};
        notify no;
};

zone "1.20.172.in-addr.arpa" IN {
        type master;
        file "/etc/bind/reverse.lab";
        allow-update { none; };
        notify no;
};
  • Explication :

    • La section "options" définit les options de configuration générales du serveur, telles que le répertoire de cache, les autorisations de requête, les autorisations de récursion et les adresses IP à écouter.

    • La section "zone" est utilisée pour définir les zones de recherche du serveur DNS. Ici, il y a une zone racine "." qui est utilisée pour la résolution de noms DNS, la zone "localhost" qui est utilisée pour la résolution des noms locaux, la zone "127.in-addr.arpa" qui est utilisée pour résoudre les adresses IP en noms de domaines, la zone "woodytoys.lab" qui est utilisée pour résoudre les noms de domaines de l'entreprise WoodyToys et enfin la zone "1.20.172.in-addr.arpa" qui est utilisée pour résoudre les adresses IP de l'entreprise WoodyToys en noms de domaines. Chaque zone spécifie également un fichier de zone correspondant pour stocker les enregistrements de ressources correspondants.


Wooodytoys.lab

$ORIGIN woodytoys.lab.
$TTL 86400
@     IN     SOA    soa.woodytoys.lab.     hostmaster.woodytoys.lab. (
                    2001062501 ; serial
                    21600      ; refresh after 6 hours
                    3600       ; retry after 1 hour
                    604800     ; expire after 1 week
                    86400 )    ; minimum TTL of 1 day

      IN     NS     soa.woodytoys.lab.

      IN     MX     10    mail.woodytoys.lab.


resolver          IN     A       172.20.1.2
soa             IN     A       172.20.1.3
www             IN     A       172.20.1.4
mail             IN     A       172.20.1.5
db              IN      A       172.20.1.6

Reverse.lab

$ORIGIN 1.20.172.in-addr.arpa.
$TTL 86400
@     IN     SOA    soa.woodytoys.lab.     hostmaster.woodytoys.lab. (
                    2001062501 ; serial
                    21600      ; refresh after 6 hours
                    3600       ; retry after 1 hour
                    604800     ; expire after 1 week
                    86400 )    ; minimum TTL of 1 day

        IN      NS      soa.woodytoys.lab.

2       IN      PTR     resolver.woodytoys.lab.
3       IN      PTR     soa.woodytoys.lab.
4       IN      PTR     www.woodytoys.lab.
5       IN      PTR     mail.woodytoys.lab.
6       IN      PTR     db.woodytoys.lab.

Woodytoys.public.forward

$ORIGIN l1-1.ephec-ti.be.
$TTL 86400
@     IN     SOA    ns.l1-1.ephec-ti.be.     hostmaster.l1-1.ephec-ti.be. (
                    2001062501 ; serial
                    21600      ; refresh after 6 hours
                    3600       ; retry after 1 hour
                    604800     ; expire after 1 week
                    86400 )    ; minimum TTL of 1 day

      IN     NS     ns.l1-1.ephec-ti.be.

      IN     MX     10    mail.l1-1.ephec-ti.be.

ns             IN     A       172.20.1.9
www            IN     A       172.20.1.10
b2b            IN     A       172.20.1.10
mail           IN     A       172.20.1.11

Lancement du conteneur

Voir : DOCKER-COMPOSE


Test de fonctionnement

  • ping

image

  • dig

image

  • dig -x

image


Maintenance DNS

Voici un petit guide de maintenance pour le DNS.


  • Ajout / Modification / Suppression d'un user DNS

    • Connectez-vous au serveur via SSH.
    • Accédez au répertoire contenant les fichiers de configuration DNS, dans /etc/bind.
    • Éditez le fichier de zone correspondant à votre domaine (par exemple, woodytoys.lab).
    • Ajoutez, modifiez ou supprimez des records DNS.
    • Enregistrez le fichier et redémarrez le service BIND (sudo systemctl restart bind9).

  • Troubleshooting

    • Les logs de BIND se trouvent généralement dans /var/log/syslog ou /var/log/named.
    • Utilisez des commandes comme grep, tail, ou less pour consulter et rechercher des erreurs spécifiques dans les logs.
    • Si vous êtes sur docker desktop, les logs se trouvent dans un onglet dédié, vous pouvez voir les logs et les éventuelles erreurs pour chaque conteneurs

  • Mises à jour

    • Connectez-vous au serveur via SSH.
    • Mettez à jour la liste des paquets disponibles : sudo apt-get update.
    • Mettez à jour BIND spécifiquement : sudo apt-get install --only-upgrade bind9.
    • Redémarrez le service BIND pour appliquer les changements : sudo systemctl restart bind9.service ou sudo service bind9 restart

  • Erreurs fréquentes et solutions
  1. Problèmes de syntaxes

    • Regarder les logs
    • Aller dans le fichier indiquant l'erreur et vérifier la syntaxe du fichier avec les commandes : named-checkconf ou named-checkzone
    • Sauvegarder le fichier et reessayer
  2. Problèmes de ping, de délégation ou de reverse

    • Vérifier les logs pour trouver les potentielles sources de problèmes
    • Vérifier le nommage des fichiers et des zones de délégation et reverse
    • Vérifier l'adressage IP des records