Acheminer le TLD complet (* .dev par exemple) vers 127.0.0.1

29

À des fins de développement, je souhaite que toutes les demandes DNS vers le TLD .dev soient transmises à mon propre PC.

Le fichier hosts ne suffit pas. J'utilise plusieurs domaines et également plusieurs sous-domaines. Je devrais ajouter une ligne pour chaque combinaison.

J'ai lu qu'un redirecteur DNS comme DNSmasq peut être utilisé pour faire le travail (par exemple, comme décrit ici ). De plus, ce logiciel est déjà installé sur Ubuntu 12.10.

Le problème est que je ne vois pas comment et où je dois configurer DNSmasq, c'est-à-dire où je dois mettre cette ligne:

address=/dev/127.0.0.1
Roel van Duijnhoven
la source
1
Vous ne voudrez peut-être pas l'utiliser .devtel que Google l'a pris. Je cherche toujours à quoi ils vont l'utiliser et s'ils prévoient que des personnes ordinaires s'y connectent ou uniquement des employés, mais vous ne voudrez peut-être pas rediriger tous les accès au cas où ce serait le premier, à moins qu'il ne s'agisse simplement d'une boîte de test qui ne se connectera jamais à des hôtes externes.
trysis

Réponses:

18

Le dnsmasq autonome complet (serveur DHCP et DNS) n'est pas installé par défaut dans Ubuntu 12.04 et 12.10, mais un package appelé dnsmasq-base est installé par défaut dans Ubuntu Desktop 12.04 et 12.10. Le package dnsmasq-base contient le binaire dnsmasq et est utilisé par NetworkManager.

Pour faire ce que vous voulez, vous devrez utiliser dnsmasq comme serveur DNS de mise en cache. Tu dois:

  • Installer dnsmasq sudo apt-get installer dnsmasq
  • Modifiez vos paramètres réseau afin que votre ordinateur s’utilise comme serveur DNS.
  • Apportez les modifications aux fichiers de configuration:

Créez /etc/dnsmasq.d/dev-tldavec ces contenus:

local=/dev/

address=/dev/127.0.0.5

La première commande indique que les *.devdemandes ne peuvent pas être transmises à votre véritable serveur DNS. Le second dit se *.devrésout à 127.0.0.5qui est localhost.

  • Redémarrez le service dnsmasq (pas le gestionnaire de réseau)
Javier Rivera
la source
Merci! C'était extrêmement utile que j'ai appris que le DNSMasq présent n'était pas la vraie affaire. Après avoir installé le package complet et l'avoir configuré comme je l'ai décrit avant de le faire fonctionner. :)
Roel van Duijnhoven
1
Je préfère l'autre réponse pour les installations de bureau récentes. Pour les installations de bureau récentes, vous exécuteriez deux instances dnsmasq de cette façon. Votre réponse pourrait être très utile dans les configurations non-NetworkManager, les anciennes (n'utilisant pas dnsmasq) ou même les installations de serveur!
gertvdijk
Oui, une autre réponse est meilleure depuis Ubuntu 12.10.
BenjaminRH
21

Dans Ubuntu 12.10 ou version ultérieure, vous pouvez le faire avec dnsmasq exécuté par NetworkManager.

  1. Créez le répertoire mkdir /etc/NetworkManager/dnsmasq.ds'il n'existe pas déjà.

    sudo mkdir /etc/NetworkManager/dnsmasq.d
    
  2. Mélanger la ligne suivante dans /etc/NetworkManager/dnsmasq.d/dev-tld.

    address=/dev/127.0.0.1
    
  3. (Ubuntu 12.10) Redémarrez NetworkManager.

    sudo service network-manager restart
    
  4. (Ubuntu> 13.04) Redémarrez Dnsmasq.

    sudo service dnsmasq restart
    
  5. Profitez de la génialité.

entrez la description de l'image ici

jrg
la source
1
Merci à AbrahamVanHelpsing pour le lien vers le wiki arch sur la façon de le faire.
2012
Après avoir suivi vos étapes, j'arrive à voir "hôte inconnu" après avoir exécuté un ping. Dois-je configurer / activer DNSMasq à un autre endroit? Ou configurer mes propriétés réseau d'une manière différente? Merci!
Roel van Duijnhoven
Intéressant. ça se passe bien pour moi.
jrg
Ah, @RoelvanDuijnhoven - exécutez-vous 12.10 ou 12.04? Fonctionne très bien pour moi le 12.10.
jrg
Je cours le 12.10. Mais je dois mentionner que j'ai essayé de modifier un fichier de configuration avant de poser une question ici. Il est possible que ces modifications atténuent votre solution. La solution de Javier Rivera a cependant fait l'affaire!
Roel van Duijnhoven
1

Les éléments suivants ont fonctionné pour moi dans Ubuntu 16.04:

  1. Installer dnsmasq

    sudo apt-get -y install dnsmasq
    
  2. Modifier le dnsmasq.conffichier:

    sudo nano /etc/dnsmasq.conf
    
  3. Ajoutez votre commande:

    address=/dev/127.0.0.1
    

    Pour le caractère générique (*), vous pouvez utiliser le point (.) Puis le dnsmasq pour résoudre WHATEWER_YOU_PUT_HERE.yourmachine.yourdomainle même IP. Par exemple,address=/.localhost.dev/127.0.0.1

  4. Redémarrez le service dnsmasq:

    sudo /etc/init.d/dnsmasq restart
    
Jeril
la source
1

Je viens d'installer un nouveau 19.04 et la seule façon de le faire fonctionner était de le désactiver systemd-resolvedet de l' NetworkManagerutiliser à la dnsmasqplace pour DNS. NetworkManagera intégré la prise en charge dnsmasqet le dnsmasq-basepackage est installé par défaut.

Je signale plusieurs domaines à différentes machines virtuelles comme *.customerX.testà 192.168.33.10et *.productY.testà 192.168.33.20et ainsi de suite. Je n'utiliserais *.devplus mais plutôt l'un des domaines de premier niveau réservés .

Solution

  1. Désactiver systemd-resolved

    sudo systemctl disable systemd-resolved.service
    sudo systemctl stop systemd-resolved.service
    sudo rm /etc/resolv.conf
    
  2. Modifier /etc/NetworkManager/NetworkManager.confà utiliser dnsmasqpour DNS.

    [main]
    dns=dnsmasq
    
  3. Mettez la dnsmasqconfiguration dans/etc/NetworkManager/dnsmasq.d/test-tld.conf

    address=/test/127.0.0.1
    address=/customerX.test/192.168.33.10
    
  4. et enfin redémarrer NetworkManagerce qui va générer un nouveau/etc/resolv.conf

    sudo systemctl restart network-manager.service
    
domo
la source