-
Notifications
You must be signed in to change notification settings - Fork 0
Configuration DNS
├─ Intra
| ├─ soa
| | ├─ Dockerfile
| | ├─ named.conf
| | ├─ mmes-3.zone
| ├─ resolver
| | ├─ Dockerfile
| | ├─ named.conf
| ├─ docker-compose.yml
├─ Public
| ├─ soa
| | ├─ Dockerfile
| | ├─ named.conf
| | ├─ db.mmes-3
├─ docker-compose.yml
Pour pouvoir gérer la zone mmes-3.ephec-ti.be, il nous faut au préalable, donner notre glue record aux professeurs:
tmes-3 IN NS ns.tmes-3.ephec-ti.be.
ns.tmes-3.ephec-ti.be. IN A 51.91.248.16
Grâce à cela, toutes les requêtes concernant notre zone mmes-3.ephec-ti.be arrivant sur le NS de ephec-ti.be sera délégué à notre SOA externe.
Nous trouvons notre fichier Docker Compose ici. Ce fichier nous permet de relier tous nos services dans le dossier Intra et les déployer dans seulement 2 lignes de commandes:
-
docker compose up -d: lancement du docker compose en mode detached (background) -
docker compose down: arrêt des services du fichier
Dans la partie services, un service à déployer est écrit comme tel:
<nom_du_service>:
build:
context: <chemin_vers_dockerfile>
dockerfile: <nom_du_dockerfile>
container_name: <nom_personnalisé>
networks:
<nom_du_reseau>:
ipv4_address: <ip_statique>
et ces options supplémentaires peuvent être ajoutées:
-
dns: l'adresse IP d'au moins un serveur à ajouter au container; Docker reconnaît celui de l'hôte par défaut -
ports: les ports à ouvrir entre le conteneur et l'hôte pour la communication à l'extérieur.
Dans la partie networks, un réseau (ou sous-réseau) est écrit ainsi:
<nom_du_reseau>:
name: <nom_du_reseau>
ipam:
driver: default
config:
- subnet: <ip_reseau_et_son_masque> (ex: 192.168.0.0/24)
gateway: <ip_statique> (optionnel car docker prend la première adresse disponible par défaut)
Docker n'autorisera pas la création d'un sous-réseau qui porte la même plage d'adresse que le réseau bridge (Docker par défaut).
Dockerfile
FROM ubuntu:latest
RUN apt update && apt full-upgrade -y && \
apt install bind9 bind9utils dnsutils net-tools nano -y
COPY named.conf /etc/bind/named.conf
COPY mmes-3.zone /etc/bind/zones/mmes-3.zone
EXPOSE 53/udp
EXPOSE 53/tcp
VOLUME /etc/bind
CMD ["named", "-c", "/etc/bind/named.conf", "-g"]
mmes-3.zone
$TTL 604800 ; 1 day
$ORIGIN intra.mmes-3.ephec-ti.be.
@ IN SOA ns.intra.mmes-3.ephec-ti.be. (
1 ; serial
3600 ; refresh
3000 ; retry
4619200 ; expire
604800 ; minimum
)
@ IN NS ns.intra.mmes-3.ephec-ti.be.
ns IN A 172.16.1.2
resolver IN A 172.16.1.3
mail IN A 172.16.0.4
web IN A 172.16.1.5
named.conf
options {
directory "/etc/bind";
listen-on { any; };
listen-on-v6 { none; };
allow-query {
172.16.0.0/24;
172.16.1.0/24;
192.168.1.0/24;
};
allow-transfer {
none;
};
pid-file "/var/run/named/named.pid";
allow-recursion { none; };
recursion no;
};
zone "intra.mmes-3.ephec-ti.be" IN {
type master;
file "/etc/bind/mmes-3.zone";
};
zone "0.16.172.in-addr.arpa" IN {
type master;
file "/etc/bind/reverse";
};
Dockerfile
FROM ubuntu:latest
RUN apt update && apt full-upgrade -y && apt install bind9 bind9utils dnsutils net-tools nano -y
COPY named.conf /etc/bind/named.conf
CMD ["named", "-c", "/etc/bind/named.conf", "-g"]
named.conf
options {
directory "/etc/bind";
allow-query {
172.16.0.0/24;
172.16.1.0/24;
192.168.0.0/24;
};
allow-recursion {
172.16.0.0/24;
172.16.1.0/24;
192.168.0.0/24;
};
listen-on port 53 { any; };
listen-on-v6 { none; };
pid-file "/var/run/named/named.pid";
allow-transfer { none; };
forwarders {
8.8.8.8;
51.91.248.16;
};
};
zone "localhost" IN {
type master;
file "pri/localhost.zone";
allow-update { none; };
notify no;
};
zone "127.in-addr.arpa" IN {
type master;
file "pri/127.zone";
allow-update { none; };
notify no;
};
zone "intra.mmes-3.ephec.ti.be" {
type forward;
forwarders { 172.16.1.2; };
forward only;
};
zone "0.16.172.in-addr.arpa" IN {
type forward;
forwarders { 172.16.1.2; };
forward only;
};
Dockerfile
Ce fichier permet le démarrage du conteneur SOA externe de notre DNS.
FROM debian
RUN apt update && apt full-upgrade -y && \
apt install bind9 bind9utils dnsutils net-tools nano -y
COPY named.conf /etc/bind/named.conf
COPY db.mmes-3 /etc/bind/db.mmes-3
EXPOSE 53/udp
EXPOSE 53/tcp
EXPOSE 953/udp
EXPOSE 953/tcp
VOLUME /etc/bind
CMD ["named", "-c", "/etc/bind/named.conf", "-g"]
db.mmes-3
Le fichier complèt se trouve ici, et l'extrait de SOA de base se trouve ci-dessous:
$TTL 604800
$ORIGIN mmes-3.ephec-ti.be.
@ IN SOA ns.mmes-3.ephec-ti.be. hostmaster.mmes-3.ephec-ti.be. (
1 ; serial
3600 ; refresh
3000 ; retry
4619200 ; expire
604800 ; minimum
)
; name serveur record
@ IN NS ns.mmes-3.ephec-ti.be.
@ IN MX 10 mail
;ressource record
@ IN A 51.91.248.16
ns IN A 51.91.248.16
named.conf
options {
directory "/etc/bind";
listen-on {
any;
};
listen-on-v6 {
none;
};
allow-query {
any;
};
allow-transfer {
none;
};
allow-update {
none;
};
allow-recursion {
none;
};
recursion no;
pid-file "/var/run/named/named.pid";
#Sécurisation
dnssec-validation yes;
};
//zone du SOA publique
zone "mmes-3.ephec-ti.be" {
type master;
file "/etc/bind/db.mmes-3.signed";
};
La configuration de bind9 est relativement simple; il suffit de créer une zone et d'y ajouter les informations nécessaires à celle-ci.
Dans le fichier /etc/bind/named.conf, il faut ajouter la zone mmes-3.ephec-ti.be.
Ensuite, il faut faire ce zone en créant un fichier nommé db.mmes-3. Ce fichier contient toutes les informations étant résolvables publiquement (Resource Record).
Après la création de ces 2 fichiers, nous devons redémarrer le service:
service named restart
et nous pouvons tester la résolution des noms avec ce commande:
dig ns.mmes-3.ephec-ti.be
Pour ajouter de futurs services, il faut créer un resource record pour chaque service supplémentaire: un dans le fichier zone, ET un dans le fichier de reverse zone. Il faut préciser le type pour ajouter un RR dans une zone:
- A pour IPv4
- AAAA pour IPv6
- MX pour le mail
Exemple: <nom> IN A <ip_du_service>
Pour la reverse zone, il faut simplement préciser le dernier octet de l'adresse IP et son nom correspondant
Exemple: 24 IN PTR exemple.woodytoys.lab.
Si des erreurs venaient à survenir, il faut penser aux suivants:
- vérifier l'ouverture des port 53 TCP et UDP sur la machine et les conteneurs Docker
- vérifier la syntaxe correcte sur la configuration des fichiers de zones, la présence du paramètre
$ORIGIN, et l'assignation de l'adresse exacte pour chaque service - vérifier la référencement correcte pour les fichier named.conf du SOA
Si le problème survient, nous pouvons vérifier les logs dans le dossier /var/log du conteneur défaillant.
Pour maintenir un résolveur fonctionnel, il faut ajouter dans le fichier named.conf les futures zones à relayer en précisant:
- son nom
- son type
- l'IP vers laquelle on souhaite rediriger
N'oubliez pas d'ajouter la reverse zone également si configuré sur le SOA.
Exemple:
zone "<nom_du_domaine>" IN {
type forward;
forwarders { <ip_du_SOA> };
forward only;
Si des erreurs venaient à survenir, il faut penser aux suivants:
- vérifier l'ouverture des port 53 TCP et UDP sur la machine et les conteneurs Docker
- vérifier la référencement correcte pour les fichier named.conf du SOA