Utilisation de DNSMasq pour la résolution du nom d'hôte local


9

Je travaille à la mise en place d'un intranet domestique pour moi et mes colocataires. Mon idée est que nous serons en mesure de stocker des choses comme les factures de services publics passées dans un endroit plus accessible qu'un tiroir dans la cuisine, etc. son adresse IP, je peux accéder aux pages servies sur le Pi. Puisque je fais ce projet davantage pour en savoir plus sur le réseautage et pour fournir un service à mon appartement, j'ai pensé que ce serait cool si mon réseau pouvait fournir une résolution de nom d'hôte pour mon LAN. Donc, plutôt que de pointer mon navigateur vers 192.168.1.151l'adresse IP du Pi, je pourrais le pointer vers oberon(son nom d'hôte) et afficher les pages Web desservies par le Pi.

Maintenant, je savais que je n'étais pas la première personne à vouloir faire ça, alors j'ai commencé par googler. Cette question, également sur Unix et Linux, m'a énormément aidé: comment rendre une machine accessible à partir du LAN en utilisant son nom d'hôte . À ce stade, j'ai tout essayé dans la réponse vérifiée. J'ai pensé à utiliser le hostsfichier, mais cela signifierait que je devrais dire à mes colocataires de configurer leurs machines, ce que je ne veux pas qu'ils aient à faire. J'ai essayé de réserver un bail DHCP pour le Pi sur mon routeur (un NETGEAR WNR1000v2 (alias un N150)), et bien que la réservation ait fonctionné, la résolution du nom d'hôte ne fonctionne pas. Ce genre de me frustre parce que j'ai dit à mon routeur l'IP du Pi et son nom d'hôte, mais il ne fournit toujours pas ces informations aux clients sur mon LAN.

Avec ces deux méthodes ne fonctionnant pas, j'ai décidé de l'installer dnsmasqsur le Pi. Cela semblait simple à configurer et je serais heureux d'apprendre un nouvel outil. Je l'ai installé et le fait fonctionner très bien (il semble). Je peux digou nslookuples surnoms du Pi (que j'ai définis /etc/hostspour oberonet homenet) et obtenir les résultats corrects. Je peux faire la même chose pour les noms Internet comme yahoo.comet obtenir des réponses correctes car j'ai configuré Google 8.8.8.8et 8.8.4.4comme serveurs de sauvegarde dans /etc/dnsmasq.conf. Regarde ça:

me@oberon~$ dig oberon

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> oberon
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10787
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;oberon.                                IN      A

;; ANSWER SECTION:
oberon.                 0       IN      A       192.168.1.151

;; Query time: 10 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Oct  6 18:59:18 2013
;; MSG SIZE  rcvd: 40

Notez que SERVERis 127.0.0.1: oberonrecherche sa propre adresse IP sur lui-même. C'est ce que je m'attendais à voir. La sortie est la même si je le fais dig oberon @localhost. En raison de cette sortie, je pense que cela dnsmasqfonctionne bien. Donc, pour l'amener au niveau supérieur, je veux que tous les clients de mon réseau local puissent saisir oberonleur navigateur et être redirigés vers oberonla page d'index de. Pour cela, je sais que je dois configurer mon routeur (excuses si cela s'éloigne du territoire strictement Unix et Linux).

J'ai un Netgear WNR1000v2 que je connais assez bien. J'ai configuré la redirection de port afin que je puisse SSH dans le Pi, et j'ai également fouillé dans d'autres paramètres. Je sais qu'avant de commencer ce projet, j'obtenais mes serveurs DNS de mon FAI, mais maintenant je veux utiliser ces serveurs DNS principalement mais aussi 192.168.1.151comme dernier contrôle. J'ai donc changé la configuration DNS de mon routeur comme suit:

Nouvelle configuration DNS de mon routeur.  Faites-moi confiance lorsque je dis que les deux premières entrées sont fournies par mon FAI

Donc, avec cette configuration, je m'attendais à pouvoir le faire nslookup oberonsur mon bureau (Windows) et à obtenir un résultat de 192.168.1.151. Mais cela ne se produit pas. C'est ce qui arrive:

C:\Users\me>nslookup oberon
Server:  UnKnown
Address:  fe80::226:f2ff:fefa:bea

*** UnKnown can't find oberon: Non-existent domain

La réinitialisation ou dnsflushingla carte réseau sur ma machine Windows ne change rien.

Maintenant, voici pourquoi je me déchire les cheveux ici:

C:\Users\me>nslookup oberon 192.168.1.151
Server:  oberon.lan
Address:  192.168.1.151

Name:    oberon
Address:  192.168.1.151

De toute évidence, dnsmasqfonctionne très bien. Si je dis à ma boîte Windows d'utiliser 192.168.1.151pour résoudre le nom oberon, tout va bien (le .landomaine faisait partie de la configuration de dnsmasq, donc je m'attendais à le voir là-bas). Si je pouvais simplement demander à mon routeur de dire à ma machine Windows d'utiliser 192.168.1.151quand elle fait des requêtes DNS, je devrais être bon!

Il me semble donc que le problème est dans mon routeur, mais je ne peux pas comprendre quoi faire au-delà de changer les serveurs DNS pour inclure 192.168.1.151comme je l'ai déjà. Quelqu'un peut-il m'aider? J'essaierai de fournir toute information complémentaire souhaitée.


Essayez de mettre le pi comme premier serveur DNS, ça marche alors?
terdon

1
Le routeur est le bon endroit pour le faire. Si, pour une raison quelconque, vous n'arrivez pas à faire en sorte que votre routeur serve un nom pour le Pi, exécuter dnsmasq sur le Pi et faire en sorte que le routeur serve le Pi comme serveur DNS fonctionnerait. Il semble que votre problème soit de configurer correctement votre routeur.
Gilles 'SO- arrête d'être méchant'

Êtes-vous en train de revoir le bail DHCP sur le client après avoir mis à jour les paramètres DNS sur le routeur? La configuration DNS est envoyée dans le bail DHCP, il doit donc obtenir un nouveau bail pour obtenir les nouveaux paramètres. Comme solution alternative, vous pouvez également examiner mDNS / zeroconf / avahi.
Patrick

Réponses:


2

Votre problème réside dans votre mauvaise compréhension de la façon dont ces serveurs DNS sont utilisés, je ne connais pas les détails exacts de la méthode utilisée par Windows pour choisir le serveur DNS à interroger, mais je parie que son principal> secondaire> tertiaire / toujours /. Et même si ce n'était pas le cas et qu'il s'agissait d'un tournoi à la ronde, vous allez toujours interroger un serveur inutile 2 fois sur 3.

Ce qui se passera, c'est que le serveur principal sera interrogé. Si cela arrive à expiration, ce qui peut être une seconde ou deux, le prochain serveur sera interrogé. Le DNS n'est pas un système "consensuel", si l'un des serveurs distants est interrogé, il finira par découvrir le résultat que votre nom d'hôte n'existe PAS, de son point de vue en tant que serveur DNS Internet.

Vous avez besoin de votre propre DNS local comme serveur DNS principal. Les autres feraient des serveurs de sauvegarde appropriés mais j'envisagerais simplement de les supprimer complètement.

Notez également que votre DNS inversé (recherche d'IP en nom) se résout en "hostname.lan", mais vos tests de résolution en aval ne concernent que le nom d'hôte. Vous devriez également avoir une résolution directe pour hostname.lan installée quelque part. Bien qu'il puisse y avoir de nombreuses recherches directes "nom à adresse" pour un hôte, il y a une attente qu'il y ait une recherche inversée de l'IP vers un nom, qui à son tour a un nom correspondant à cet enregistrement IP. Ce n'est pas toujours critique et fait parfois pleurnicher les fichiers journaux, mais certaines choses y sont plus sensibles que d'autres.

Aussi, n'oubliez pas de supprimer toute la bodgery de fichier d'hôtes que vous avez mise en place une fois que tout fonctionne (je ne sais pas si c'est pertinent pour dnsmasq, ne l'avez jamais utilisé, j'ai une configuration similaire mais plus compliquée en place en utilisant le nom ISC-BIND serveur, que vous pouvez configurer le transfert vers d'autres serveurs comme vous l'utilisez, ou simplement l'utiliser comme un serveur DNS sans transfert qui effectue lui-même la résolution du nom complet - ce que j'ai configuré).

Inutile de dire que, comme vous avez d'abord spéculé, vous êtes très loin d'être le seul à faire cette configuration, presque tous les LAN d'entreprise raisonnablement développés et un grand nombre de LAN domestiques surdéveloppés auront ce type de configuration en place.


1
Merci pour votre aide iain! Je comprends ce que vous dites sur le fait que DNS n'est pas un système consensuel, j'ai donc défini le Pi sur le serveur DNS principal de mon routeur. J'ai ensuite renouvelé le bail DHCP sur ma machine Windows. Cependant, nslookup oberonne fonctionne toujours pas. Une chose que je n'ai pas mentionnée dans le texte de mon message d'origine, c'est qu'en cas d' nslookupéchec, il indique que le serveur qu'il a utilisé était une fe80adresse IPv6 - que je sais être une adresse de lien local réservée. Mais je ne sais pas ce que cela signifie pour le DNS. Ma boîte Windows s'interroge-t-elle? dnsflushne modifie pas ce comportement.
c.anna

Et pour ce qu'elle vaut, la résolution du nom d'hôte LAN ne fonctionne pas non plus sur mes appareils iOS. Je ne les ai pas encore mentionnés parce que j'ai beaucoup plus de pouvoir introspectif avec Windows, mais si mes problèmes venaient vraiment strictement de Windows, je ne m'attendrais pas à ce que ces appareils aient le même problème.
c.anna

De plus, pour dissiper vos préoccupations concernant le .landomaine, j'ai configuré dnsmasqpour développer automatiquement les noms d'hôtes simples à ajouter .lan. Running nslookup oberon.lan 192.168.1.151renvoie le résultat attendu deName: oberon.lan Address: 192.168.1.151
c.anna

Je me demande s'il y a un "windowsism" au travail ou quelque chose, nommer vos hôtes directement sous le domaine de premier niveau ('oberon.') Est un peu étrange, oberon.lan a beaucoup plus de sens. Une chose à savoir est que les suffixes de domaine et les «domaines de recherche» sont souvent ajoutés à un nom pour le résoudre, par exemple «oberon» pourrait être résolu et trouvé comme «oberon.lan» si lan est dans les domaines de recherche. Cependant, les requêtes ci-dessus ne semblent pas montrer que c'est le cas, la fouille a spécifiquement la période de fin sur les noms d'hôte, mais soyez très conscient de cela lors des tests!
iain

Hmm après avoir réparé le DNS principal, vous devrez redessiner les fenêtres (la réinitialisation de l'adaptateur devrait le faire), puis vérifiez que ipconfig /allle bon serveur DNS est utilisé, si c'est vrai, vous devrez peut-être flushdns. Mais je ne peux penser à rien d'autre, ça devrait marcher.
sourcejedi

1

Peut-être un peu tard, mais la désactivation d'ipv6 sur mon adaptateur sans fil a fait l'affaire.


Upvote: Toujours une bonne idée. A moins que le système ne soit nu et ne l'exige. Et jusqu'à présent (septembre 2017), il y a très peu d'équipements pour les particuliers qui répondent à cette catégorie, voire pas du tout.
SDsolar
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.