Configurer un serveur DNS sur une raspberry pi
Publié le : 5 novembre 2019 | Mis à jour le : 27 juin 2023Possédant 4 raspberry et 3 mini-pc sur lesquels je fais tourner 2 clusters kubernetes, j’ai eu besoin d’installer un serveur DNS sur un des rpi."
Installation de BIND9 sur raspbian
Dans un premier installons le serveur DNS bind9 :
sudo apt install -y bind9 bind9utils bind9-doc dnsutils
Configuration du serveur BIND
Editons le fichier named.conf.local
sudo vi /etc/bind/named.conf.local
Remplacer les lignes existantes par ces lignes en modifiant celles indiquées :
//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "example.com" { # changer de domaine
type master;
file "/var/cache/bind/example.com.zone"; # zone file path
};
zone "1.168.192.in-addr.arpa" { # Changer de plage d'adresse si besoin
type master;
file "/var/cache/bind/rev-example.com.zone";
};
De la même manière sur le fichier named.conf.options
sudo vi /etc/bind/named.conf.options
Remplacer les lignes existantes par ces lignes en modifiant celles indiquées :
cl "allowed" {
192.168.1.0/24; # changer de plage d'adresse si besoin
};
options {
directory "/var/cache/bind";
listen-on port 53 { 127.0.0.1; 192.168.1.44; }; # Changer de serveur DNS
allow-query { localhost; 192.168.1.0/24; }; # changer de plage d'adresse si besoin
allow-recursion { 192.168.1.44; 192.168.1.0/24; }; # changer de plage d'adresse si besoin
recursion yes;
dnssec-enable yes;
dnssec-validation auto;
auth-nxdomain no;
};
Maintenant éditons les 2 fichiers de zone :
sudo vi /var/cache/bind/example.com.zone
Collez-y ce contenu en changeant le nom fr domaine et les plages d’adresses :
$TTL 86400
$ORIGIN example.com.
@ IN SOA rpi1.example.com. root.example.com. (
2019061401 ; serial
7200 ; refresh after 2 hours
3600 ; retry after 1 hour
604800 ; expire after 1 week
86400 ) ; minimum TTL of 1 day
;
; Primary Nameserver
example.com. IN NS rpi1.example.com.
;
; Define A records (forward lookups)
rpi1 IN A 192.168.1.44
rpi2 IN A 192.168.1.45
rpi3 IN A 192.168.1.46
*.example.com IN A 192.168.1.42
A la dernière ligne est indiqué un asterisk qui pointe sur le reverse proxy traefik contenu dans mon cluster kubernetes k3s.
Il reste juste à éditer le fichier de reverse :
sudo vi /var/cache/bind/rev-example.com.zone
Collez-y ce contenu en changeant le nom fr domaine et les plages d’adresses :
$TTL 86400
@ IN SOA rpi1.example.com. root.example.com. (
2019061401 ; serial
7200 ; refresh after 2 hours
3600 ; retry after 1 hour
604800 ; expire after 1 week
86400 ) ; minimum TTL of 1 day
;
; Primary nameserver
@ IN NS rpi1.example.com.
44 IN PTR rpi1.example.com.
; PTR records for reverse lookup
45 IN PTR rpi2.example.com
46 IN PTR rpi3.example.com
Pour contrôler vos fichiers de configuration vous pouvez utiliser les outils named-checkconf et named-checkzone
named-checkconf /etc/named.conf
named-checkzone example.com /var/cache/bind/example.com.zone
named-checkzone example.com /var/cache/bind/rev-example.com.zone
Maintenant activons et démarrons bind9:
sudo systemctl enable bind9
sudo systemctl start bind9
Testons notre serveur avec nslookup:
nslookup
> server 192.168.1.44
Default server: 192.168.1.44
Address: 192.168.1.44#53
> rpi1
Server: 192.168.1.44
Address: 192.168.1.44#53
Name: rpi1.exapmle.com
Address: 192.168.1.44
> rpi2
Server: 192.168.1.44
Address: 192.168.1.44#53
Name: rpi2.example.com
Address: 192.168.1.45
Configuration des clients (Ubuntu 18.04 et Raspbian)
Ubuntu
Ubuntu utilise netplan ou network-manager pour configurer le fichier resolv.conf. Dans le cas où il s’agit de netplan :
sudo vi /etc/netplan/
This file is generated from information provided by
the datasource. Changes to it will not persist across an instance.
To disable cloud-init's network configuration capabilities, write a file
/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
network: {config: disabled}
network:
version: 2
ethernets:
enp1s0: # modifier le nom de votre carte réseau
dhcp4: true
dhcp4-overrides:
use-dns: no
nameservers:
search: [example.com] # modifier le nom de votre domaine
addresses: [192.168.1.44,8.8.8.8,8.8.4.4]
Appliquons les modifications
sudo netplan apply
Faites un test avec un ping et le nom d’une des machines configurer dans votre serveur DNS.
Raspbian
Sur raspbian il faut installer resolvconf
sudo apt install resolvconf
Il faut editer les fichiers présent dans le répertoire /etc/resolvconf/resolv.conf.d/ :
cd /etc/resolvconf/resolv.conf.d/
ls
base head original\ tail
Personnellement j’ai mis ceci dans le fichier base et viré ce qui était présent dans les fichiers head et tail:
nameserver 192.168.1.44
domain bob.local
search bob.local
Appliquons les modifications :
sudo resolvconf -u
Vous pouvez tester vos modifs avec un ping.