Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Résolution de noms de machines locales

8 réponses
Avatar
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

8 réponses

Avatar
Sergio
Le 28/05/2011 21:44, Rémi Moyen a écrit :
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.



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
Avatar
Erwan David
Sergio écrivait :

Le 28/05/2011 21:44, Rémi Moyen a écrit :
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.



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...



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é
Avatar
Francois Lafont
Bonjour,

Le 28/05/2011 21:44, Rémi Moyen a écrit :

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).



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. ;-)

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).



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
Avatar
Jean
Bonjour,

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 :

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 !
Avatar
Francois Lafont
Le 29/05/2011 19:15, Pascal Hambourg a écrit :

Oui mais non. Il ne s'agit pas de résolution mDNS (multicast DNS) mais
DNS classique, nécessitant un serveur DNS.



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
Avatar
Rémi Moyen
Le 29/05/2011 09:31, Sergio a écrit :
Le 28/05/2011 21:44, Rémi Moyen a écrit :
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.



C'est le gros mystère des box :
Je suis passé de Free à SFR.

Donc, le mystère semble dans la box...



En l'occurrence, je ne suis pas en France (et pour grand malheur, ici on
en est encore à l'ADSL pas vraiment dégroupé, avec des débits variables
entre pourris et minables...), donc je n'ai pas beaucoup d'espoir de
trouver un truc spécifique à mon FAI sur ce forum, c'est pour ça qu'ici
je parle uniquement des mes machines...
--
Rémi Moyen
Avatar
Emmanuel Florac
Le Sun, 29 May 2011 19:30:22 +0200, Francois Lafont 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.



Non, avahi modifie bien le /etc/resolv.conf, et d'ailleurs j'ai trouvé
qu'il foutait un bordel innommable et je le désactive systématiquement...

--
Ne pas savoir de quoi on parle est un avantage dont il ne faut pas
abuser.
R.Debray
Avatar
Rémi Moyen
Le 29/05/2011 18:30, Francois Lafont a écrit :
Le 29/05/2011 19:15, Pascal Hambourg a écrit :

Oui mais non. Il ne s'agit pas de résolution mDNS (multicast DNS) mais
DNS classique, nécessitant un serveur DNS.



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.



C'est l'impression que j'ai aussi. Je cros que mDNS ignore royalement ce
que resolv.conf peut contenir. Il semblerait qu'il y ait de bonnes
raisons pour ça (entre autre le fait que certains systèmes ont des
choses en .local sans passer par mDNS mais par un vrai DNS et que les
deux cohabitent assez mal, voire pas du tout).

Mais du coup, mDNS ne résout que les adresses qui sont explicitement en
.local, et rien d'autre, ce qui ne m'arrange pas.

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.



D'après ce que j'ai compris, c'est plutôt que le système résout par
/etc/hosts avant de demander à mDNS (voir /etc/nsswitch.conf, il y a une
ligne "hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4"
qui indique de regarder d'abord les fichiers avant de demander à mDNS).

Pour répondre à ton autre remarque :

Franchement, pour 2 machines, moi j'utiliserais /etc/hosts sans hésiter.



C'est vrai, en fin de compte c'est le plus simple. Mais je suis quand
même un peu vexé, sur le principe, de ne pas pouvoir me contenter de
avahi/mDNS. À la limite, si c'est pour mettre quelque chose dans
/etc/hosts, alors je vire complètement mDNS et je ne m'embête plus du
tout, mais c'est un peu bête. Sachant que ce genre de config, je la
comprends au moment où je la fais, je sais d'avance que si dans 1 ou 2
ans je rajoute une machine (ou je renomme une existante parce qu'elle
change de pièce ou de configuration), j'aurais complètement oublié qu'il
fallait configurer aussi /etc/hosts (avahi, sur ma Debian en tout cas,
était déjà installé).

Enfin bon, disons qu'en plus de l'aspect d'avoir quelque chose qui
marche, j'aime bien aussi comprendre des choses un peu plus génériques
sur mon système ou les réseaux...
--
Rémi Moyen