22
0
Fork 0

Relecture finale

This commit is contained in:
Gregory Colpart 2017-07-31 11:25:14 -04:00
parent 35d161c7aa
commit 59df75215c
1 changed files with 50 additions and 29 deletions

View File

@ -5,7 +5,7 @@ title: Howto Unbound
* Documentation : <https://www.unbound.net/documentation/> * Documentation : <https://www.unbound.net/documentation/>
* Rôle Ansible : <https://forge.evolix.org/projects/ansible-roles/repository/show/unbound> * 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/). [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 ### OpenBSD
Unbound est intégré dans la base d'OpenBSD, il est donc déjà présent. 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 ## 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: server:
# interface sur laquelle le daemon écoute hide-identity: yes
interface: XX.XX.XX.XX 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: 192.0.2.254
interface: 127.0.0.1 interface: 127.0.0.1
interface: ::1 interface: ::1
access-control: 0.0.0.0/0 refuse access-control: 0.0.0.0/0 refuse
access-control: 127.0.0.0/8 allow access-control: 127.0.0.0/8 allow
# important, on précise qui pourra interroger le service access-control: 192.0.2.0/24 allow
access-control: XX.XX.XX.0/24 allow
access-control: ::0/0 refuse access-control: ::0/0 refuse
access-control: ::1 allow 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). ### Activation sous OpenBSD
On active Unbound dans `rc.conf.local` et on démarre le daemon :
### Sous OpenBSD
On active unbound dans `rc.conf.local` et on démarre le daemon !
~~~ ~~~
# rcctl enable unbound # rcctl enable unbound
@ -68,15 +89,15 @@ On active unbound dans `rc.conf.local` et on démarre le daemon !
## FAQ ## 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 : On pourra forwarder certaines requêtes vers un serveur différent en rajoutant les directives ci-dessous :
~~~ ~~~
forward-zone: forward-zone:
name: "foo.local." name: "foo.local."
forward-addr: 192.0.2.1 forward-addr: 192.0.2.1
forward-first: yes 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 : 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 : mais pas pour les MX. On peut donc utiliser unbound pour mentir :
~~~ ~~~
local-zone: "example.com." typetransparent local-zone: "example.com." typetransparent
local-data: "example.com. IN MX 10 fakemx.example.com." local-data: "example.com. IN MX 10 fakemx.example.com."
local-data: "fakemx.example.com. IN A 192.168.1.3" local-data: "fakemx.example.com. IN A 192.168.1.3"
~~~ ~~~
### Configuration sur un routeur ### 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 ;; 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 ### dig +trace ne fonctionne pas