dnsmasq
Mis en pratique ;-)
Chez TEA, The Ebook Alternative
Appuyez sur [s] pour ouvrir les notes présentateur dans une nouvelle fenêtre.
Qui ?
L'enfer des noms
Quelques approches
- IP en dur partout
- Modification manuelle des
/etc/hosts
On a fait ça... c'était infernal !
dnsmasq
Serveur DNS facile à configurer
Principe
- dnsmasq sur poste physique
-
Utilisé par toutes les machines
- Poste de dev lui-même
- Machines virtuelles
- Conteneurs LXC / docker
- Relai vers serveur DNS externe
Tester la résolution DNS
Commande dig
Debian
sudo apt-get install dnsutils
Mac
Installé de base
Tester la résolution DNS
Sur un domaine local et sur un domaine externe
En utilisant le DNS par défaut
dig backend.lxc
dig www.google.com
En précisant quel DNS utiliser
dig backend.lxc @127.0.0.1
dig www.google.com @127.0.0.1
Installation
Linux
sudo apt-get install dnsmasq
Mac
brew up
brew install dnsmasq
Fichier de configuration
Linux
/etc/dnsmasq.conf
Mac
/usr/local/etc/dnsmasq.conf
Configuration
bind-interfaces
conf-dir=/etc/dnsmasq.d
resolv-file=/etc/resolv.dnsmasq.conf
Mais où écouter ?
Interfaces réseau à travers lesquelles dnsmasq sera utilisé
listen-address=172.17.42.1 # docker0
listen-address=192.168.1.87 # vboxnet0
listen-address=127.0.0.1 # lo
Ou écouter partout
listen-address=0.0.0.0 # toutes les interfaces
Résolution externe
/etc/resolv.dnsmasq.conf
# Google's nameservers, for example
nameserver 8.8.8.8
nameserver 8.8.4.4
Un fichier par service
/etc/dnsmasq.d/*.conf
# /etc/dnsmasq.d/tea-db
address=/tea-db/192.168.3.10
# /etc/dnsmasq.d/ecommerce.lxc
address=/ecommerce.lxc/192.168.3.13
Tip bien moche
Rendez /etc/dnsmasq.d/
accessible en écriture à votre utilisateur
sudo chmod -R o+w /etc/dnsmasq.d/
Ou
sudo chown $USER -R /etc/dnsmasq.d/
Et pour nous ?
DNS de certains services TEA, sur notre serveur interne
# /etc/dnsmasq.d/tea-ebook.com.conf
server=/staging.tea-ebook.com/192.168.1.200
Attention au fichier hosts !
- dnsmasq utilise
/etc/hosts
avant sa propre configuration
- Faites du ménage !
Redémarrer dnsmasq
Linux
sudo /etc/init.d/dnsmasq restart
Mac
sudo launchctl stop homebrew.mxcl.dnsmasq
sudo launchctl start homebrew.mxcl.dnsmasq
Configuration poste physique
Utiliser 127.0.0.1
comme serveur DNS du poste physique
"Comment" dépend de votre système, distribution, et environnement de bureau \o/
Configuration VM 1/3
Installer resolvconf
sudo apt-get install resolvconf
Configuration VM 2/3
Utiliser le poste physique comme serveur DNS
# /etc/resolvconf/resolv.conf.d/head
nameserver 192.168.3.1 # vboxnet0
Configuration VM 3/3
Redémarrer la VM
Configuration conteneur Docker
Lors du run, indiquer le serveur DNS à utiliser
# IP de l'interface docker0
docker run ... --dns=171.14.12.1 ...
Et maintenant ?
À chaque nouveau service/nom :
- Créer le fichier correspondant dans
/etc/dnsmasq.d/
- Redémarrer
dnsmasq
- ... et c'est tout ;-)
Troubleshooting ?
- Au pire : plus de résolution DNS du tout
- Vérifier :
- Que dnsmasq est démarré
- Qu'il n'y a pas de doublon de configuration
- Plusieurs IPs pour un nom
- Restes dans fichier
hosts
- Que la configuration globale n'a pas été écrasée par une MAJ