Aller au contenu

Configurer un serveur DNS sur une raspberry pi

Possé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 :

Terminal window
sudo apt install -y bind9 bind9utils bind9-doc dnsutils

Configuration du serveur BIND

Editons le fichier named.conf.local

Terminal window
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

Terminal window
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 :

Terminal window
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 :

Terminal window
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

Terminal window
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:

Terminal window
sudo systemctl enable bind9
sudo systemctl start bind9

Testons notre serveur avec nslookup:

Terminal window
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 :

Terminal window
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

Terminal window
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

Terminal window
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 :

Terminal window
sudo resolvconf -u

Vous pouvez tester vos modifs avec un ping.