Résolution de noms de machines locales
Le
Rémi Moyen
Bonjour,
[C'est un peu long, mais j'ai essayé de donner le plus de détails
possibles sur ce que je cherche à faire et ce que j'ai essayé Pour
ceux qui ont la flemme de lire jusqu'au bout, je n'arrive pas à faire
"ping machine1" alors que "ping machine1.local" marche.]
J'essaie de configurer mon réseau local (2-3 machines Linux, toutes
connectées à modem ADSL) pour qu'elles puissent communiquer entre elles.
Les machines sont configurées en DHCP, le modem faisant aussi serveur
DHCP, et elles ont toujours la même IP (fixée dans les paramètres du
modem), 10.0.0.2, 10.0.0.3, etc. (10.0.0.1 étant le modem).
Sans rien faire de plus, chaque machine peut parfaitement accéder aux
autres en utilisant l'IP (i.e. ping 10.0.0.3 marche très bien), et peut
aussi parfaitement résoudre des noms hors de mon réseau (genre
www.google.com). Là où ça coince, c'est pour résoudre les noms de
machines locales (i.e. ping machine1).
Le modem est un D-Link quelque-chose, je n'arrive pas à trouver le
modèle exact vu que mon FAI a soigneusement tout caché, aussi bien sur
le modem (l'objet physique) que sur la page web de configuration Mais
en cherchant un peu sur le web, il me semble bien qu'il ne peut pas
faire serveur DNS (il fait suivre les requêtes au serveur DNS de mon
FAI, mais ne peut pas faire lui-même DNS pour mon réseau local). Je n'ai
rien vu dans les pages de configuration à ce sujet, donc je pense en
effet que ça n'est pas faisable.
Je ne veux pas installer de serveur DNS sur une autre machine parce que
premièrement je trouve que c'est lourd et deuxièmement je n'ai pas une
machine unique qui soit allumée en permanence (ou en tout cas, qui le
soit avant n'importe quelle autre), donc il faudrait un serveur par
machine
J'ai déjà une solution qui marche : mettre à la main les autres machines
dans /etc/hosts (par exemple "10.0.0.3 machine2" sur machine1, et
vice-versa), mais je n'aime pas trop parce que ça n'est pas très souple
si jamais un jour je change des choses (une nouvelle machine qui arrive
ou autre).
Bon, ça marche, donc je m'en contente pour le moment, mais par
perfectionnisme et curiosité, je cherche une meilleure solution.
Après pas mal de recherches, je suis tombé sur avahi qui, de ce que j'ai
compris, est fait exactement pour ça : chaque machine publie son nom et
les autres écoutent et se mettent à jour automatiquement. J'ai installé
(en fait, j'ai installé nss-mdns qui est la brique qui ne l'était pas
déjà) et maintenant ça marche quand je fais un "ping machine1.local".
Notez le ".local" : si je ne le mets pas, ça ne marche plus !
Ma question est donc, est-ce que je peux faire en sorte que "ping
machine1" tout court (sans .local) marche ?
J'ai essayé de jouer avec le /etc/resolv.conf (domain et search), mais
ça ne change strictement rien (ça a bien un effet pour les résolutions
de nom en dehors de mon réseau, par exemple "search com" fait que "ping
www.google" contacte www.google.com, mais "search local" ou "domain
local" n'a aucun effet sur les recherches sur des noms en .local).
La page web de nss-mdns indique que dans les versions récentes, nss-mdns
n'utilise plus les informations domain/search de resolv.conf, et
pourtant j'aurais dit que c'était ça qu'il fallait faire. Ils disent que
"it created a lot of problems and was never recommended anyway", mais
ils ne disent pas quelle solution de remplacement utiliser (à part
réactiver l'option, en allant à l'encontre de leurs conseils !).
Est-ce que quelqu'un sait si je suis bien sur la bonne piste, et comment
je peux faire pour nss-mdns résolve correctement les noms sans .local ?
Merci d'avance !
--
Rémi Moyen
[C'est un peu long, mais j'ai essayé de donner le plus de détails
possibles sur ce que je cherche à faire et ce que j'ai essayé Pour
ceux qui ont la flemme de lire jusqu'au bout, je n'arrive pas à faire
"ping machine1" alors que "ping machine1.local" marche.]
J'essaie de configurer mon réseau local (2-3 machines Linux, toutes
connectées à modem ADSL) pour qu'elles puissent communiquer entre elles.
Les machines sont configurées en DHCP, le modem faisant aussi serveur
DHCP, et elles ont toujours la même IP (fixée dans les paramètres du
modem), 10.0.0.2, 10.0.0.3, etc. (10.0.0.1 étant le modem).
Sans rien faire de plus, chaque machine peut parfaitement accéder aux
autres en utilisant l'IP (i.e. ping 10.0.0.3 marche très bien), et peut
aussi parfaitement résoudre des noms hors de mon réseau (genre
www.google.com). Là où ça coince, c'est pour résoudre les noms de
machines locales (i.e. ping machine1).
Le modem est un D-Link quelque-chose, je n'arrive pas à trouver le
modèle exact vu que mon FAI a soigneusement tout caché, aussi bien sur
le modem (l'objet physique) que sur la page web de configuration Mais
en cherchant un peu sur le web, il me semble bien qu'il ne peut pas
faire serveur DNS (il fait suivre les requêtes au serveur DNS de mon
FAI, mais ne peut pas faire lui-même DNS pour mon réseau local). Je n'ai
rien vu dans les pages de configuration à ce sujet, donc je pense en
effet que ça n'est pas faisable.
Je ne veux pas installer de serveur DNS sur une autre machine parce que
premièrement je trouve que c'est lourd et deuxièmement je n'ai pas une
machine unique qui soit allumée en permanence (ou en tout cas, qui le
soit avant n'importe quelle autre), donc il faudrait un serveur par
machine
J'ai déjà une solution qui marche : mettre à la main les autres machines
dans /etc/hosts (par exemple "10.0.0.3 machine2" sur machine1, et
vice-versa), mais je n'aime pas trop parce que ça n'est pas très souple
si jamais un jour je change des choses (une nouvelle machine qui arrive
ou autre).
Bon, ça marche, donc je m'en contente pour le moment, mais par
perfectionnisme et curiosité, je cherche une meilleure solution.
Après pas mal de recherches, je suis tombé sur avahi qui, de ce que j'ai
compris, est fait exactement pour ça : chaque machine publie son nom et
les autres écoutent et se mettent à jour automatiquement. J'ai installé
(en fait, j'ai installé nss-mdns qui est la brique qui ne l'était pas
déjà) et maintenant ça marche quand je fais un "ping machine1.local".
Notez le ".local" : si je ne le mets pas, ça ne marche plus !
Ma question est donc, est-ce que je peux faire en sorte que "ping
machine1" tout court (sans .local) marche ?
J'ai essayé de jouer avec le /etc/resolv.conf (domain et search), mais
ça ne change strictement rien (ça a bien un effet pour les résolutions
de nom en dehors de mon réseau, par exemple "search com" fait que "ping
www.google" contacte www.google.com, mais "search local" ou "domain
local" n'a aucun effet sur les recherches sur des noms en .local).
La page web de nss-mdns indique que dans les versions récentes, nss-mdns
n'utilise plus les informations domain/search de resolv.conf, et
pourtant j'aurais dit que c'était ça qu'il fallait faire. Ils disent que
"it created a lot of problems and was never recommended anyway", mais
ils ne disent pas quelle solution de remplacement utiliser (à part
réactiver l'option, en allant à l'encontre de leurs conseils !).
Est-ce que quelqu'un sait si je suis bien sur la bonne piste, et comment
je peux faire pour nss-mdns résolve correctement les noms sans .local ?
Merci d'avance !
--
Rémi Moyen

Poser une question


C'est le gros mystère des box :
Je suis passé de Free à SFR.
Avant, sous Free "ping machine1" ne marchait pas alors que "ping machine1.local" marchait (ping ou tout autre commande...).
Maintenant, les 2 fonctionnent, sans que j'ai touché quoi que ce soit aux configurations.
Donc, le mystère semble dans la box...
--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org
Il me semble que les neufbox ont un DNS local. Les freebox n'en ont pas.
--
Le travail n'est pas une bonne chose. Si ça l'était,
les riches l'auraient accaparé
Le 28/05/2011 21:44, Rémi Moyen a écrit :
Franchement, pour 2 machines, moi j'utiliserais /etc/hosts sans hésiter.
C'est simple et efficace, ça me paraît être la solution la mieux adaptée
même pour un perfectionniste. ;-)
C'est étrange. Chez moi, avec une Debian Squeeze, l'option domain fait
exactement ce que tu souhaites. Voilà ce que j'ai :
1) Si mon /etc/resolv.conf ressemble à ça :
#-------------------------
# Les DNS du FAI Free:
nameserver 212.27.40.240
nameserver 212.27.40.241
#-------------------------
Alors j'ai ça :
$ host -v toto
Trying "toto"
Host toto not found: 3(NXDOMAIN)
Received 97 bytes from 212.27.40.240#53 in 39 ms
2) Si mon /etc/resolv.conf ressemble à ça :
#-------------------------
domain local
# Les DNS du FAI Free:
nameserver 212.27.40.240
nameserver 212.27.40.241
#-------------------------
Alors j'ai ça :
$ host -v toto
Trying "toto.local" # <-----------
Trying "toto"
Host toto not found: 3(NXDOMAIN)
Received 97 bytes from 212.27.40.240#53 in 22 ms
On voit bien qu'il y a tentative de résolution du nom toto.local en premier.
Dernière remarque : des fois un domaine en .local ça peut poser des
problèmes (j'avais déjà eu des problèmes sous Ubuntu avec ça). On dit
que pour un domaine local, il faut toujours utiliser le suffixe
.invalid. Peut-être que ça vaudrait le coup de tester avec un nom de
domaine du genre .chezmoi.invalid pour voir ?
--
François Lafont
Pour relier mes 2 machines en réseau derrière un routeur, j'utilise SSH
et nautilus. Pour ce faire, SSH ubuntu dans google et tu tombes sur la
doc. Elle est bien faite.
Cordialement,
A+ Jean
Le Sat, 28 May 2011 20:44:01 +0100, Rémi Moyen a écrit :
Ah, pardon. En effet, je viens de regarder ce fameux mDNS et c'est une
autre histoire en effet. Alors du coup, tous les réglages qu'on peut
faire dans /etc/resolv.conf seront sans effet car cela agit sur les
résolutions DNS uniquement, c'est ça ? Désolé. Je suis allé trop vite en
besogne.
En revanche, les résolutions mDNS ont l'air d'être sensibles au contenu
de /etc/hosts d'après les explications de l'OP.
--
François Lafont