Perché le macchine Windows possono risolvere i nomi locali quando Linux non può?


18

Ho una piccola rete con macchine Windows e Linux collegate a un router D-Link DIR-825.

Le macchine Windows sulla rete possono raggiungere tutte le altre macchine per nome, mentre le macchine Linux possono raggiungere altre macchine per indirizzo IP.

Posso vedere tutte le macchine elencate con i nomi e i loro indirizzi DHCP assegnati nell'elenco di stato del client DHCP nell'interfaccia di amministrazione web del router.

Perché le macchine Linux non riescono a trovare altre macchine per nome mentre Windows non ha problemi a trovare le macchine Linux?


2
Come viene eseguita la risoluzione dei nomi? DNS? Hai un suffisso di ricerca configurato?
Shane Madden

Tutte le macchine usano DHCP, connesse al router D-Link dove sembrano registrarsi e ciò è probabilmente sufficiente per Windows per trovare tutte le macchine. Ma le macchine Linux richiedono davvero un server DNS locale diverso dal router?
Per Salmi,

Non sei sicuro di quel particolare router, ma la maggior parte dei router consumer non integra i client DHCP nel loro servizio DNS interno. La risposta di Joe è probabilmente il tuo colpevole.
Shane Madden

Quindi le macchine Linux rispondono ai messaggi LLMNR ma non lo usano da sole per trovare altre macchine?
Per Salmi,

Risposte:


32

Non sono un esperto di reti e sto anche ricercando MOLTE risposte in questo argomento. I miei risultati attuali sono:

  • Windows utilizza nomi NetBIOS e tale protocollo, essendo un broadcast, consente loro di trovarsi senza alcun server centrale.

  • Le macchine Linux nelle distribuzioni moderne usano nativamente un protocollo chiamato Avahi , che è anche un protocollo di trasmissione indipendente dal server. Le macchine della rete locale hanno un suffisso .local, quindi puoi eseguire il ping da Linux a Linux usandoping hostname.local o vederle con il avahi-discoverpacchetto. alcune app in Gnome usano avahi per elencare i computer nella rete (ad esempio, il Visualizzatore desktop remoto)

  • L'installazione di SAMBA su una macchina Linux gli assegnerà un nome NetBIOS (o, più tecnicamente, farà in modo che una macchina Linux si faccia pubblicità nelle richieste di trasmissione con il suo nome NetBIOS, che di default è il nome host) e che consente alle macchine Windows di trovare Linux quelli .

  • Gotcha: Anche se le macchine Linux con Samba risponderanno alle richieste del protocollo NetBIOS, con impostazioni predefinite in distro come Ubuntu non utilizzerà NetBIOS come metodo per risolvere i nomi, ed è per questo che le macchine Linux non possono "vedersi" tra loro o Windows macchine . Per questo, è necessario modificare il /etc/nsswitch.conffile e aggiungere winsall'elenco in questa riga:

    hosts: files mdns4_minimal [NOTFOUND=return] dns wins mdns4

  • Si potrebbe essere necessario installare winbind(e, se non viene installato automaticamente, libnss-winbind) pacchetto per quanto sopra al lavoro.

  • Quindi, per il problema di visibilità, installa Samba su tutte le macchine Linux (e modifica anche /etc/nsswitch.conf per abilitare la risoluzione dei nomi NetBIOS), oppure installa il supporto Avahi nelle macchine Windows.

  • Per quanto riguarda la condivisione di file, Samba offre funzionalità di condivisione di file di macchine Linux con Windows. Non è necessario modificare /etc/nsswitch.conf per le macchine Linux per vedere le cartelle condivise tra loro e Windows (e viceversa) nella sezione "Rete" di Nautilus

Spero che questo abbia aiutato! : D


2
per la nsswitch.congcosa: se ping HOSTNAMEti dà un errore di sistema, questo è il segnale che è necessario il pacchetto libnss-winbind.
Michael Stum

18

Per impostazione predefinita, senza un server DNS, Windows può utilizzare NetBIOS (un protocollo di risoluzione dei nomi Microsoft) per scoprire i nomi di altri sistemi Windows locali nella propria rete. Come menzionato in questa risposta , sembra che sia necessario impostare SAMBA (o almeno winbind) sul lato Linux. Ecco un insieme di istruzioni di base :

Per abilitare la risoluzione dei nomi netbios di Windows da un computer Linux, assicurarsi che Samba sia installato (sebbene il servizio smb non debba essere in esecuzione). La suite Samba include winbind, che consente di risolvere i nomi host di Windows. Quindi modifica /etc/nsswitch.conf e cambia questa riga:

hosts: files dns

a questo:

hosts: files dns wins

Quindi prova eseguendo il ping del nome computer del computer Windows sulla LAN:

$ ping windowsbox

A proposito, questo non ha nulla a che fare direttamente con WINS. WINS è un server NetBIOS generalmente utilizzato in reti più grandi per ridurre il traffico di trasmissione, fornire una piattaforma di risoluzione dei nomi centralizzata legacy e, infine, consentire ai sistemi su reti diverse di conoscere reciprocamente la mappatura NetBIOS nome-IP.

Un'alternativa a SAMBA sarebbe quella di configurare un server DNS e assicurarsi che gli aggiornamenti DNS dinamici siano configurati o che DHCP possa registrare i record DNS.


3

Molto probabilmente LLMNR .


1
Quindi farebbe sì che le macchine Windows trovassero le scatole Linux usando le informazioni registrate DHCP del router? Ma Linux non supporta l'uso dei nomi registrati del router per trovare qualcosa?
Per Salmi,

3
Sebbene ciò possa teoricamente rispondere alla domanda, sarebbe preferibile includere qui le parti essenziali della risposta e fornire il collegamento come riferimento.
Mark Henderson

Non sembra che LLMNR spieghi perché Windows può trovare i box Linux ma non viceversa. Se Linux non usa LLMNR, Windows troverebbe Windows ma non Linux?
Per Salmi,

2

Probabilmente devi solo impostare la risoluzione Avahi / mDNS. Fa lo stesso di LLMNR su Windows.


0

Linux può risolvere i nomi locali sebbene il software necessario non sia installato per impostazione predefinita ...

La maggior parte delle distribuzioni Linux fanno pochi presunzioni quanto riguarda i vostri requisiti del software al di là del kernel ... di riferimento Debian DNSMasq

ricerca apt-cache dnsmasq ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.