Browse Source

Relecture finale

master
Gregory Colpart 3 years ago
parent
commit
59df75215c
1 changed files with 50 additions and 29 deletions
  1. +50
    -29
      HowtoUnbound.md

+ 50
- 29
HowtoUnbound.md View File

@ -5,7 +5,7 @@ title: Howto Unbound
* Documentation : <https://www.unbound.net/documentation/>
* Rôle Ansible : <https://forge.evolix.org/projects/ansible-roles/repository/show/unbound>
* Man page : <https://man.openbsd.org/unbound>
* Man pages : <https://man.openbsd.org/unbound> ou <https://manpages.debian.org/stretch/unbound/unbound.8.en.html>
[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/).
@ -27,39 +27,60 @@ Report bugs to unbound-bugs@nlnetlabs.nl
### OpenBSD
Unbound est intégré dans la base d'OpenBSD, il est donc déjà présent.
Attention, Unbound est dans un chroot, sa configuration n'est pas présente dans `/etc` mais dans `/var/unbound/etc`.
## Configuration
Un exemple de configuration basique mais suffisante en l'absence de cas particulier :
<https://manpages.debian.org/stretch/unbound/unbound.conf.5.en.html> ou <https://man.openbsd.org/unbound.conf>
Fichiers de configuration sous Debian :
~~~
/etc/unbound/
├── unbound.conf
├── unbound.conf.d
│ ├── qname-minimisation.conf
│ └── root-auto-trust-anchor-file.conf
├── unbound_control.key
├── unbound_control.pem
├── unbound_server.key
└── unbound_server.pem
~~~
Fichiers de configuration sous OpenBSD (Unbound est dans un chroot) :
~~~
/var/unbound/etc/
└── unbound.conf
~~~
Par défaut, Unbound écoute uniquement sur _localhost_, la configuration minimale consiste surtout à le sécuriser :
~~~
server:
hide-identity: yes
hide-version: yes
auto-trust-anchor-file: "/var/unbound/db/root.key"
~~~
Si l'on veut le faire écouter sur un réseau local, il faut ajuster les directives `interface` et `access-control` :
~~~
server:
# interface sur laquelle le daemon écoute
interface: XX.XX.XX.XX
interface: 192.0.2.254
interface: 127.0.0.1
interface: ::1
access-control: 0.0.0.0/0 refuse
access-control: 127.0.0.0/8 allow
# important, on précise qui pourra interroger le service
access-control: XX.XX.XX.0/24 allow
access-control: 192.0.2.0/24 allow
access-control: ::0/0 refuse
access-control: ::1 allow
hide-identity: yes
hide-version: yes
auto-trust-anchor-file: "/var/unbound/db/root.key"
~~~
En plus de la documentation, on peut se référer à [unbound.conf(5)](https://man.openbsd.org/unbound.conf).
### Sous OpenBSD
### Activation sous OpenBSD
On active unbound dans `rc.conf.local` et on démarre le daemon !
On active Unbound dans `rc.conf.local` et on démarre le daemon :
~~~
# rcctl enable unbound
@ -68,15 +89,15 @@ On active unbound dans `rc.conf.local` et on démarre le daemon !
## FAQ
### Utiliser un serveur dns particulier pour une zone
### Utiliser un serveur DNS particulier pour un nom de domaine
On pourra forwarder certaines requêtes vers un serveur différent en rajoutant les directives ci-dessous :
~~~
forward-zone:
name: "foo.local."
forward-addr: 192.0.2.1
forward-first: yes
name: "foo.local."
forward-addr: 192.0.2.1
forward-first: yes
~~~
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 :
@ -92,27 +113,27 @@ quand on a un VPN. On peut utiliser `/etc/hosts` pour les champs A
mais pas pour les MX. On peut donc utiliser unbound pour mentir :
~~~
local-zone: "example.com." typetransparent
local-data: "example.com. IN MX 10 fakemx.example.com."
local-data: "fakemx.example.com. IN A 192.168.1.3"
local-zone: "example.com." typetransparent
local-data: "example.com. IN MX 10 fakemx.example.com."
local-data: "fakemx.example.com. IN A 192.168.1.3"
~~~
### Configuration sur un routeur
Il NE faut PAS mettre une configuration de type
Il NE faut JAMAIS mettre une configuration de type :
~~~
interface: 0.0.0.0
interface: 0.0.0.0
~~~
car unbound ne va pas forcément répondre avec la bonne interface et on peut avoir des erreurs du type
…car Unbound ne va pas forcément répondre avec la bonne interface et on peut avoir des erreurs du type :
~~~
$ dig @ipdurouteur
$ dig @IP-routeur
;; reply from unexpected source: autre.ip.du.routeur#53, expected ipdurouteur#53
~~~
Il faut lister explicitement toutes les interfaces sur lesquelles on souhaite qu'unbound écoute.
Il faut lister explicitement toutes les interfaces sur lesquelles on souhaite qu'Unbound écoute.
### dig +trace ne fonctionne pas


Loading…
Cancel
Save