Craftyx Blog

N'éditez plus votre fichier hosts grâce à dnsmasq

N'éditez plus votre fichier hosts grâce à dnsmasq

En tant que développeur, nous sommes habitués à éditer notre fichier /etc/hosts afin de rediriger des noms de domaines fictifs vers une adresse IP, en général notre localhost ou l'IP d'une box vagrant. Mais cela pose quelques problèmes, notamment car vous devez maintenir ce fichier chaque fois que vous créez et supprimer un projet afin que le fichier hosts ne devienne pas inmaintenable.

L'alternative que je vous présente s'appelle dnsmasq, il s'agit d'un serveur DNS léger, grâce auquel nous allons rediriger toutes les adresses qui se terminent en .app vers l'adresse IP de votre choix (qui sera [VOTRE_IP] dans les exemples). 

Nous allons voir ensemble comment l'installer sur Mac, le configurer pour qu'il resolve toutes les adresses en .app, puis configurer OSX pour qu'il utilise dnsmasq pour cette extension.

à noter : ce que je fais avec le .app est réalisable également avec un .dev, .local, etc... à votre guise !

Si vous n'êtes pas à l'aise avec la ligne de commande ou avec les opérations à suivre, je vous recommande de ne pas suivre ce tutoriel. Merci de le lire jusqu'à la fin avant de commander les manipulation (pour le bien de votre mac)

Installation de dnsmasq

Pour installer dnsmasq, il vous faut d'abord avoir une installation fonctionelle d'homebrew. Homebrew est un package manager pour Mac, l'installation se déroule en une ligne !

une fois homebrew installé, l'installation de dnsmasq est très simple :

# Update your homebrew installation
brew up
# Install dnsmasq
brew install dnsmasq

Le process d'installation vous indiquera plusieurs commandes à tapper pour démarrer dnsmasq avec la configuration par défault. Je vous recommande d'utiliser celles ci  immedialement. Dans le cas où vous auriez fermer le terminal ou si vous n'avez plus ces commandes sous la main, les commandes suivantes devrait faire l'affaire : 

# Copie du fichier de configuration par défaut.
cp $(brew list dnsmasq | grep /dnsmasq.conf.example$) /usr/local/etc/dnsmasq.conf
# Copie du fichier de configuration du service.
sudo cp $(brew list dnsmasq | grep /homebrew.mxcl.dnsmasq.plist$) /Library/LaunchDaemons/
# Démarrage de dnsmasq.
sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist

Configuration de dnsmasq

Maintenant que dnsmasq est installé, nous allons pouvoir passer à la phase de configuration de ce dernier. 

Pour rappel, nous allons faire en sorte que tous les domaines qui se termine par .app pointent vers [VOTRE_IP]. Pour cela ouvrez le fichier /usr/local/etc/dnsmasq.conf et insérez la ligne suivante (tout en bas par exemple) :

address=/app/[VOTRE_IP]

Nous indiquons ici à dnsmasq que toutes les requêtes qu'il aura à gérer répondant au pattern "app". cela signifie que toto.app: test.app; foo.bar.app; a.b.c.app.... pointeront vers [VOTRE_IP]

Redémarrons dnsmasq :

sudo launchctl stop homebrew.mxcl.dnsmasq
sudo launchctl start homebrew.mxcl.dnsmasq

Puis testons si tout cela fonctionne :

dig foo.bar.baz.app @127.0.0.1 # note : le 127.0.0.1 est normal ici

Vous devriez voir cela dans la réponse : 

;; ANSWER SECTION:
foo.bar.baz.app. 0 IN	A	[VOTRE_IP]

Vous obtenez bien cela ? Super ! Passons à la dernière étape

Configuration du Mac

Dans cette dernière étape, nous allons indiquer à Mac OSX comment résoudre les nom de domaines en .app

OSX permet d'ajouter des "resolvers" de domaines dans le dossier /etc/resolver (qui n'éxiste pas par défaut) ; Si ce dossier n'existe pas chez vous (ce qui est surement le cas), commençons par le créer :

sudo mkdir -p /etc/resolver

Dans ce dossier nous allons créer notre fichier pour résoudre nos .app :

sudo tee /etc/resolver/app >/dev/null <<EOF
nameserver 127.0.0.1
EOF

And... that's it !

Julien Tant

Besoin d'aide pour la mise en place de vos équipe technique ? Julien Tant peut vous aider à choisir les outils les plus adaptés à votre situation !

Contactez moi

Julien Tant Par