Installer et configurer un serveur DNS sous Gentoo / Calculate Linux
Table des matières
BIND (Berkeley Internet Name Domain) est le serveur DNS le plus utilisé sur Internet, spécialement sur les systèmes de type Unix.
Dans le tuto, j'utiliserai le nom de domainelinuxtricks.lan
Pour installer le service DNS sur notre serveur, installer le paquet net-dns/bind.
L'installer à l'aide de la commande
La sortie produite est de cet ordre :
Ne voulant pas le support LDAP :
echo "net-dns/bind -ldap" >> /etc/portage/package.use/custom
On peut installer aussi les utilitaires de tests de serveur DNS (nslookup etc...)
L’installation nous a créé un fichier /etc/bind/named.conf .
Vérifier que les variables listen pour autoriser les autres ordinateurs du réseau à contacter le serveur DNS (indiquer any;) :
L'ACL "trusted" correspond aux ordinateurs qui pourront faire des requêtes à notre serveur DNS. Mettre un (ou des) sous réseau ou directement any pour tous.
On souhaite que notre DNS aille chercher ce qu'il ne sait pas résoudre vers les serveurs de Google.
On peut aussi activer le logging (la journalisation), c'est utile si on a des problèmes :
Ensuite, on complète la configuration de bind (toujours dans /etc/bind/named.conf) en remplaçant les lignes //zone "YOUR-DOMAIN.TLD" { et suivantes par la configuration de notre domaine (ci-dessous, un exemple) :
On créé le fichier /var/bind/pri/linuxtricks.lan.zone (dans mon exemple), mais plus généralement, celui qu'on a déclaré dans le /etc/bind/named.conf (ci-dessous, un exemple) :
On modifie le fichier /etc/resolv.conf du serveur pour lui forcer à utiliser le DNS installé.
Maintenant que notre DNS est installé et configuré, on lance le service :
Il nous reste plus qu'à ajouter le service named au démarrage du serveur :
En lançant mon service après une mise à jour, j'ai eu cette erreur :
En fait, c'est un problème de droit sur le fichier named.conf qui se pose
Il suffit de remettre les bonnes permissions :
Ensuite tout démarre correctement
Présentation
BIND (Berkeley Internet Name Domain) est le serveur DNS le plus utilisé sur Internet, spécialement sur les systèmes de type Unix.
Installation
Dans le tuto, j'utiliserai le nom de domainelinuxtricks.lan
Pour installer le service DNS sur notre serveur, installer le paquet net-dns/bind.
L'installer à l'aide de la commande
Code BASH :
emerge -avq bind
La sortie produite est de cet ordre :
Code BASH :
[ebuild N ] net-dns/bind-9.10.1_p1 USE="berkdb caps dlz ipv6 ssl threads -doc -filter-aaaa -fixed-rrset -geoip -gost -gssapi -idn -json -ldap -mysql -nslint -odbc -postgres -python -rpz -seccomp (-selinux) -static-libs -urandom -xml" PYTHON_TARGETS="python2_7 -python3_3 -python3_4" Would you like to merge these packages? [Yes/No]
Ne voulant pas le support LDAP :
echo "net-dns/bind -ldap" >> /etc/portage/package.use/custom
On peut installer aussi les utilitaires de tests de serveur DNS (nslookup etc...)
Code BASH :
emerge -avq bind-tools
Configuration du DNS
Configuration générale
L’installation nous a créé un fichier /etc/bind/named.conf .
Vérifier que les variables listen pour autoriser les autres ordinateurs du réseau à contacter le serveur DNS (indiquer any;) :
Code TEXT :
listen-on-v6 { any; }; listen-on { any; };
L'ACL "trusted" correspond aux ordinateurs qui pourront faire des requêtes à notre serveur DNS. Mettre un (ou des) sous réseau ou directement any pour tous.
Code TEXT :
acl "trusted" { 127.0.0.0/8; 10.21.27.0/24; 192.168.216.0/24; };
Code TEXT :
acl "trusted" { any; };
On souhaite que notre DNS aille chercher ce qu'il ne sait pas résoudre vers les serveurs de Google.
Code TEXT :
forward first; forwarders { 8.8.8.8; // Google Open DNS 8.8.4.4; // Google Open DNS };
On peut aussi activer le logging (la journalisation), c'est utile si on a des problèmes :
Code TEXT :
logging { channel default_log { file "/var/log/named/named.log" versions 5 size 50M; print-time yes; print-severity yes; print-category yes; //severity debug; severity info; }; category default { default_log; }; category general { default_log; }; category update { default_log; }; category update-security { default_log; }; category security { default_log; }; };
Configuration de la zone Directe
Ensuite, on complète la configuration de bind (toujours dans /etc/bind/named.conf) en remplaçant les lignes //zone "YOUR-DOMAIN.TLD" { et suivantes par la configuration de notre domaine (ci-dessous, un exemple) :
Code TEXT :
zone "linuxtricks.lan" { type master; file "/var/bind/pri/linuxtricks.lan.zone"; allow-query { any; }; allow-transfer { xfer; }; };
On créé le fichier /var/bind/pri/linuxtricks.lan.zone (dans mon exemple), mais plus généralement, celui qu'on a déclaré dans le /etc/bind/named.conf (ci-dessous, un exemple) :
Code TEXT :
$TTL 1W @ IN SOA linuxtricks.lan. root.linuxtricks.lan. ( 2008122601 ; Serial 28800 ; Refresh 14400 ; Retry 604800 ; Expire - 1 week 86400 ) ; Minimum @ IN NS localhost. @ IN A 127.0.0.1 @ IN A 192.168.1.11 oxygen IN A 192.168.1.11 www IN A 192.168.1.15 routeur IN A 192.168.1.254 @ IN AAAA ::1
On modifie le fichier /etc/resolv.conf du serveur pour lui forcer à utiliser le DNS installé.
Code TEXT :
# Generated by net-scripts for interface eth0 search linuxtricks.lan nameserver 127.0.0.1
Lancement du service
Maintenant que notre DNS est installé et configuré, on lance le service :
Code BASH :
/etc/init.d/named start * Caching service dependencies ... Service 'donutsd' needs non existent service 'mta' [ ok ] * Starting named ... * Checking named configuration ... [ ok ]
Il nous reste plus qu'à ajouter le service named au démarrage du serveur :
Code BASH :
rc-update add named default
* service named added to runlevel default
Bugs rencontrés
named failed to start
En lançant mon service après une mise à jour, j'ai eu cette erreur :
Code BASH :
/etc/init.d/named start -v named | * Starting named ... named | * Checking named configuration ... [ ok ] named | * start-stop-daemon: fopen '/run/named/named.pid': No such file or directory named | * Detaching to start '/usr/sbin/named' ... named | * start-stop-daemon: failed to start '/usr/sbin/named' [ !! ] named | * ERROR: named failed to start
En fait, c'est un problème de droit sur le fichier named.conf qui se pose
Code BASH :
-rw-r----- 1 root root 3992 15 janv. 23:25 named.conf
Il suffit de remettre les bonnes permissions :
Code BASH :
cd /etc/bind chown named:root named.conf chmod 0600 named.conf
Ensuite tout démarre correctement
Code BASH :
/etc/init.d/named start -v named | * Starting named ... named | * Checking named configuration ... [ ok ] named | * start-stop-daemon: fopen '/run/named/named.pid': No such file or directory named | * Detaching to start '/usr/sbin/named' ...
Code BASH :
/etc/init.d/named status * status: started