Documentation DNS - bahuwart/Projet-admin-2 GitHub Wiki
On a une partie interne et un partie externe. La partie interne est accessible seulement de l'interne et permet de résoudre les différents services interne tandis que la partie externe permet à tout le monde d'accéder au ressources dns public notamment le site b2b et www.
Pour le dns interne il faut faire en sorte d'accepter seulement certaine adresse ip.
allow-recursion {
172.18.0.0/16;
127.0.0.1/32;
};
resolver :
# Utilisez l'image de base Ubuntu avec BIND9 préinstallé
FROM ubuntu/bind9
# Met à jour les sources de paquets et installe BIND9
RUN apt-get update && apt-get install -y bind9
# Copie le fichier named.conf dans le répertoire /etc/bind/
COPY named.conf /etc/bind/
# Crée un répertoire pour les fichiers journaux de BIND
RUN mkdir /var/log/named
# Expose le port 53 en mode TCP pour les requêtes DNS entrantes
EXPOSE 53/tcp
# Expose le port 53 en mode UDP pour les requêtes DNS entrantes
EXPOSE 53/udp
# Commande par défaut qui sera exécutée lorsque le conteneur démarre
CMD ["/usr/sbin/named","-g"]
zone "." IN {
type hint;
file "/usr/share/dns/root.hints";
};
Caractéristiques :
- Type : hint
- Fichier : "/usr/share/dns/root.hints"
Explication :
Cette zone est configurée avec le type hint, ce qui indique au serveur BIND que cette zone contient des indices (hints) pour la résolution DNS. Le fichier "/usr/share/dns/root.hints" contient des informations sur les serveurs racines de l'Internet, ce qui permet à ce serveur BIND de démarrer la résolution des noms à partir de ces serveurs racines.
zone "localhost" IN {
type master;
file "db.local";
allow-update { none; };
notify no;
};
Caractéristique :
- Cette zone gère les enregistrements DNS pour le nom de domaine "localhost".
- Elle est de type master, ce qui signifie que le serveur BIND gère directement les enregistrements de cette zone.
- Le fichier "db.local" contient les enregistrements de cette zone.
- Les mises à jour sont désactivées avec allow-update { none; } pour empêcher toute modification non autorisée.
- Les notifications sont désactivées avec notify no; pour éviter l'envoi de notifications lors de mises à jour.
Explication :
La zone "localhost" est utilisée pour gérer les enregistrements DNS liés au nom de domaine spécial "localhost". Le nom de domaine "localhost" est utilisé pour faire référence à la machine locale. Cette zone est généralement présente pour permettre au serveur DNS de résoudre le nom "localhost" en une adresse IP spéciale (127.0.0.1), qui est l'adresse IP loopback, et inversement.
zone "127.in-addr.arpa" IN {
type master;
file "db.127";
allow-update { none; };
notify no;
};
Caractéristiques :
- Type : master
- Fichier : "db.127"
- Mises à jour autorisées : none
- Notification : désactivée
Explication :
Cette zone gère la résolution inversée pour les adresses IP dans le bloc 127.0.0.0/8 (utilisé pour localhost). Elle est également de type master et contient les enregistrements de cette zone. Les mises à jour sont désactivées pour la sécurité et les notifications sont désactivées pour éviter les notifications de mises à jour.
zone "woodytoys.interne" IN {
type forward;
forwarders {172.18.0.3;};
forward only;
};
Caractéristiques :
- Type : forward
- Serveurs de redirection (forwarders) : 172.18.0.3
- Redirection uniquement : oui
Explication :
Cette zone est configurée pour rediriger toutes les requêtes vers le domaine "woodytoys.interne" vers le serveur DNS à l'adresse IP 172.18.0.3 qui est le SOA de la zone. Le type forward indique que les requêtes seront redirigées vers les serveurs configurés comme forwarders. forward only; spécifie que ce serveur ne répondra qu'aux requêtes de redirection et ne résoudra pas localement les noms de cette zone.
zone "0.18.172.in-addr.arpa" IN {
type forward;
forwarders {172.18.0.3;};
forward only;
};
Caractéristiques :
- Type : forward
- Serveurs de redirection (forwarders) : 172.18.0.3
- Redirection uniquement : oui
Explication :
Cette zone est similaire à la zone précédente, mais elle gère la résolution inversée pour les adresses IP dans le bloc 172.18.0.0/16. Les requêtes de résolution inversée pour ces adresses IP seront redirigées vers le serveur DNS à l'adresse IP 172.18.0.3.
# Utilisez l'image de base Ubuntu avec BIND9 préinstallé
FROM ubuntu/bind9
# Met à jour les sources de paquets et installe BIND9
RUN apt-get update && apt-get install -y bind9
# Copie le fichier de configuration principal named.conf dans /etc/bind/
COPY named.conf /etc/bind/
# Copie le dossier "forward" contenant les configurations de zone vers /etc/bind/
COPY forward /etc/bind/
# Copie le dossier "reverse" contenant les configurations de zone inversée vers /etc/bind/
COPY reverse /etc/bind/
# Crée un répertoire pour les fichiers journaux de BIND
RUN mkdir /var/log/named
# Expose le port 53 en mode TCP pour les requêtes DNS entrantes
EXPOSE 53/tcp
# Expose le port 53 en mode UDP pour les requêtes DNS entrantes
EXPOSE 53/udp
# Commande par défaut qui sera exécutée lorsque le conteneur démarre
CMD ["/usr/sbin/named","-g"]
ici on définit qui est le maitre pour la zone et où se trouve son fichier de zone.
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.interne" IN {
type master;
file "/etc/bind/forward";
allow-update {none;};
notify no;
};
zone "0.18.172.in-addr.arpa" IN {
type master;
file "etc/bind/reverse";
allow-update {none;};
notify no;
};
il y a le fichier de zone forward et reverse, forward permet de résoudre les nom de domaines vers adresse ip et le reverse des adresses ip aux nom de domaines
forward :
$ORIGIN woodytoys.interne.
$TTL 86400
@ IN SOA soa.woodytoys.interne. hostmaster.woodytoys.interne. (
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.interne.
IN MX 10 mail.woodytoys.interne.
dns IN A 172.18.0.2
soa IN A 172.18.0.3
www IN A 172.18.0.5
mail IN A 172.18.0.4
db IN A 172.18.0.6
reverse:
$ORIGIN 0.18.172.in-addr.arpa.
$TTL 86400
@ IN SOA soa.woodytoys.interne. hostmaster.woodytoys.interne. (
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.interne.
2 IN PTR dns.woodytoys.interne.
3 IN PTR soa.woodytoys.interne.
5 IN PTR www.woodytoys.interne.
4 IN PTR mail.woodytoys.interne.
6 IN PTR db.woodytoys.interne.
ici on définit qui est le maitre pour la zone et où se trouve son fichier de zone ainsi que la configuration pour activer le dnssec. Ici on accepte toutes les requêtes provenant de l'extérieur.
options {
directory "/var/cache/bind";
// Accepte toutes les requêtes
allow-query { any; };
allow-recursion {none;};
// Configurer pour écouter sur le port 53
listen-on port 53 {any;};
listen-on-v6 { none; };
pid-file "/var/run/named/named.pid";
allow-transfer { none; };
// Active le dnssec
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
};
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 "m2-3.ephec-ti.be" IN {
type master;
file "/etc/bind/forward.signed";
notify yes;
};
zone "166.236.52.in-addr.arpa" IN {
type master;
file "/etc/bind/reverse";
allow-update {none;};
notify no;
};
Il y a le fichier de zone forward et reverse. Forward permet de résoudre les nom de domaines vers adresse ip. Reverse, des adresses ip aux nom de domaines.
forward :
$ORIGIN m2-3.ephec-ti.be.
$TTL 86400
@ IN SOA ns.m2-3.ephec-ti.be. hostmaster.m2-3.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.m2-3.ephec-ti.be.
IN MX 10 mail.m2-3.ephec-ti.be.
ns IN A 52.236.166.204
www IN A 52.236.166.204
mail IN A 52.236.166.204
b2b IN A 52.236.166.204
reverse:
$ORIGIN 166.236.52.in-addr.arpa.
$TTL 86400
@ IN SOA ns.m2-3.ephec-ti.be. hostmaster.m2-3.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.m2-3.ephec-ti.be.
IN MX mail.m2-3.ephec-ti.be.
204 IN PTR ns.m2-3.ephec-ti.be.
204 IN PTR www.m2-3.ephec-ti.be.
204 IN PTR mail.m2-3.ephec-ti.be.
le service dns interne est initialisé dans le docker-compose.yml du projet tandis que le soa publique est démarré séparément ce qui facilite l'update des clés dnssec et des zones. il ne faut pas oublier de mapper le port 53 de la machine hôte au container soa_externe pour UDP et TCP afin qu'il puisse récupérer les requêtes dns venant d'internet sans problème.
version: '3'
services:
pc1:
build:
context: pc1/
dockerfile: Dockerfile
networks:
intranet:
ipv4_address: 172.18.0.7
dns:
- 172.18.0.3
container_name: pc1
pc2:
build:
context: pc2/
dockerfile: Dockerfile
networks:
intranet:
ipv4_address: 172.18.0.8
dns:
- 172.18.0.3
container_name: pc2
mail:
build:
context: mail/
dockerfile: Dockerfile
networks:
intranet:
ipv4_address: 172.18.0.4
dns:
- 172.18.0.3
container_name: mail
dns:
build:
context: dns/
dockerfile: Dockerfile
networks:
intranet:
ipv4_address: 172.18.0.2
dns:
- 172.18.0.3
container_name: dns
soa:
build:
context: soa/
dockerfile: Dockerfile
networks:
intranet:
ipv4_address: 172.18.0.3
dns:
- 172.18.0.3
container_name: soa
db:
build:
context: db/
dockerfile: Dockerfile
networks:
intranet:
ipv4_address: 172.18.0.6
dns:
- 172.18.0.3
container_name: db
web2:
build:
context: web2/
dockerfile: Dockerfile
networks:
intranet:
ipv4_address: 172.18.0.5
dns:
- 172.18.0.3
container_name: web2
ports:
- "80:80"
- "443:443"
depends_on:
- db
networks:
intranet:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.18.0.0/16
dans le dossier soa2 du projet
docker build -t soa_externe .
docker run -d -p 53:53/tcp -p 53:53/udp --name soa_externe soa_externe
docker exec -it soa_externe /bin/bash
cd /etc/bind
dnssec-keygen -a RSASHA256 -b 4096 -n ZONE m2-3.ephec-ti.be
dnssec-keygen -f KSK -a RSASHA256 -b 4096 -n ZONE m2-3.ephec-ti.be
for key in `ls Km2-3.ephec-ti.be*.key`
do
echo "\$INCLUDE /etc/bind/$key">> forward
done
dnssec-signzone -A -3 $(head -c 1000 /dev/random | sha1sum | cut -b 1-16) -N INCREMENT -o m2-3.ephec-ti.be -t forward
Si on veut rajouter un service interne ou rajouter une ressource accessible à tous sur internet, il suffit de rajouter un RR (ressource record) dans les fichiers de zone (forward, reverse) correspondant
forward :
example IN A <IP ADDRESS>
après accessible sous cet forme : example.domain.xyz
reverse :
IP IN PTR example.domain.xyz
Pour tester si le dns fonctionne il suffit de ping ou de dig la ressource voulue
ping www.m2-3.ephec-ti.be OR dig www.m2-3.ephec-ti.be