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 unbond
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-keys: 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 !
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