mirroir readonly du Gitit wiki.evolix.org (attention, ne rien commiter/merger sur ce dépôt) https://wiki.evolix.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

207 lines
5.1 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
1 year ago
1 year ago
1 year ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
  1. ---
  2. categories: openbsd network DNS
  3. title: Howto Unbound
  4. ---
  5. * Documentation : <https://www.unbound.net/documentation/>
  6. * Rôle Ansible : <https://forge.evolix.org/projects/ansible-roles/repository/show/unbound>
  7. * Man pages : <https://man.openbsd.org/unbound> ou <https://manpages.debian.org/stretch/unbound/unbound.8.en.html>
  8. [Unbound](https://www.unbound.net/) est un serveur DNS récursif. Il gère notamment du cache et la validation DNSSEC. Par rapport à [Bind](HowtoBind) il est léger et sécurisé, mais il ne sait pas faire autorité pour un nom de domaine. Il a été écrit et est maintenu par [NLnet Labs](https://www.nlnetlabs.nl/).
  9. ## Installation
  10. ### Debian
  11. ~~~
  12. # apt install unbound
  13. $ /usr/sbin/unbound -h | tail -5
  14. Version 1.6.0
  15. linked libs: libevent 2.0.21-stable (it uses epoll), OpenSSL 1.1.0f 25 May 2017
  16. linked modules: dns64 python validator iterator
  17. BSD licensed, see LICENSE in source package for details.
  18. Report bugs to unbound-bugs@nlnetlabs.nl
  19. ~~~
  20. ### OpenBSD
  21. Unbound est intégré dans la base d'OpenBSD, il est donc déjà présent.
  22. ## Configuration
  23. <https://manpages.debian.org/stretch/unbound/unbound.conf.5.en.html> ou <https://man.openbsd.org/unbound.conf>
  24. Fichiers de configuration sous Debian :
  25. ~~~
  26. /etc/unbound/
  27. ├── unbound.conf
  28. ├── unbound.conf.d
  29. │ ├── qname-minimisation.conf
  30. │ └── root-auto-trust-anchor-file.conf
  31. ├── unbound_control.key
  32. ├── unbound_control.pem
  33. ├── unbound_server.key
  34. └── unbound_server.pem
  35. ~~~
  36. Fichiers de configuration sous OpenBSD (Unbound est dans un chroot) :
  37. ~~~
  38. /var/unbound/etc/
  39. └── unbound.conf
  40. ~~~
  41. Par défaut, Unbound écoute uniquement sur _localhost_, la configuration minimale consiste surtout à le sécuriser :
  42. ~~~
  43. server:
  44. hide-identity: yes
  45. hide-version: yes
  46. auto-trust-anchor-file: "/var/unbound/db/root.key"
  47. ~~~
  48. Si l'on veut le faire écouter sur un réseau local, il faut ajuster les directives `interface` et `access-control` :
  49. ~~~
  50. server:
  51. interface: 192.0.2.254
  52. interface: 127.0.0.1
  53. interface: ::1
  54. access-control: 0.0.0.0/0 refuse
  55. access-control: 127.0.0.0/8 allow
  56. access-control: 192.0.2.0/24 allow
  57. access-control: ::0/0 refuse
  58. access-control: ::1 allow
  59. ~~~
  60. ### Activation sous OpenBSD
  61. On active Unbound dans `rc.conf.local` et on démarre le daemon :
  62. ~~~
  63. # rcctl enable unbound
  64. # rcctl start unbound
  65. ~~~
  66. ## Monitoring
  67. ### Avoir des statistiques
  68. On peut accéder à des statistiques avec [unbound-control(8)](https://man.openbsd.org/unbound-control).
  69. Pour cela, le `remote-control` doit être activé :
  70. ~~~
  71. remote-control:
  72. control-enable: yes
  73. control-use-cert: no
  74. control-interface: /var/run/unbound.sock
  75. ~~~
  76. Sous Debian :
  77. ~~~
  78. # unbound-control stats
  79. ~~~
  80. Sous OpenBSD :
  81. ~~~
  82. $ doas -u _unbound unbound-control stats
  83. ~~~
  84. Si l'on veut avoir des statistiques plus détaillées, avec notamment le type de requêtes, on peut ajouter à la configuration :
  85. ~~~
  86. extended-statistics: yes
  87. ~~~
  88. Enfin, les statistiques peuvent régulièrement être affichées dans les logs avec cette configuration :
  89. ~~~
  90. statistics-interval: 300
  91. ~~~
  92. ### dnstop
  93. Voir [HowtoBind#dnstop]()
  94. ## FAQ
  95. ### Vider le cache pour un domaine particulier
  96. ~~~
  97. unbound-control flush_zone foo.local
  98. ~~~
  99. ### Utiliser un serveur DNS particulier pour un nom de domaine
  100. On pourra forwarder certaines requêtes vers un serveur différent en rajoutant les directives ci-dessous :
  101. ~~~
  102. forward-zone:
  103. name: "foo.local."
  104. forward-addr: 192.0.2.1
  105. forward-first: yes
  106. ~~~
  107. Dans le cas présent, les requêtes concernent une zone locale, ainsi afin d'éviter une vérification DNSSEC pour ces dernières on ajoutera la directive suivante dans la configuration de unbound :
  108. ~~~
  109. domain-insecure: "foo.local."
  110. ~~~
  111. ### Rajouter / modifier un enregistrement DNS
  112. Parfois on veut pouvoir modifier un enregistrement DNS, par exemple
  113. quand on a un VPN. On peut utiliser `/etc/hosts` pour les champs A
  114. mais pas pour les MX. On peut donc utiliser unbound pour mentir :
  115. ~~~
  116. local-zone: "example.com." typetransparent
  117. local-data: "example.com. IN MX 10 fakemx.example.com."
  118. local-data: "fakemx.example.com. IN A 192.168.1.3"
  119. ~~~
  120. ### Configuration sur un routeur
  121. Il NE faut JAMAIS mettre une configuration de type :
  122. ~~~
  123. interface: 0.0.0.0
  124. ~~~
  125. …car Unbound ne va pas forcément répondre avec la bonne interface et on peut avoir des erreurs du type :
  126. ~~~
  127. $ dig @IP-routeur
  128. ;; reply from unexpected source: autre.ip.du.routeur#53, expected ipdurouteur#53
  129. ~~~
  130. Il faut lister explicitement toutes les interfaces sur lesquelles on souhaite qu'Unbound écoute.
  131. ### dig +trace ne fonctionne pas
  132. C'est certainement parce que le client a une autorisation insuffisante
  133. pour ce type de requête particulière. Il faut donc remplacer dans la
  134. directive `access-control:` le mot-clé `allow` par `allow_snoop`.
  135. ### Mentir sur le TTL
  136. On peut vouloir mettre un TTL minimum pour ne pas respecter le TTL quand il est mis à des valeurs anormalement basses. Pour mettre le TTL minimum à 600 :
  137. ~~~
  138. cache-min-ttl: 600
  139. ~~~
  140. ### Diminuer le cache des réponses négatives
  141. Si on veut diminuer à 30s la durée de mise en cache des résolutions n'ayant pas de réponse :
  142. ~~~
  143. cache-max-negative-ttl: 30
  144. ~~~