Skip to main content

bind9 workshop

·9 mins
Dns French Gnu/Linux Workshop
xeylou
Author
xeylou
Table of Contents
installation d’une infrastructure dns bind9

introduction
#

les deux premiers tp portaient sur l’installation d’une infrastructure dns avec bind9

je n’ai pas fait les notions “transversales” : gestion des logs & les acl

pour nous le qcm sur bind9, dovecot, postfix sera le 18 ou le 19 octobre, sur des notions de cours, td, tp

pas de points négatifs, pas de choix multiples -> une seule réponse possible

explications
#

j’utilise 3 vm debian 12 : r303-deb12-host1, r303-deb12-bind1 & r303-deb12-bind2

le réseau local des vm est le 192.168.122.0/24 avec leur passerelle par défaut en 192.168.122.1

%%{init: {'theme':'dark'}}%% graph TD subgraph 192.168.122.0/24 host1[r303-deb12-host1
.2] bind1[r303-deb12-bind1
.3] srv-bind(Service Bind9) srv-bind2(Service Bind9) bind2[r303-deb12-bind2
.4] gw{NAT
.1} end wan{WAN} wan --- gw gw --- host1 & bind1 gw --- bind2 bind1 -.- srv-bind bind2 -.- srv-bind2

j’utilise debian par habitude, mr. le prof veut nous faire accèder en ssh à ces vm pour ne pas utiliser l’environnement de bureau des ubuntu

configuration initiale
#

pour éviter d’avoir root@debian sur toutes les vm en ssh, je change leur hostname pour avoir root@serveur-bind-1 par exemple

lors des manipulations en terminal, ça évite de se tromper entre qui est qui & de rentrer une commande sur la mauvaise vm

Note commande effectuée en permission root sur les 3 vm en changeant nouveau_hostname
hostnamectl set-hostname nouveau_hostname && logout

je change aussi les ip des vm de manière statique dans /etc/network/interfaces

nano /etc/network/interfaces

je supprime la ligne indiquant de se référer au dhcp (si elle existe): inet iface enp1s0 dhcp

&& je rajoute cette configuration selon l’interface, ici enp1s0X est le dernier octet de l’adresse des vm configurées sur le schéma

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface

# interface que vous avez
auto enp1s0
iface enp1s0 inet static
address 192.168.122.X
netmask 255.255.255.0
gateway 192.168.122.1

pour me simplifier la connexion en ssh, j’autorise l’accès au compte root sur les vm - désactivé par défaut par sécurité

en éditant le fichier /etc/ssh/sshd_config

Note manipulation effectuée sur les 3 vm
nano /etc/ssh/sshd_config

en décommentant & changeant la valeur de cette variable

30
31
32
33
34
35
36
# Authentication

#LoginGraceTime 2m
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

je redémarre le daemon ssh pour prendre la modification en compte

systemctl restart sshd

je change aussi le mot de passe du compte root des vm

passwd root

pour ne pas trop réflechir avec des ip - je le fais mais une erreur d’inattention dans une ip & j’y suis pour 4h de deboggage…

sur la machine qui va accèder en ssh aux vm, je crée des alias pour juste rentrer ssh bind & arriver sur la vm bind par exemple - j’essaye d’être “fénéant intelligemment” :smile:

Note sur la machine physique
nano ~/.ssh/config

avec la configuration suivante

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
host host1
  Hostname 192.168.122.2
  User root

host bind1
  Hostname 192.168.122.3
  User root

host bind2
  Hostname 192.168.122.4
  User root

après ça je peux juste faire ssh host1 qui sera l’équivalent de ssh root@192.168.122.2

conf. serveur bind1
#

j’utiliserai le nom de domaine adehu.com

j’accède au shell du serveur bind

ssh bind1

j’installe les paquets nécessaires

apt install -y dbus bind9* dnsutils

avant de débuter:

une zone inverse : on demande au serveur dns -> pour cette adresse ip, tu as quel domaine?

ce qui est l’inverse de -> j’ai ce nom de domaine, donne-moi son ip associée

dans la zone inverse, il faut mettre les mêmes enregistrements que ceux dans adehu.com, mais à l’envers (vous allez comprendre)

je définis aussi que ce serveur dns (bind1) est le serveur principal pour ces zones dns

dans le fichier de gestion des zones /etc/bind/named.conf, sera définit la zone dns & sa zone inverse

même si la bonne pratique voudrait qu’il inclut un fichier de configuration pour chaque zone…

nano /etc/bind/named.conf

contenant la configuration suivante

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian 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";

zone "adehu.com" IN {
  type master;
  file "/etc/bind/adehu.com";
};

zone "122.168.192.in-addr.arpa" {
  type master;
  file "/etc/bind/adehu.com.inverse";
};

on fait référence à des fichiers qui seront la configuration de ces zones

type master: ce dns est le serveur dns principal de cette zone

pour vérifier la syntaxe du fichier après l’enregistrement

named-checkconf /etc/bind/named.conf

le serveur bind1 sait maintenant qu’il doit se référer au fichier de configuration /etc/bind/adehu.com pour la gestion de la zone adehu.com qu’il gère

configuration de la zone dns adehu.com

nano /etc/bind/adehu.com
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
$TTL 86400
$ORIGIN adehu.com.

@ IN SOA bind1.adehu.com. admin.adehu.com. (
2023092702 ; serial
21600 ; refresh
10800 ; retry
43200 ; expire
10800 ) ; minimum

@ IN NS bind1.adehu.com.
@ IN NS bind2.adehu.com.
guest.adehu.com. IN NS bind2
bind1 IN A 192.168.122.3
bind2 IN A 192.168.122.4
srv-bind1 IN CNAME bind1
srv-bind2 IN CNAME bind2

la directive $ORIGIN est là pour indiquer le domaine si un hôte est pas totalement défini

@ IN SOA pour accorder qui a l’autorité sur cette zone (ici bind1) avec sa config.

IN NS pour faire le record d’un serveur dns (pour cette zone il y a deux serveurs dns)

je rajoute un . à la fin des fqdn pour indiquer leur fin (sinon ils répètent leur domain.tld)

guest.adehu.com. IN NS r303-deb12-bind2 définit un sous domaine & le délègue à bind2 -> si tu veux aller sur le sous-domaine guest.adehu.com, va contacter ce serveur dns

par contre, sur le deuxième serveur dns (bind2), il faudra lui indiquer qu’il gère cette zone (guest.adehu.com)

IN A record pour définir les adresses ip des machines qu’on renseigne (A pour ipv4, AAAA pour ipv6)

IN CNAME les serveurs bind seront accessibles via bindX.adehu.comX leur nombre

les valeurs chiffrées je ne les ai pas sorti de mon chapeau mais de ce tableau d’équivalence (secondes -> instances de temps)

secondesinstances de temps
601 min
180030 min
36001 heure
108003 heures
216006 heures
4320012 heures
864001 jour
259200
3 jours
6048001 semaine

pour la zone inverse

nano /etc/bind/adehu.com.inverse
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
$TTL 86400

@ IN SOA bind1.adehu.com. admin.adehu.com. (
2023092701 ; serial
21600 ; refresh
10800 ; retry
43200 ; expire
10800 ) ; minimum

@ IN NS bind1.
@ IN NS bind2.
11 IN PTR bind1
12 IN PTR bind2

IN PTR le nombre au début = dernier octet de l’ip voulue, on enregistre un pointeur (ptr) vers tel machine

vérification de la syntaxe

named-checkzone adehu.com /etc/bind/adehu.com
named-checkzone adehu.com.inverse /etc/bind/adehu.com.inverse

redémarrage du service bind9 pour prendre en compte les modifications

systemctl restart bind9
Mettez dans le /etc/resolv.conf de la machine host1 l’ip du serveur bind1 pour l’avoir en tant que serveur dns
nano /etc/resolv.conf
1
nameserver 192.168.122.3

vérification de l’installation

tous les tests en dessous fonctionnent

# pour tester un domaine: dig domain.tld
dig adehu.com

# connaitre les serveurs dns gérant un domaine: dig NS domain.tld
dig NS adehu.com

# résoudre un nom: dig sub-domain.domain.tld
dig bind1.adehu.com
dig bind2.adehu.com

# tester la zone inverse: nslookup ip-machine-a-joindre
# ou dig -x
nslookup 192.168.122.3
nslookup 192.168.122.4

cependant, je n’ai pas testé le sous-domaine guest.adehu.com car pas encore configuré sur le serveur bind2

deuxième serveur bind
#

je vais partager la gestion de la zone adehu.com au deuxième serveur dns r303-deb12-bind2, le serveur bind1 sera le serveur dns primaire (master) & bind2 le secondaire (secondary)

j’autorise alors le transfert de la zone adehu.com vers le serveur bind2 r303-deb12-bind2 par en renseignant son ip

Note sur r303-deb12-bind1
nano /etc/bind/named.conf
 1// This is the primary configuration file for the BIND DNS server named.
 2//
 3// Please read /usr/share/doc/bind9/README.Debian for information on the
 4// structure of BIND configuration files in Debian, *BEFORE* you customize
 5// this configuration file.
 6//
 7// If you are just adding zones, please do that in /etc/bind/named.conf.local
 8
 9include "/etc/bind/named.conf.options";
10include "/etc/bind/named.conf.local";
11include "/etc/bind/named.conf.default-zones";
12
13zone "adehu.com" IN {
14  type master;
15  file "/etc/bind/adehu.com";
16  allow-transfer { 192.168.122.4; };
17};
18
19zone "122.168.192.in-addr.arpa" {
20  type master;
21  file "/etc/bind/adehu.com.inverse";
22  allow-transfer { 192.168.122.4; };
23};

redémarrage du service bind9

systemctl restart bind9

de l’autre côté, je dois informer au serveur bind2 qu’il a cette zone, avec r303-deb12-bind1 en serveur dns maitre

side note: si une modification est faite sur la zone sur le serveur bind1, elle sera répliquée sur le serveur bind2

j’ajoute aussi le sous domaine qu’il lui a été attribué (guest.adehu.com) -> délégation de zone, où il sera le dns primaire

Note sur r303-deb12-bind2
nano /etc/bind/named.conf
 1// This is the primary configuration file for the BIND DNS server named.
 2//
 3// Please read /usr/share/doc/bind9/README.Debian for information on the
 4// structure of BIND configuration files in Debian, *BEFORE* you customize
 5// this configuration file.
 6//
 7// If you are just adding zones, please do that in /etc/bind/named.conf.local
 8
 9include "/etc/bind/named.conf.options";
10include "/etc/bind/named.conf.local";
11include "/etc/bind/named.conf.default-zones";
12
13zone "adehu.com" IN {
14  type slave;
15  file "/etc/bind/adehu.com";
16  masters { 192.168.122.3; };
17};
18
19zone "122.168.192.in-addr.arpa" {
20  type slave;
21  file "/etc/bind/adehu.com.inverse";
22  masters { 192.168.122.3; };
23
24zone "guest.adehu.com" IN {
25  type master;
26  file "/etc/bind/guest.adehu.com";
27};

on lui renseigne les zones

à commencer par adehu.com

nano /etc/bind/adehu.com

même configuration qud bind1

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
$TTL 86400
$ORIGIN adehu.com.

@ IN SOA bind1.adehu.com. admin.adehu.com. (
2023092702 ; serial
21600 ; refresh
10800 ; retry
43200 ; expire
10800 ) ; minimum

@ IN NS bind1.adehu.com.
@ IN NS bind2.adehu.com.
guest.adehu.com. IN NS bind2
bind1 IN A 192.168.122.3
bind2 IN A 192.168.122.4
srv-bind1 IN CNAME bind1
srv-bind2 IN CNAME bind2

y compris la zone inverse

nano /etc/bind/adehu.com.inverse

même configuration que bind1

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
$TTL 86400

@ IN SOA bind1.adehu.com. admin.adehu.com. (
2023092702& ; serial
21600 ; refresh
10800 ; retry
43200 ; expire
10800 ) ; minimum

@ IN NS bind1.
@ IN NS bind2.
11 IN PTR bind1
12 IN PTR bind2

vu qu’un sous-domaine a été délégué, il faut définir sa zone

nano /etc/bind/guest.adehu.com
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
$TTL 86400
$ORIGIN guest.adehu.com.

@ IN SOA guest.adehu.com. guest.adehu.com. (
2023092702 ; serial
21600 ; refresh
10800 ; retry
43200 ; expire
10800 ) ; minimum

@ IN NS bind2.guest.adehu.com.
adehu.com. IN NS bind1.adehu.com.
adehu.com. IN NS bind2.adehu.com.
bind1.adehu.com. IN A 192.168.122.3
bind2.adehu.com. IN A 192.168.122.4
srv-bind2 IN CNAME bind2

application des modifications

named-checkzone adehu.com /etc/bind/adehu.com
named-checkzone adehu.com.inverse /etc/bind/adehu.com.inverse
systemctl restart bind9

pour tester le serveur bind2 depuis la machine host1

nslookup adehu.com 192.168.122.4
nslookup guest.adehu.com 192.168.122.4