Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
Prochaine révisionLes deux révisions suivantes
logiciel:internet:unbound:start1 [2021/04/03 11:17] – [Unbound : un serveur DNS local] adminlogiciel:internet:unbound:start [2021/04/03 11:31] – ↷ Nom de la page changé de logiciel:internet:unbound:start1 à logiciel:internet:unbound:start admin
Ligne 17: Ligne 17:
  
 ===== Pré-requis ===== ===== Pré-requis =====
 +
 +  * un réseau local.
 +  * et une connexion à Internet active pour les tests.
  
 ===== Installation ===== ===== Installation =====
 +
 +  * Sur la machine du serveur, installez les paquets **[[apt>unbound,dnsutils,ldnsutils]]** ou en ligne de commande (comme sur un RPI via SSH) :<cli prompt='$ '>...@...:~$ sudo apt install unbound dnsutils ldnsutils</cli>
  
 ===== Configuration ===== ===== Configuration =====
 +
 +<WRAP center round important 60%>
 +Les fichiers de configuration (nommés **<xxx>.conf**) sont désormais placés dans le répertoire **/etc/unbound/unbound.d/**.
 +
 +Ainsi, le fichier **/etc/unbound/unbound.conf** reste inchangé.
 +</WRAP>
 +
 +Liste des serveurs DNS racines
 +
 +Téléchargez le fichier **named.cache** (liste des serveurs DNS racines sur lequel s'appuiera **unbound** pour répondre aux requêtes et enregistrez-le dans le répertoire **/var/lib/unbound/** en le renommant **root.hints** :
 +<cli>$ wget ftp://FTP.INTERNIC.NET/domain/named.cache -O /var/lib/unbound/root.hints</cli>
 +
 +Voici l'exemple fourni avec le paquet : [[logiciel:internet:unbound:config:unbound.conf.exemple]]
 +
 +<WRAP center round info 60%>
 +  ? verbosity: <chiffre>
 +  : Niveau de détail des messages.
 +    * 0 => pas de message, que les erreurs.
 +    * **1 => informations opérationnelles.** (par défaut)
 +    * 2 => informations opérationnelles détaillées.
 +    * 3 => informations au niveau requête, classées par requête.
 +    * 4 => informations au niveau de l'algorithme.
 +    * 5 => enregistre l'identification des clients non mis en cache.
 +  ? interface: <ip address[@port]>
 +  : Interface à utiliser pour se connecter au réseau.
 +  : **Par défaut : localhost, port par défaut (fourni par le paramètre port, 53 sinon)**.
 +  : Cette interface sert à l’écoute des requêtes des clients et au renvoi des réponses.
 +  : Peut être fourni plusieurs fois pour travailler sur de multiples interfaces.
 +  : Les interfaces ne sont pas modifiées par un reload (kill -HUP), mais seulement au redémarrage.
 +  ? port: <port number>
 +  : Numéro de port sur lequel le serveur répond aux requêtes.
 +  : **par défaut : 53**
 +  ? do-ip4: <yes or no>
 +  : Active ou désactive les réponses aux requêtes IP4.
 +  : **Par défaut : yes**.
 +  ? do-ip6: <yes or no>
 +  : Active ou désactive les réponses aux requêtes IP6.
 +  : **Par défaut : yes**.
 +  ? do-udp: <yes or no>
 +  : Active ou désactive les réponses aux requêtes UDP.
 +  : **Par défaut : yes**.
 +  ? do-tcp: <yes or no>
 +  : Active ou désactive les réponses aux requêtes TCP.
 +  : **Par défaut : yes**.
 +  ? do-daemonize: <yes or no>
 +  : Active ou désactive le fonctionnement en arrière-plan (comme un démon).
 +  : **Par défaut : yes**.     
 +  ? access-control: <IP netblock> <action>
 +  : **netblock** : plage d'adresses IP4 ou IP6 suivie de /size pour un bloc de réseau sans classes.
 +  : Actions possibles : deny, refuse, allow, allow_snoop, deny_non_local ou refuse_non_local.
 +    * **deny** : bloque les requêtes des hôtes de cette plage d'adresses
 +    * **refuse** : bloque aussi les requêtes mais renvoie un message d'erreur DNS rcode REFUSED.
 +    * **allow** autorise les requêtes des hôtes de cette plage d'adresses. N'autorise que les clients récursifs, les requêtes non recursives sont refusées.
 +    * **allow_snoop** autorise aussi l'accès non recursif. Cela donne un accès à la fois récursif et non récursif.
 +    * **deny_non_local** : les messages non autorisés sont sautés
 +    * **refuse_non_local** ils reçoivent le code d'erreur REFUSED.
 +  : Si aucun **deny** ne correspond, la correspondance de plage la plus spécifique est utilisée.
 +  : **Par défaut, seul localhost est autorisé, le reste est bloqué**.
 +  ? root-hints: <filename>
 +  : Lire les indications de racine dans ce fichier.
 +  : **Par défaut : rien, en utilisant des builtin pour la classe IN.**
 +  : Le fichier a le format des fichiers de zone, avec seulement root names et addresses.
 +  ? hide-identity: <yes or no>
 +  ? hide-version: <yes or no>
 +  : Cacher les infos sur le serveur DNS.
 +  ? harden-glue: <yes or no>
 +  : limite l'usurpation de DNS.
 +  : **Par défaut : yes.**
 +  ? harden-dnssec-stripped: <yes or no>
 +  : Requérir les infos DNSSEC pour les zones de confiance.
 +  : **Par défaut : on**.
 +  ? use-caps-for-id: <yes or no>
 +  : Ne pas tenir compte de la casse dans la requête : MonSite.com équivaut à monsite.com.
 +  : **no par défaut**
 +  ? cache-min-ttl: <seconds>
 +  : valeur mini de la TTL en secondes. Ne pas dépasser 1h
 +  : **Par défaut : 0**.
 +  ? prefetch: <yes or no>
 +  : activation du prefetch. Si un requête est faite lorsque la tll expire dans moins de 10% du temps qu'il lui est imparti, le cache se mettra à jour aussitôt après avoir répondu à la requête.
 +  : **Par défaut : no**.
 +  ? num-threads: <number>
 +  : Le nombre de threads à créer pour servir les clients. Utilisez 1 pour pas de threading.
 +  ? msg-cache-slabs: <number>
 +  ? rrset-cache-slabs: <number>
 +  ? infra-cache-slabs: <number>
 +  ? key-cache-slabs: <number>
 +  : Nombre de slabs à utiliser . Doit être une puissance de 2 du num-threads.
 +  ? rrset-cache-size: <number>
 +  ?  msg-cache-size: <number>
 +  : Taille du cache. A  plain number is in bytes, append 'k', 'm' or 'g' for kilobytes, megabytes or  gigabytes  (1024*1024  bytes  in  a megabyte).
 +  : **Par défaut : 4 mégaoctets**.
 +  ? so-rcvbuf: <number>
 +  : Taille du buffer pour le port UPD en entrée. Évite la perte de message lors des requêtes
 +  : **Par défaut : 0** (utiliser la valeur système)
 +  ? private-address: <IP address or subnet>
 +  : Give IPv4 of IPv6 addresses  or  classless  subnets.  These  are addresses  on  your  private  network, and are not allowed to be returned for public internet  names.   Any  occurrence  of  such addresses are removed from DNS answers. Additionally, the DNSSEC validator may mark the  answers  bogus.  This  protects  against so-called  DNS  Rebinding, where a user browser is turned into a network proxy, allowing remote access  through  the  browser  to other  parts of your private network.  Some names can be allowed to contain your private addresses,
 +  : By default all the local-data that  you  configured  is  allowed to, and you can specify additional names using private-domain.   No  private  addresses  are enabled  by default.
 +  : We consider to enable this for the RFC1918 private IP address space by  default  in  later  releases.  That would  enable  private  addresses  for  10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 169.254.0.0/16 fd00::/8 and fe80::/10, since  the RFC  standards  say these addresses should not be visible on the public internet.  Turning on 127.0.0.0/8 would hinder many spam-blocklists   as  they  use  that.   Adding  ::ffff:0:0/96  stops IPv4-mapped IPv6 addresses from bypassing the filter.
 +  ? unwanted-reply-threshold: <number>
 +  : Si non nulles, les réponses indésirables ne sont pas seulement signalés dans les statistiques, mais aussi ajoutées à un total cumulé maintenu par thread. Quand le seuil est atteint, un avertissement est affiché et une action défensive est prise, le cache est vidé pour éviter l'empoissonnement DNS. Une valeur de 10000 est suggérée, la valeur par défaut est de 0 (service désactivé).
 +  : **Par défaut : 0 (désactivé)**.
 +  ? do-not-query-localhost: <yes or no>
 +  : Interdire de répondre aux requêtes du localhost ?
 +  : **Par défaut : yes** (localhost est interdit)
 +  : Si no, localhost est utilisable.
 +  ? val-clean-additional: <yes or no>
 +  : Est-ce que cette section supplémentaire, doit être conservée intacte pour les données non-sécurisées ? Utile pour protéger les utilisateurs d'une validation de données potentiellement boguées. Toutes les données non signés dans la section supplémentaire seront retirés des messages sécurisés
 +  : **Par défaut : yes**.
 +  ? chroot: <directory>
 +  : If chroot is enabled, you should pass the configfile  (from  the commandline)  as  a  full path from the original root. After the chroot has been performed the now defunct portion of the  config file  path  is  removed  to be able to reread the config after a reload.
 +  : All other file paths (working dir, logfile, roothints,  and  key files)  can  be  specified  in several ways: as an absolute path relative to the new root, as a  relative  path  to  the  working directory, or as an absolute path relative to the original root. In the last case the path is adjusted to remove the unused  portion.
 +  : The  pidfile can be either a relative path to the working directory, or an absolute path relative to the original root.  It  is written  just  prior  to  chroot  and dropping permissions. This allows the pidfile to be /var/run/unbound.pid and the chroot  to be /var/unbound, for example.
 +  : Additionally,  unbound  may  need  to  access  /dev/random  (for entropy) from inside the chroot.
 +  : If given a chroot is done to the given directory.
 +  : The default is "/usr/local/etc/unbound".
 +  : If you give "" no chroot is performed.
 +  ? username: <name>
 +  : If  given,  after  binding  the  port  the  user  privileges are dropped. Default is "unbound". If you give username: "" no  user change is performed.
 +  : If  this  user  is  not capable of binding the port, reloads (by signal HUP) will still retain the opened ports.  If  you  change the  port  number  in  the config file, and that new port number requires privileges, then a  reload  will  fail;  a  restart  is needed.
 +  ? directory: <directory>
 +  : Sets   the   working  directory  for  the  program.  Default  is "/usr/local/etc/unbound" On Windows the string  "%EXECUTABLE%" tries to change to the directory that unbound.exe resides in.
 +  ? use-syslog: <yes or no>
 +  : Sets unbound to send log messages to  the  syslogd,  using  syslog(3).   The  log  facility  LOG_DAEMON  is used, with identity "unbound" The logfile setting is overridden when use-syslog is turned on.
 +  : **The default is to log to syslog**.
 +  ? pidfile: <filename>
 +  : The  process  id  is   written   to   the   file.
 +  : Default   is "/usr/local/etc/unbound/unbound.pid" So, kill -HUP `cat /usr/local/etc/unbound/unbound.pid` triggers a reload, kill -TERM `cat /usr/local/etc/unbound/unbound.pid` gracefully terminates.
 +  ? root-hints: <filename>
 +  : Read  the  root  hints from this file.
 +  : Default is nothing, using builtin hints for the IN class. The file has the format of  zone files,  with  root  nameserver  names  and  addresses  only. The default may become outdated, when servers change,  therefore  it is good practice to use a root-hints file.
 +
 +</WRAP>
 +
 +<WRAP center round box 60%>
 +Voici un exemple commenté<code - /etc/unbound/unbound.d/mondns.com>
 +server:  
 +  # Répondre aux requêtes DNS sur toutes les interfaces réseau.
 +  interface: 0.0.0.0
 +  
 +  # plage adresses ip autorisées à consulter le serveur dns :
 +  # uniquement le réseau local
 +  access-control: 192.168.0.0/24 allow
 +  
 +  # Ignorer la casse 
 +  # HomeServer-DIY.net sera traduit en homeserver-diy.net et le serveur et communiquera la bonne IP
 +  use-caps-for-id: yes
 +  
 +  # Renforcer la vie privée des adresses du LAN. Ne mettre que des adresses locales
 +  private-address: 192.168.1.0/24
 +</code>
 +</WRAP>
 +
 +Pour créer des DNS avec tous les sous-domaines, utiliser la directive **redirect**.
 +
 +Exemple pour localhost :
 +<code - >
 +server:
 +    # zone *.localhost
 +    local-zone: "localhost" redirect
 +    local-data: "localhost A 127.0.0.1"
 +</code>
 +
 +Il génère tous les sous-domaines xxx.localhost, a.localhost, etc.
 +
 +==== Exemples ====
 +
 +Exemple fourni avec le paquet
 +<code - /etc/unbound/unbound.d/monserveurdns.com>
 +server:
 +  # Les lignes suivantes concernent la configuration de unbound pour les
 +  # performance crypto DNSSEC en utilisant la clé des serveurs root
 +  auto-trust-anchor-file: "/var/lib/unbound/root.key"
 +  
 +  # Activer les logs
 +  # verbosity: 1 (par défaut)
 +  
 +  #Répondre aux requêtes DNS sur toutes les interfaces réseau.
 +  interface: 0.0.0.0
 +  
 +  #Port sur lequel sont fait les requêtes DNS
 +  #port: 53 (par défaut)
 +  
 +  #support de l'IPv4
 +  #do-ip4: yes (par défaut)
 +  
 +  #support de  l'IPv6
 +  do-ip6: no
 +  
 +  #support udp
 +  #do-udp: yes (par défaut)
 +  
 +  #support tcp
 +  #do-tcp: yes (par défaut)
 +  
 +  #plages adresse ip autorisée à consulter le serveur dns
 +  #access-control: 127.0.0.0/8 allow
 +  #access-control: 192.168.1.0/24 allow
 +  #access-control: 192.168.1.26
 +  
 +  #plage ip comprise entre 192.168.0.0 et 192.168.255.255
 +  access-control: 192.168.1.0/16 allow
 +  
 +  #emplacement du fichier indiquant les infos pour consulter les serveurs DNS root
 +  #fichier à télécharger là à cette adresse: ftp://FTP.INTERNIC.NET/domain/named.cache
 +  root-hints: "/var/lib/unbound/root.hints"
 +  
 +  #Cacher les infos sur le serveur DNS
 +  hide-identity: yes
 +  hide-version: yes
 +  
 +  #paramètre limitant l'usurpation de DNS
 +  harden-glue: yes
 +  
 +  #Requérir les infos DNSSEC pour les zones de confiance
 +  harden-dnssec-stripped: yes
 +  
 +  #Options permettant de ne pas prendre la casse en compte lors des requêtes d'url. 
 +  #HomeServer-DIY.net sera traduit en homeserver-diy.net par le serveur et il communiquera la bonne IP
 +  
 +  use-caps-for-id: yes
 +  
 +  #valeur mini de la TTL en secondes. Ne pas dépasser 1h
 +  cache-min-ttl: 3600
 +  
 +  #valeur max de la TTL en secondes.
 +  cache-max-ttl: 86400
 +  
 +  #activation du prefetch. Si un requête est faite lorsque la tll expire dans moins de 10% du temps qu'il lui est imparti
 +  #le cache se mettra à jour aussitôt après avoir répondu à la requête.
 +  prefetch: yes
 +  
 +  #nombre de core du serveur dns
 +  num-threads: 2
 +  
 +  ## Tweaks et optimisations du cache
 +  #Nombre de slabs à utiliser . Doit être une puissance de 2 du num-threads.
 +  msg-cache-slabs: 8
 +  rrset-cache-slabs: 8
 +  infra-cache-slabs: 8
 +  key-cache-slabs: 8
 +  
 +  #Réglage de la taille du cache en Mo:
 +  rrset-cache-size: 51m
 +  msg-cache-size: 25m
 +  
 +  #Taille du buffer pour le port UPD en entrée. Evite la perte de message lors des requêtes
 +  so-rcvbuf: 1m
 +  
 +  #Renforcer la vie privée des adresses du LAN. Ne mettre que des adresses locales
 +  private-address: 192.168.1.0/24
 +  
 +  #Si non nulles, les réponses indésirables ne sont pas seulement signalés dans les statistiques, 
 +  #mais aussi ajoutées à un total cumulé maintenu par thread. 
 +  #Si elle atteint le seuil, un avertissement est affiché et une action défensive est prise, le cache est vidé pour éviter l'empoissonnement DNS. 
 +  #Une valeur de 10000 est suggérée, la valeur par défaut est de 0 (service désactivé).
 +  unwanted-reply-threshold: 10000
 +  
 +  #Autorisé à répondre aux requêtes du localhost
 +  do-not-query-localhost: no
 +  
 +  #Emplacement du fichier root.key pour utilisation de DNSSEC
 +  #auto-trust-anchor-file: "/var/lib/unbound/root.key"
 +  # Est-ce que cette section supplémentaire, doit être conservée intacte pour les données non-sécurisées
 +  # Utile pour protéger les utilisateurs d'une validation de données potentiellement boguées
 +  # Toutes les données non signés dans la section supplémentaire seront retirés des messages sécurisés
 +  val-clean-additional: yes
 +</code>
 +
 +Conf de Korben, Voir : [[http://korben.info/installer-unbound-serveur-dns-sous-linux.html]]
 +
 +<code - >
 +server:
 +  #verbosity: 1
 +  interface: 0.0.0.0
 +  #port: 53
 +  #do-ip4: yes
 +  #do-ip6: yes
 +  #do-udp: yes
 +  #do-tcp: yes
 +  do-daemonize: yes
 +  access-control: 0.0.0.0/0 allow
 +  #access-control: 0.0.0.0/0 refuse
 +  #access-control: 127.0.0.0/8 allow
 +  chroot: "/var/unbound"
 +  username: "unbound"
 +  directory: "/var/unbound"
 +  use-syslog: yes
 +  pidfile: "/var/run/unbound.pid"
 +  root-hints: "/var/unbound/named.cache"
 +</code>
 +
 +avec un utilisateur dédié créé par :
 +  * <code>sudo groupadd unbound
 +sudo useradd -d /var/unbound -m -g unbound -s /bin/false unbound</code>
 +
 +Le répertoire /var/unbound sera utilisé par Unbound et contiendra les fichiers de config.
 +
 +Bloquer les pubs sur internet
 +
 +De nombreuses pages web contiennent du code qui affiche des pubs en s'appuyant sur les noms de domaines des régies publicitaires de google, yahoo etc. Lors du chargement de la page, votre ordinateur fera donc une requête DNS pour résoudre les domaines de ces régies.
 +
 +Pour bloquer ces pubs, il suffit de configurer **unbound** pour qu'il retourne une adresse IP non attribuée du réseau local. Mais celle du localhost de l'exemple fonctionne aussi très bien. Voici ce qu'il suffit d'ajouter à la fin du fichier unbound.conf:
 +
 +<code - >
 +  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"
 +</code>
 +
 +Cette liste n'est pas exhaustive ; le fichier suivant contient un grand nombre de domaines utilisés par un grande nombre de régies publicitaires : [[https://homeserver-diy.net/wiki/index.php?title=Fichier:Regies_pub.odt|Regies pub.odt]]
  
 ===== Utilisation ===== ===== Utilisation =====
 +
 +==== Contrôle ====
 +
 +  * Démarrer **unbound** :<cli prompt='$ '>...@...:~ $ sudo systemctl start unbound</cli>
 +  * Arrêter **unbound** :<cli prompt='$ '>...@...:~ $ sudo systemctl stop unbound</cli>
 +  * Redémarrer **unbound** :<cli prompt='$ '>...@...:~ $ sudo systemctl restart unbound</cli>
 +  * Connaître l'état d'**unbound** :<cli prompt='$ '>...@...:~ $ sudo systemctl status unbound</cli>
 +
 +==== Utilisation depuis les autres machines ====
 +
 +Le plus simple est d'utiliser le protocole DHCP : déclarez sur votre box l'adresse de votre serveur hébergeant unbound pour que toutes vos machines utilisent ce nouveau service auto-hébergé:
 +{{ logiciel:internet:unbound:freebox_os-dhcp-unbound.png?400 |}}
  
 ===== Désinstallation ===== ===== Désinstallation =====
  
 +  * Pour supprimer cette application, il suffit de supprimer son paquet :<cli prompt='$ '>...@...:~ $ sudo apt-get remove unbound</cli>
 +  * ou pour effacer tout :<cli prompt='$ '>...@...:~ $ sudo apt-get purge unbound</cli>
 ===== Voir aussi ===== ===== Voir aussi =====
  
-  * **(fr)** [[http://Article]]+  * **(fr)** doc ubuntu : [[https://doc.ubuntu-fr.org/unbound]] 
 +  * **(fr)** [[https://techarea.fr/creer-resolveur-dns-unbound-debian/]] 
 +  * **(fr)** [[https://memo-linux.com/debian-installer-le-serveur-dns-unbound/]] 
 +  * **(en)** page de man unbound : [[https://www.unbound.net/documentation/unbound.html]] 
 +  * **(en)** page de man unbound.conf : [[https://www.unbound.net/documentation/unbound.conf.html]] 
 +  * **(fr)** [[logiciel:internet:unbound:config:start1]]
  
 ---- ----
-//Basé sur << [[http://Article|Article]] >> par Auteur.//+//Basé sur << [[https://doc.ubuntu-fr.org/unbound]] >> par doc ubuntu.//