Un petit mémo pour installer et configurer simplement un serveur DNS Unbound, pour éviter d’utiliser ceux des FAI ou autres DNS menteurs.
Dans ce mini tutoriel, je vais installer Unbound sur mon VPS ou se trouve mon serveur OpenVPN, pour que ce dernier configure ma machine client avec ce serveur DNS.
Pour ceux qui n’ont pas de VPS, j’avais fais un article qui explique comment installer Unbound sur son PC Ubuntu : https://memo-linux.com/ubuntu-serveur-dns-unbound/
Sinon, j’avais aussi écris un autre article avec DNSMasq et DNSCrypt, pour chiffrer les requêtes DNS : https://memo-linux.com/dnscrypt-dnsmasq-sur-archlinuxmanjaro-chiffrez-toutes-les-requetes-dns/
Installer Unbound sur Debian Jessie
Ici le serveur DNS qui sera installé aura pour fonction d’être récursif et faire du cache. Pour faire simple, si le serveur n’arrive pas à résoudre le nom FQDN, il va demander aux serveurs racines et compléter son cache, sinon le serveur répond à partir de son cache.
Attention, il faut absolument sécuriser le serveur pour qu’il ne soit pas ouvert à tout Internet !
- Installer le paquet Unbound :
apt install unbound
cd /var/lib/unbound/ && wget ftp://ftp.internic.net/domain/named.cache
mv named.cache root.hints && chown unbound:unbound root.hints
Fichier de configuration du serveur DNS Unbound
Mon fichier de configuration :
server: statistics-interval: 0 extended-statistics: yes statistics-cumulative: yes verbosity: 3 interface: 127.0.0.1 interface: 10.8.0.1 ## la passerelle VPN port: 53 do-ip4: yes do-ip6: no do-udp: yes do-tcp: no access-control: 127.0.0.0/8 allow ## j'autorise mon serveur access-control: 10.8.0.0/24 allow ## j'autorise le réseau établie avec mon OpenVPN access-control: 0.0.0.0/0 refuse ## j'interdis tout le reste de l'Internet ! auto-trust-anchor-file: "/var/lib/unbound/root.key" root-hints: "/var/lib/unbound/root.hints" hide-identity: yes hide-version: yes harden-glue: yes harden-dnssec-stripped: yes use-caps-for-id: yes cache-min-ttl: 3600 cache-max-ttl: 86400 prefetch: yes num-threads: 6 msg-cache-slabs: 16 rrset-cache-slabs: 16 infra-cache-slabs: 16 key-cache-slabs: 16 rrset-cache-size: 256m msg-cache-size: 128m so-rcvbuf: 1m unwanted-reply-threshold: 10000 do-not-query-localhost: yes val-clean-additional: yes ##je bloque cetaines pubs local-zone: "doubleclick.net" redirect local-data: "doubleclick.net A 127.0.0.1" local-zone: "googlesyndication.com" redirect local-data: "googlesyndication.com A 127.0.0.1" local-zone: "googleadservices.com" redirect local-data: "googleadservices.com A 127.0.0.1" local-zone: "google-analytics.com" redirect local-data: "google-analytics.com A 127.0.0.1" local-zone: "ads.youtube.com" redirect local-data: "ads.youtube.com A 127.0.0.1" local-zone: "adserver.yahoo.com" redirect local-data: "adserver.yahoo.com A 127.0.0.1" local-zone: "ask.com" redirect local-data: "ask.com A 127.0.0.1" use-syslog: yes logfile: /var/log/unbound.log harden-dnssec-stripped: yes cache-min-ttl: 3600 cache-max-ttl: 86400 prefetch: yes prefetch-key: yes
Modifier le fichier /etc/resolv.conf
:
nano /etc/resolv.conf
nameserver 127.0.0.1
Tests du serveur Unbound
Relmance du service Unbound
:
systemctl restart unbound
Vérifier le status :
systemctl status unbound
Vérifier la résolution de nom à partir du serveur :
drill @127.0.0.1 memo-linux.com
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 16398 ;; flags: qr rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;; memo-linux.com. IN A ;; ANSWER SECTION: memo-linux.com. 3600 IN A 46.105.44.210 ;; AUTHORITY SECTION: ;; ADDITIONAL SECTION: ;; Query time: 53 msec ;; SERVER: 127.0.0.1 ;; WHEN: Mon Mar 14 11:22:34 2016 ;; MSG SIZE rcvd: 48
La résolution fonctionne et le temps de réponse est de 53 millisecondes, si on relance la commande le temps de réponse passe à 0 milliseconde.
Test de résolution de nom à partir un poste client connecté au VPN :
drill @10.8.0.1 memo-linux.com
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 3390 ;; flags: qr rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;; memo-linux.com. IN A ;; ANSWER SECTION: memo-linux.com. 3561 IN A 46.105.44.210 ;; AUTHORITY SECTION: ;; ADDITIONAL SECTION: ;; Query time: 55 msec ;; SERVER: 10.8.0.1 ;; WHEN: Mon Mar 14 12:26:50 2016 ;; MSG SIZE rcvd: 48
La résolution de nom se fait bien à partir du serveur DNS 10.8.0.1 , donc ça fonctionne parfaitement et à moi l’accès à l’Internet sans censure ! :cool:
Ressource
Je me suis aidé de cet excellent tutoriel : http://homeserver-diy.net/wiki/index.php?title=Installer_et_configurer_son_serveur_DNS_connect%C3%A9_aux_serveurs_root_avec_Unbound
Bonjour,
Petite erreur je crois dans la commande d’installation du serveur unbound (je n’ai pas vérifié). Je pense que vous voulez dire:
apt-get install unbound
ou
aptitude install unbound
Cdt,
non pas d’erreur, c’est bien la commande apt :-)
Hello,
Oui tu as raison. C’est juste que je n’utilise plus apt/aptitude depuis longtemps et je n’avais pas connaissance de l’évolution de la commande. Par contre je confirme, il y a bien une coquille « apt install unbond ». Il manque un « U » à unbound.
Sinon, merci à toi, ton site est super, pleins de mémos intéressants, les derniers articles Centreon sont très utiles. C’est parfait pour moi qui vais devoir me remettre à Debian. On devrait tous faire comme toi et noter/partager nos astuces.
coquille corrigée !
et merci à toi pour ton commentaire, cela m’encourage d’avantage :-)
Si je fais [sudo service unbound stop] j’ai quand-même accès au net et les dns sont bien ceux du FAI et si je fais [sudo service unbound start] c’est bien le test dns localhost
C’est normal si Unbound est stoppé d’avoir quand-même accès à internet ?
@Pedro : c’est ton client DHCP qui te fournis les DNS de ton fournisseur, donc oui c’est normal…
Bonsoir,
J’ai pu faire l’installation identique, sauf pour unbound.conf où j’ai mis :
access-control: 192.168.1.0/24 allow
#access-control: 127.0.0.0/8 allow ## j’autorise mon serveur
et j’ai laissé le resolv.conf avec l’adresse 192.168.1.20 qui est l’adresse de mon raspberry.
1- je n’arrive pas à exécuter la commande drill (commande introuvable)
2- je n’arrive pas à résoudre les DNS depuis mon navigateur
Bonjour a6tole,
la commande drill fait parti du paquet ldnsutils
Merci fred !
J’ai pu installer la commande, cependant ça ne fonctionne toujours pas :
# unbound-checkconf /etc/unbound/unbound.conf
[1472310591] unbound-checkconf[2061:0] fatal error: config file /etc/unbound/unbound.conf is not inside chroot /usr/local/etc/unbound
Quelqu’un a-t-il une idée ?
Merci pour cette article.
il y a cependant une petite coquille sur la dernière ligne de la conf
prefetch-key: yes
et non
prefetch-keys: yes
Bise
merci m’iseur, c’est corrigé :-)
Bon tuto ! Cependant, une explication approfondie du fichier de configuration aurait été super !
Bonjour,
Merci pour cet excellent tuto.
J’ai un petit soucis ceci dit :
Tout fonctionne avec mon VPN, mais si je ne veux pas l’utiliser, impossible de naviguer sur internet avec le DNS de mon serveur !
j’ai bien mis :
interface: 127.0.0.1
interface : 10.x.z #ip vpn
interface: 37.x.y.z #ip du serveur
J’ai dû oublier quelque chose quelque part, mais quoi ?
Merci
Bonjour Jérôme,
tu veux te service de ton serveur DNS à partir d’une machine hors VPN ? il te faut connaître ton adresse IP public et l’ajouter dans access-control
Bonjour,
Merci de ta réponse et désolé du retard.
L’ajout de mon adresse ip a bien fonctionner.