Je suis dans le même bateau depuis quelques jours aussi. Voici ce que j'ai fait pour que ça marche (mais je ne suis pas sûr que ce soit la bonne façon de résoudre le problème).
Ubuntu, par défaut, a un serveur DNS stub (écoutant au port 53
) appelé systemd-resolved
. Je ne pouvais pas faire dnsmasq
fonctionner sans désactiver le stub en premier lieu. Je ne suis pas sûr que le fait de désactiver le turinig systemd-resolved
est un chemin à parcourir, mais comme il s'appelle Stub DNS, je pense que cela devrait aller ( sudo systemctl disable systemd-resolved.service
).
Ensuite, j'ai apporté des modifications au /etc/dnsmasq.conf
: décomposer bind-interfaces
et faire en sorte que dnsmasq écoute 127.0.0.1:53
( listen=127.0.0.1
y port=53
).
Dites à NetworkManager d'utiliser dnsmasq
comme serveur DNS en ajoutant dns=dnsmasq
a /etc/NetworkManager/NetworkManager.conf
(en [main]
).
Maintenant, comme systemd-resolved
est désactivé, vous êtes libre d'éditer /etc/resolve.conf
(au moins jusqu'à ce que vous installiez un autre service qui génère et gère resolve.conf
). nameserver 127.0.0.53
n'est plus nécessaire, changez-le en nameserver 127.0.0.1
.
Vous devriez maintenant être en mesure de configurer dnsmasq
pour résoudre votre TLD à l'adresse que vous souhaitez. Créer /etc/dnsmasq.d/test.conf
avec address=/.test/127.0.0.1
.
Redémarrez les deux, dnsmasq
y NetworkManager
( sudo servicectl restart dnsmasq.service
, sudo servicectl restart network-manager.service
).
developer@ubuntu:~$ dig hi_eric.test
; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> hi_eric.test
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59442
;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;hi_eric.test. IN A
;; ANSWER SECTION:
hi_eric.test. 0 IN A 127.0.0.1
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Jul 01 07:30:46 PDT 2018
;; MSG SIZE rcvd: 46
L'inconvénient est que cela m'a obligé à utiliser des serveurs DNS codés en dur pour le trafic sortant (parce que pour l'instant .test
est le seul domaine que votre serveur peut résoudre). J'ai dû ajouter resolv-file=/etc/resolve.dnsmasq
a /etc/dnsmasq.conf
et créer /etc/resolve.dnsmasq
avec les serveurs DNS publics de Google :
nameserver 8.8.8.8
nameserver 8.8.4.4
Redémarrer dnsmasq
la dernière fois ( sudo servicectl restart dnsmasq.service
). Maintenant, tout, plus ou moins, devrait fonctionner correctement. .test
est résolu à 127.0.0.1
tout le reste est résolu par les serveurs DNS ouverts de Google. Vous pouvez modifier dnsmasq
configuration, augmenter la taille du cache et ainsi de suite.
Comme je l'ai dit, je ne suis pas sûr à 100% de cette solution (et je suis sûr à 99% qu'il existe une meilleure solution), mais elle fonctionne. J'espère que quelqu'un d'autre corrigera tout ce que j'ai fait de mal et vous guidera vers une solution meilleure et plus stable pour résoudre votre (et le mien !) problème. Merci !