{"id":10120,"date":"2020-11-23T21:21:00","date_gmt":"2020-11-23T19:21:00","guid":{"rendered":"https:\/\/www.roumazeilles.net\/news\/fr\/wordpress\/?p=10120"},"modified":"2020-11-22T20:39:57","modified_gmt":"2020-11-22T18:39:57","slug":"raspberry-pi-comme-serveur-local-dns-dhcp","status":"publish","type":"post","link":"https:\/\/www.roumazeilles.net\/news\/fr\/wordpress\/2020\/11\/23\/raspberry-pi-comme-serveur-local-dns-dhcp\/","title":{"rendered":"Raspberry Pi comme serveur local DNS\/DHCP"},"content":{"rendered":"\n<p>Pour un r\u00e9seau local de petite entreprise ou d&rsquo;une famille active sur Internet, il est possible de faire int\u00e9gralement confiance \u00e0 un fournisseur d&rsquo;Acc\u00e8s Internet (FAI) qui va syst\u00e9matiquement offrir les services de base d&rsquo;un r\u00e9seau local sur sa box Internet (fibre ou ADSL). Mais si vous souhaitez (comme moi) disposer de plus de flexibilit\u00e9, il sera utile de mettre en place ses propres services.<\/p>\n\n\n\n<p>Pour ma part, j&rsquo;ai not\u00e9 que l&rsquo;apparition sur le march\u00e9 de nano-ordinateurs comme les box Android ou les Raspberry Pi permet d&rsquo;envisager de mettre en oeuvre des services qui semblaient horriblement chers et difficiles \u00e0 d\u00e9ployer auparavant.<\/p>\n\n\n\n<p>J&rsquo;ai donc d\u00e9cid\u00e9 d&rsquo;acheter un Raspberry Pi 3 B+ qui offre une solution  qui ne co\u00fbte pas cher,  qui ne consomme pas beaucoup d&rsquo;\u00e9nergie, qui peut rester branch\u00e9e en permanence, et qui est programmable int\u00e9gralement. Je voulais d\u00e9ployer les services de base d&rsquo;un r\u00e9seau tout en me donnant la ma\u00eetrise la plus compl\u00e8te possible.<\/p>\n\n\n\n<p>Le minimum \u00e0 assurer :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Un serveur <strong>DHCP <\/strong>(pour attribuer les adresses IP en local sur le r\u00e9seau avec la possibilit\u00e9 de fixer des adresses statiques, pour une meilleure gestion)<\/li><li>Un serveur <strong>DNS <\/strong>qui assure \u00e0 la fois<ul><li>le cache des recherches DNS (pour acc\u00e9l\u00e9rer l&rsquo;ensemble des op\u00e9rations Internet des utilisateurs)<\/li><li>la fourniture de noms pour le r\u00e9seau local<\/li><li>des r\u00e9serves pour permettre le futur filtrage des recherches DNS (je ne m&rsquo;int\u00e9resse gu\u00e8re au filtrage des contenus adultes, mais je me pr\u00e9occupe sensiblement de bloquer les phishers, m\u00eame si les deux probl\u00e8mes sont techniquement identiques)<\/li><\/ul><\/li><\/ul>\n\n\n\n<p>Dans le futur, il faudra aussi assurer des services compl\u00e9mentaires (pas \u00e9tudi\u00e9s ici) comme :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Serveur de base temps NTP<\/li><li>Serveur de noms WINS pour Windows<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Comparaison<\/h2>\n\n\n\n<p>De fait, j&rsquo;ai not\u00e9 que deux serveurs semblaient aptes \u00e0 g\u00e9rer simultan\u00e9ment le DHCP et le DNS : <a href=\"https:\/\/nlnetlabs.nl\/projects\/unbound\/about\/\">Unbound<\/a> et <a href=\"https:\/\/wiki.debian.org\/dnsmasq\">dsnmasq<\/a>.<\/p>\n\n\n\n<p>Unbound:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Serveur l\u00e9ger<\/li><li>Support DNSSEC<\/li><li>plut\u00f4t tourn\u00e9 vers la s\u00e9curit\u00e9<\/li><li>Pas de serveur DNS authoritative (mais capable de g\u00e9rer un domaine local)<\/li><\/ul>\n\n\n\n<p>dnsmasq:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li> Serveur l\u00e9ger<\/li><li>Support DNSSEC<\/li><li>DHCP et DNS sont integr\u00e9s dans un seul serveur<\/li><li>Capable d&rsquo;exploiter \/etc\/hosts pour alimenter le serveur DNS<\/li><li>Pas de serveur r\u00e9cursif DNS (seulement forward vers un serveur r\u00e9cursif ou authoritative comme 8.8.8.8 ou 9.9.9.9 ou le serveur DNS de votre propre FAI)<\/li><li>Pas de serveur DNS authoritative (mais capable de g\u00e9rer un domaine local) <\/li><\/ul>\n\n\n\n<p>Cela m&rsquo;a men\u00e9 \u00e0 exploiter dnsmasq, principalement \u00e0 cause de la possibilit\u00e9 de g\u00e9rer simultan\u00e9ment DNS et DHCP.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D\u00e9couvertes int\u00e9ressantes<\/h2>\n\n\n\n<p>Premi\u00e8re information vite d\u00e9couverte : les serveurs NAS Synology sont tout \u00e0 fait incompatibles avec le filtrage de DNS de CleanBrowsing. Celui-ci compte synology.me (service n\u00e9cessaire pour le DDNS de Synology) dans les domaines \u00e0 risque. De nombreux services du NAS cessent imm\u00e9diatement de fonctionner.<\/p>\n\n\n\n<p>Je n&rsquo;ai pas v\u00e9rifi\u00e9 mais il est probable que de nombreux autres services DDNS (Dynamic DNS) soient black-list\u00e9s pour les m\u00eames raisons : devant le nombre de petits serveurs Synology (ou autres) mal configur\u00e9s, ces DDNS renvoient sans doute vers une forte proportion de domaines qui ont \u00e9t\u00e9 pris en otage par les hackers.<\/p>\n\n\n\n<p>Il faut donc pouvoir g\u00e9rer cela plus finement si vous avez vous-m\u00eame votre propre NAS Synology (et sans doute d&rsquo;autres marques).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Observations<\/h2>\n\n\n\n<p>Apr\u00e8s quelques mois d&rsquo;utilisation de dnsmasq sur Rapsberry Pi, il est temps de faire quelques commentaires pour partager cette exp\u00e9rience.<\/p>\n\n\n\n<p>Tout d&rsquo;abord, cela a tr\u00e8s bien fonctionn\u00e9. J&rsquo;ai bien eu un cas o\u00f9 le serveur DHCP semble s&rsquo;\u00eatre arr\u00eat\u00e9 sans autre forme de proc\u00e8s. J&rsquo;ai essay\u00e9 de comprendre la cause mais il s&rsquo;est r\u00e9v\u00e9l\u00e9 plus simple de rebooter le serveur (bouton On-Off) pour retrouver le service. Evidemment, quelques dizaines de minutes de recherche m&rsquo;auront valu quelques regards inquiets de l&rsquo;autre utilisatrice du r\u00e9seau&#8230;<\/p>\n\n\n\n<p>Les filtres DNS mis en place pour limiter l&rsquo;acc\u00e8s \u00e0 des domaines particuli\u00e8rement dangereux fonctionnent bien, mais il est exact qu&rsquo;il ne semble pas y avoir eu de d\u00e9clenchement intempestif (ce n&rsquo;est pas la seule barri\u00e8re que j&rsquo;utilise contre les sites malveillants). Le script de cr\u00e9ation du filtre est ci-dessous :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#!\/bin\/sh\n#Dated 2020-11-10 1.0 Addition of --quiet to wget (to reduce clutter to \/var\/mail\/pi)\n#                     *** STABLE RELEASE ***\n\ncd \/var\/lib\/work\n\n#Get anti-phishing filter lists from Internet\nwget -q -O .\/isc-low.txt 'https:\/\/isc.sans.edu\/feeds\/suspiciousdomains_Low.txt'\nwget -q -O .\/isc-med.txt 'https:\/\/isc.sans.edu\/feeds\/suspiciousdomains_Medium.txt'\nwget -q -O .\/isc-hig.txt 'https:\/\/isc.sans.edu\/feeds\/suspiciousdomains_High.txt'\nwget -q -O .\/yoyo.dnsmasq.txt 'https:\/\/pgl.yoyo.org\/adservers\/serverlist.php?hostformat=dnsmasq&amp;hostformat=nohtml&amp;showintro=0&amp;mimetype=plaintext'\n#Remodel the lists into DNSmasq filters\ncatcherIP='192.168.1.250'\ninputfile=\".\/isc-med.txt\"\ntmpfile=\"\/tmp\/.adlist.$$\"\ntmpconffile=\"\/tmp\/.dnsmasq.conf.$$\"\nconfigfile=\"\/etc\/dnsmasq.filter.conf\"\nconfigheader=\"\/etc\/dnsmasq.filter.header\"\n\n#Start with putting our own header\n    [ -f \"$configheader\" ] &amp;&amp; cat $configheader &gt;&gt; $tmpconffile\n#check if TmpFile could be init'd with header\nif [ ! -s $tmpconffile ]\nthen\n    echo \"temp fil '$tmpconffile' could not be found or is empty; quitting\"\n    exit\nfi\n#Remove list headers\ncat $inputfile | grep -v \"^#\" | grep -v \"^Site$\" &gt; $tmpfile\n#Buid list to DNSmasq format, and add it to the file\nsed \"s\/(.*)\/address=\\\/\\1\\\/${catcherIP}\/\" $tmpfile &gt;&gt; $tmpconffile\n#Move the final list to destination\nsudo cp $tmpconffile $configfile<\/pre>\n\n\n\n<p>Un des avantages de ce serveur est sa rapidit\u00e9. Je pouvais m&rsquo;en inqui\u00e9ter avant de conna\u00eetre le Raspberry Pi, mais \u00e9tant donn\u00e9 la faible charge de travail sur ce serveur (malgr\u00e9 un petit serveur HTTP, des connexions \u00e0 distance et quelques scripts locaux) et la bonne puissance de la CPU, tout se passe tr\u00e8s bien m\u00eame devant la dizaine de clients qui font appel au serveur DNS en mode \u00e0 peu pr\u00e8s continu (les iPhones sont particuli\u00e8rement exigeants).<\/p>\n\n\n\n<p>dnsmasq est parfaitement capable de g\u00e9rer le DHCP IPv6, et le DNS IPv6 correspondant. La documentation \u00e0 ce sujet est faible (c&rsquo;est le moins qu&rsquo;on puisse en dire), mais \u00e7a fonctionne bien et j&rsquo;ai pu assurer un fonctionnement fiable dans ce domaine \u00e9galement (temporairement, le Raspberry Pi m&rsquo;a m\u00eame servi de proxy pour tout le trafic IPv6 sans faiblir ou \u00eatre remarqu\u00e9 ; l\u00e0, j&rsquo;ai \u00e9t\u00e9 surpris par sa puissance).<\/p>\n\n\n\n<p>Apr\u00e8s une installation initiale qui fonctionnait avec une allocation dynamique des adresses IP, j&rsquo;ai pass\u00e9 le serveur DHCP en configuration presqu&rsquo;exclusivement statique (c&rsquo;est un choix personnel qui me permet de reconna\u00eetre plus facilement le contenu de mon r\u00e9seau). L\u00e0 aussi aucune difficult\u00e9, aussi bien en IPv4 qu&rsquo;en IPv6.<\/p>\n\n\n\n<p>Conclusion : totalement positive.<\/p>\n\n\n\n<p>Dans le futur, je peux \u00eatre tent\u00e9 de d\u00e9ployer des serveurs DHCP et DNS plus puissants (peut-\u00eatre ou peut-\u00eatre pas) et surtout un espion de r\u00e9seau genre SNORT ou SURICATA. Mais c&rsquo;est une autre histoire. Et peut-\u00eatre que dans ce dernier cas, je serai tent\u00e9 par un calculateur avec beaucoup plus de puissance de calcul (j&rsquo;ai un Avenger96 \u00e0 l&rsquo;essai, mais il ne me semble pas id\u00e9alement support\u00e9 en mati\u00e8re de soft).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Quelques autres liens int\u00e9ressants<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>D&rsquo;autres solutions pour un serveur DHCP :<ul><li><a href=\"https:\/\/www.linux.com\/tutorials\/dnsmasq-easy-lan-name-services\/\">Installation de DNSmasq<\/a> (DHCP seul)<\/li><li>Dragon : <a href=\"https:\/\/blogging.dragon.org.uk\/howto-setup-dnsmasq-as-dns-dhcp\/\">installation de DNSmasq<\/a> (DHCP et DNS)<\/li><li>Instructables : <a href=\"https:\/\/www.instructables.com\/id\/Running-your-own-DNSDHCP-Server-the-Easy-way\/\">installation de DNSmasq<\/a> (DHCP et DNS) <\/li><li><a href=\"https:\/\/wiki.debian.org\/DHCP_Server\">Serveur ISC-DHCP sur Debian<\/a><\/li><li><a href=\"https:\/\/www.tecmint.com\/install-dhcp-server-in-ubuntu-debian\/\">Serveur ISC-DHCP sur Ubuntu<\/a><\/li><li><a href=\"https:\/\/www.isc.org\/dhcp-tools\/\">Outils pr\u00e9vus pour fonctionner avec ISC-DHCP<\/a><\/li><li><a href=\"http:\/\/www.raspberry-pi-geek.com\/Archive\/2014\/03\/Setting-up-Raspberry-Pi-as-a-DHCP-NTP-and-DNS-server\">Guide rapide pour l&rsquo;installation de serveurs DHCP, DNS et NTP sur Raspberry Pi<\/a> <\/li><\/ul><\/li><li>Des informations sur l&rsquo;installation d&rsquo;un serveur DNS :<ul><li><a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-configure-bind-as-a-private-network-dns-server-on-debian-9\">Serveur DNS BIND en local sur Debian 9<\/a><\/li><li><a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-configure-bind-as-an-authoritative-only-dns-server-on-ubuntu-14-04\">Serveur DNS BIND authoritative sur Ubuntu<\/a><\/li><li><a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-configure-bind-as-a-caching-or-forwarding-dns-server-on-ubuntu-14-04\">Serveur DNS BIND comme \u00ab\u00a0caching\u00a0\u00bb ou \u00ab\u00a0forward-only\u00a0\u00bb sur Ubuntu<\/a><\/li><\/ul><\/li><li>Filtres DNS :<ul><li><a href=\"https:\/\/www.gmass.co\/blog\/domain-blacklists-comprehensive-guide\/\">LE guide sur le nettoyage du DNS \u00e0 partir de listes du domaine public<\/a><\/li><\/ul><\/li><li>La mise en oeuvre sur un NAS ou un routeur Synology :<ul><li><a href=\"https:\/\/www.synology.com\/fr-fr\/knowledgebase\/DSM\/tutorial\/Network\/How_to_set_up_your_domain_with_Synology_DNS_Server\">Configuration de serveur DNS sur DSM<\/a><\/li><\/ul><\/li><li>Comparaisons de serveurs :<ul><li><a href=\"https:\/\/computingforgeeks.com\/bind-vs-dnsmasq-vs-powerdns-vs-unbound\/\">BIND vs. dnsmasq vs PowerDNS vs Unbound<\/a><\/li><\/ul><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Pour un r\u00e9seau local de petite entreprise ou d&rsquo;une famille active sur Internet, il est possible de faire int\u00e9gralement confiance \u00e0 un fournisseur d&rsquo;Acc\u00e8s Internet (FAI) qui va syst\u00e9matiquement offrir les services de base d&rsquo;un r\u00e9seau local sur sa box Internet (fibre ou ADSL). Mais si vous souhaitez (comme moi) disposer de plus de flexibilit\u00e9, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":11071,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[93,9,13],"tags":[1951,1208,1952,1956,269,1708,1861],"class_list":["post-10120","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ipv6","category-linux","category-routeurs-reseaux","tag-dhcp","tag-dns","tag-dnsmasq","tag-filtre","tag-ipv4","tag-ipv6","tag-raspberry-pi"],"_links":{"self":[{"href":"https:\/\/www.roumazeilles.net\/news\/fr\/wordpress\/wp-json\/wp\/v2\/posts\/10120","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.roumazeilles.net\/news\/fr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.roumazeilles.net\/news\/fr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.roumazeilles.net\/news\/fr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.roumazeilles.net\/news\/fr\/wordpress\/wp-json\/wp\/v2\/comments?post=10120"}],"version-history":[{"count":0,"href":"https:\/\/www.roumazeilles.net\/news\/fr\/wordpress\/wp-json\/wp\/v2\/posts\/10120\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.roumazeilles.net\/news\/fr\/wordpress\/wp-json\/wp\/v2\/media\/11071"}],"wp:attachment":[{"href":"https:\/\/www.roumazeilles.net\/news\/fr\/wordpress\/wp-json\/wp\/v2\/media?parent=10120"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.roumazeilles.net\/news\/fr\/wordpress\/wp-json\/wp\/v2\/categories?post=10120"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.roumazeilles.net\/news\/fr\/wordpress\/wp-json\/wp\/v2\/tags?post=10120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}