Come vengono risolti i nomi sulle moderne reti locali? [chiuso]


2

Nelle moderne reti locali, i dispositivi utilizzano alcune tecniche diverse per risolvere i nomi. In particolare, solo per citarne alcuni, cose come DNS, Avahi, zeroconf, mDNS, Bonjour, NetBIOS, WINS o persino file host manuali. Alcuni di questi sono, credo, termini diversi sostanzialmente per la stessa cosa. Alcuni usano tecnologie decentralizzate, altri si affidano al DHCP per distribuire indirizzi centrali.

In che modo gli attuali sistemi operativi comuni passano attraverso queste diverse tecniche di risoluzione dei nomi, possibilmente in conflitto? Quale ordine usano? I diversi sistemi operativi hanno comportamenti diversi?

Quando si chiede l'IP di foobar, quando il dominio di ricerca locale viene aggiunto al nome - dopo che la risoluzione iniziale del nome fallisce, prima che venga chiesto qualcosa sulla rete o un'altra volta? I resolver DNS possono (e / o fare) aggiungere domini di ricerca quando provano a trovare una voce nelle loro tabelle?

Perché il comportamento dei miei clienti è cambiato quando ho specificato un dominio di ricerca locale (anziché vuoto) nel mio router?

Alcuni di questi metodi supportano e / o utilizzano il .localdominio tld / search. È solo una cosa di Avahi?

Come .cambia le cose alla fine di un dominio? Questo impedisce semplicemente la ricerca di "dominio locale"? Quando cerco google.com, perché non ho bisogno del trascinamento .?

Perché il mio risolutore DNS non cerca google.com.localo google.com.MyLocalSearchDomain?

Puoi avere domini di ricerca nidificati?

NetBIOS e WINS sono la stessa cosa? Che dire di avahi, bonjour e altri?

Domanda di follow-up: come funzionano questi servizi? Comprendo che il DNS utilizza uno stile più convenzionale di (essenzialmente) un server centrale che ciascun client è configurato per utilizzare. Tuttavia, i metodi decentralizzati devono utilizzare alcune altre tecniche per scoprire automaticamente i nomi. Come funzionano quelli?


2
Queste sono buone domande da porre, ma sfortunatamente, sono troppe domande per un post di Domande, quindi non si adatta molto bene al modello di questo sito. Se W. Richard Stevens fosse ancora in giro, potrebbe scrivere un intero libro chiamato "Modern Name Resolution Illustrated". Prova a porre una domanda fondamentale alla volta.
Spiff,

Risposte:


3

In breve, è un mix molto disordinato di diversi set di protocolli di risoluzione dei nomi utilizzati da diversi sistemi operativi, prodotti, app, servizi e API.

IETF ZeroConf definisce il protocollo mDNS (DNS multicast) e anche il protocollo DNS-SD (rilevamento del servizio DNS). Bonjour (nata Rendezvous, aka mDNSResponder) e Avahi sono due implementazioni di ZeroConf. Ho sentito che esiste anche un'implementazione della comunità OpenWrt che si chiama semplicemente "mDNS". Da quando Apple ha creato questo, i prodotti Apple si concentrano su questo, anche se i Mac possono anche utilizzare NetBIOS Name Service e WINS per la risoluzione dei nomi, soprattutto quando si utilizza il client SMB di macOS per connettersi ai file server SMB (Windows Server, server SaMBa Linux).

I protocolli proprietari del servizio nomi di Microsoft iniziano con NetBIOS Name Service basato su trasmissioni LAN locali (non instradabili). Dico "Microsoft proprietario", ma tecnicamente è nato con IBM come parte dei protocolli Server Message Block (SMB). Poiché il servizio di file SMB è diventato di fatto uno standard di settore, molti sistemi operativi hanno dovuto adottare NetBIOS Name Service nei loro client e server SMB almeno. Successivamente, Microsoft ha creato WINS per fornire una soluzione unicast basata su server per questo stesso tipo di risoluzione dei nomi proprietaria di Microsoft. Quando Apple ha creato mDNS con il nome "Rendezvous" (in seguito ribattezzato Bonjour) e lo ha portato all'IETF per diventare infine IETF ZeroConf, Microsoft ha deciso sconcertante di fare il proprio mDNS leggermente diverso, incompatibile e pensare di aver chiamato "

Linux, incluso Google Android, sembra gravitare verso ZeroConf per la risoluzione dei nomi senza server basata su LAN. Google ha portato su Linux il demone "mDNSResponder" open source compatibile con POSIX di Apple per l'utilizzo su Android; è ciò che implementa le API "Network Service Discovery" (NSD) di Android.

Come macOS, Linux utilizza NetBIOS Name Service e WINS per connettersi ai server SMB.

È un casino enorme, e quale protocollo (i) viene utilizzato per una cosa particolare dipende da quale sistema operativo sei, quali API chiama il tuo software e molte altre cose.


Ho un debole sospetto che Win10 alla fine aggiungerà la risoluzione dei nomi mDNS, poiché supportano già il rilevamento del servizio attraverso di essa. Nel frattempo, Linux ha risolto il sistema implementando sia mDNS che LLMNR (anche se finora non è buono come il primo Avahi).
Grawity

Beh, è ​​strano - sia che io provi a raggiungere fooo foo.local, il mio Windows 10.1803.17134 in realtà esegua contemporaneamente query LLMNR e mDNS (e NBNS, ma ignoriamolo). Questo deve essere integrato perché non ho e non ho mai avuto Bonjour / mDNSResponder installato su questo sistema ...
grawity

1

Un altro pezzo del puzzle è il /etc/nsswitch.conffile. Questo è lo "switch del servizio dei nomi", presente su molti sistemi basati su Unix; indica al sistema come tradurre i nomi in valori numerici e viceversa. Contiene circa una dozzina di righe che sembrano

(database) :    (fonte) ...
Descritto in dettaglio qui .

Una linea di esempio sarebbe

host: file dns
il che significa che, ogni volta che un programma * vuole tradurre un nome host / dominio in un indirizzo IP (o viceversa), dovrebbe

  1. Cerca /etc/hostse, se non trova un risultato lì,
  2. consultare DNS.

Quindi i sistemi possono essere configurati individualmente su come risolvere i nomi host (incluso l'ordine di ricerca).
________
* Questo è vero per la maggior parte dei programmi applicativi, come ping, ssh, ftp, ecc programmi di utilità come dige nslookupsono hardcoded per utilizzare DNS e nient'altro.

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.