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 :
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 Nameserverexample.com. IN NS rpi1.example.com.;; Define A records (forward lookups)rpi1 IN A 192.168.1.44rpi2 IN A 192.168.1.45rpi3 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 lookup45 IN PTR rpi2.example.com46 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.confnamed-checkzone example.com /var/cache/bind/example.com.zonenamed-checkzone example.com /var/cache/bind/rev-example.com.zone
Maintenant activons et démarrons bind9:
sudo systemctl enable bind9sudo systemctl start bind9
Testons notre serveur avec nslookup:
nslookup> server 192.168.1.44Default server: 192.168.1.44Address: 192.168.1.44#53> rpi1Server: 192.168.1.44Address: 192.168.1.44#53
Name: rpi1.exapmle.comAddress: 192.168.1.44> rpi2Server: 192.168.1.44Address: 192.168.1.44#53
Name: rpi2.example.comAddress: 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/lsbase 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.44domain bob.localsearch bob.local
Appliquons les modifications :
sudo resolvconf -u
Vous pouvez tester vos modifs avec un ping.