Utilizzo di DNSMasq per la risoluzione del nome host locale


9

Sto lavorando alla creazione di una Intranet domestica per me e i miei coinquilini. La mia idea è che saremo in grado di archiviare cose come le bollette del passato in un posto che è più accessibile di un cassetto in cucina ecc. Comunque, ho Apache 2 in esecuzione su un Raspberry Pi, sulla mia LAN e se uso il suo indirizzo IP, posso accedere alle pagine servite sul Pi. Dal momento che sto facendo questo progetto di più per conoscere la rete per fornire un servizio al mio appartamento, ho pensato che sarebbe bello se la mia rete potesse fornire la risoluzione del nome host per la mia LAN. Quindi, piuttosto che puntare il mio browser a 192.168.1.151, l'indirizzo IP del Pi, potrei puntarlo a oberon(il suo nome host) e visualizzare le pagine web servite dal Pi.

Ora sapevo di non essere la prima persona a voler fare questo, quindi ho iniziato con Google. Questa domanda, anche su Unix e Linux, mi ha aiutato immensamente: come rendere accessibile una macchina dalla LAN usando il suo nome host . A questo punto, ho provato di tutto nella risposta verificata. Ho pensato di usare il hostsfile, ma ciò significherebbe che avrei dovuto dire ai miei coinquilini di configurare le loro macchine, cosa che non voglio che debbano fare. Ho provato a prenotare un contratto di locazione DHCP per il Pi sul mio router (un NETGEAR WNR1000v2 (aka un N150)), e mentre la prenotazione ha funzionato, la risoluzione del nome host non funziona. Questo tipo di mi frustra perché ho detto al mio router l'IP del Pi e il suo nome host, eppure non fornisce ancora queste informazioni ai client sulla mia LAN.

Con questi due metodi non funzionanti, ho deciso di installare dnsmasqsul Pi. Sembrava semplice da configurare e sarei felice di imparare un nuovo strumento. Ho installato e lo faccio funzionare bene (sembra). Posso digo nslookupsoprannomi del Pi (che oggi io pongo in /etc/hostsa oberone homenet) e ottenere i risultati corretti. Posso fare lo stesso per i nomi di Internet come yahoo.come ottenere risposte corrette perché ho impostato Google 8.8.8.8e 8.8.4.4come server di backup /etc/dnsmasq.conf. Guarda questo:

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

Nota che SERVERis 127.0.0.1: oberonsta cercando il proprio indirizzo IP su se stesso. Questo è quello che mi aspettavo di vedere. L'output è lo stesso se lo faccio dig oberon @localhost. A causa di questo risultato, sto pensando che dnsmasqfunzioni bene. Quindi per portarlo al livello successivo, voglio che tutti i client sulla mia LAN siano in grado di digitare il oberonloro browser e di essere portati alla oberonpagina dell'indice. Per questo so che devo configurare il mio router (mi scuso se questo si allontana dal territorio strettamente Unix e Linux).

Ho un Netgear WNR1000v2 con cui ho abbastanza familiarità. Ho configurato il port forwarding in modo da poter SSH nel Pi e ho cercato anche in altre impostazioni. So che prima di iniziare questo progetto, stavo ottenendo i miei server DNS dal mio ISP, ma ora voglio usare quei server DNS principalmente ma anche 192.168.1.151come ultimo controllo. Quindi ho modificato la configurazione DNS del mio router nel modo seguente:

La nuova configurazione DNS del mio router.  Fidati di me quando dico che le prime due voci sono fornite dal mio ISP

Quindi, con questa configurazione, mi aspettavo di poterlo fare nslookup oberonsul mio desktop (Windows) e ottenere un risultato 192.168.1.151. Ma questo non succede. Questo è ciò che accade:

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

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

Il ripristino o dnsflushingla scheda di rete sul mio computer Windows non cambia nulla.

Ora ecco perché mi sto strappando i capelli qui:

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

Name:    oberon
Address:  192.168.1.151

Chiaramente, dnsmasqfunziona bene. Se dico alla mia casella di Windows di utilizzare 192.168.1.151per risolvere il nome oberon, tutto va bene (il .landominio faceva parte della configurazione di dnsmasq, quindi mi aspettavo di vederlo lì). Se solo potessi convincere il mio router a comunicare al mio computer Windows di utilizzare 192.168.1.151le query DNS, dovrei essere bravo!

Quindi mi sembra che il problema sia nel mio router, ma non riesco proprio a capire cosa fare oltre a cambiare i server DNS per includerlo 192.168.1.151come ho già fatto. Qualcuno può aiutarmi qui? Proverò a fornire qualsiasi ulteriore informazione desiderata.


Prova a mettere pi come primo server DNS, allora funziona?
terdon

1
Il router è il posto giusto per farlo. Se per qualche motivo non riesci a far sì che il tuo router serva un nome per il Pi, eseguendo dnsmasq sul Pi e facendo in modo che il router serva il Pi come il server DNS funzionerebbe. Sembra che il tuo problema stia configurando correttamente il tuo router.
Gilles 'SO- smetti di essere malvagio'

Stai rinnovando il contratto di locazione DHCP sul client dopo aver aggiornato le impostazioni DNS sul router? La configurazione DNS viene inviata nel lease DHCP, quindi deve ottenere un nuovo lease per ottenere le nuove impostazioni. Come soluzione alternativa, puoi anche esaminare mDNS / zeroconf / avahi.
Patrick,

Risposte:


2

Il tuo problema risiede nel tuo fraintendimento del modo in cui vengono utilizzati quei server DNS, non conosco i dettagli esatti del metodo utilizzato da Windows per scegliere quale server DNS interrogare, ma sto scommettendo sul suo primario> secondario> terziario / sempre /. E anche se non fosse ed era round-robin, dovrai comunque interrogare un server inutile 2 delle 3 volte.

Quello che accadrà è che verrà interrogato il server primario. In tal caso, che può essere un secondo o due, verrà interrogato il server successivo. Il DNS non è un sistema di "consenso", se viene interrogato uno dei server remoti, alla fine scoprirà il risultato che il tuo nome host NON esiste autorevolmente, dal suo punto di vista come server DNS Internet.

È necessario il proprio DNS LAN come server DNS primario. Gli altri avrebbero creato server di backup adatti, ma prenderei in considerazione l'idea di abbandonarli completamente.

Inoltre, il dns inverso (IP per la ricerca del nome) si risolve in "hostname.lan" ma i test di risoluzione diretta sono solo con hostname. Dovresti anche avere una risoluzione diretta per hostname.lan impostato da qualche parte. Mentre ci possono essere molte ricerche forward "name to address" per un host, ci si aspetta che ci sia una ricerca inversa dell'IP su un nome, che a sua volta ha un nome corrispondente a quel record IP. Non è sempre critico e rende i file di registro lamentosi a volte, ma alcune cose sono più sensibili a questo rispetto ad altre.

Inoltre, non dimenticare di rimuovere tutti i file system host che hai installato una volta che tutto funziona (non so se è rilevante per dnsmasq, non l'ho mai usato, ho una configurazione simile ma più complicata in atto usando il nome ISC-BIND server, che è possibile configurare l'inoltro ad altri server come quelli in uso o semplicemente utilizzarlo come server DNS non inoltro che esegue autonomamente la risoluzione completa del nome, che è ciò che ho impostato).

Inutile dire che, come hai ipotizzato per la prima volta, sei molto lontano dall'essere solo nel creare questa configurazione, quasi tutte le LAN aziendali ragionevolmente sviluppate e moltissime LAN domestiche troppo sviluppate avranno questo tipo di installazione in atto.


1
Grazie per l'aiuto iain! Capisco cosa stai dicendo su come il DNS non sia un sistema di consenso, quindi ho impostato Pi sul server DNS primario nel mio router. Ho quindi rinnovato il contratto di locazione DHCP sul mio computer Windows. Tuttavia, nslookup oberoncontinua a non funzionare. Una cosa che non ho menzionato nel testo del mio post originale è che quando nslookupfallisce, dice che il server che ha usato era un fe80indirizzo IPv6 - che so essere un indirizzo locale di collegamento riservato. Ma non so cosa significhi per DNS. La mia finestra di Windows si sta interrogando? dnsflushnon cambia questo comportamento.
c.anna,

E per quello che vale, la risoluzione del nome host LAN non funziona neanche sui miei dispositivi iOS. Non li ho ancora menzionati perché ho molta più potenza introspettiva con Windows, ma se i miei problemi derivassero davvero da Windows non mi aspetterei che questi dispositivi presentino lo stesso problema.
c.anna,

Inoltre, per dissipare le tue preoccupazioni sul .landominio, mi sono configurato dnsmasqper espandere automaticamente semplici nomi host da aggiungere .lan. Running nslookup oberon.lan 192.168.1.151restituisce il risultato atteso diName: oberon.lan Address: 192.168.1.151
c.anna il

Mi chiedo se ci sia un "windowsism" al lavoro o qualcosa del genere, nominare i tuoi host direttamente sotto il dominio di primo livello ('oberon.') È un po 'strano, oberon.lan ha molto più senso. Una cosa da tenere presente è che i suffissi di dominio e i "domini di ricerca" vengono spesso aggiunti a un nome per risolverlo, ad esempio "oberon" potrebbe essere risolto e trovato come "oberon.lan" se lan si trova nei domini di ricerca. Tuttavia, le query di cui sopra non sembrano mostrare che questo sia il caso, lo scavo ha specificamente il periodo di chiusura sui nomi host, ma fai attenzione quando lo fai!
Iain

Hmm dopo aver corretto i DNS primari dovrai re-dhcp windows (resettare l'adattatore dovrebbe farlo), quindi controllare ipconfig /allsta mostrando il server dns corretto che viene utilizzato, se è giusto allora potresti aver bisogno di flushdns. Ma non riesco a pensare ad altro, dovrebbe funzionare.
sourcejedi,

1

Forse un po 'in ritardo, ma disabilitare ipv6 sul mio adattatore wireless ha funzionato.


Upvote: sempre una buona idea. A meno che il sistema sia là fuori nudo e lo richieda. E finora (settembre 2017) c'è pochissima attrezzatura per utenti domestici che soddisfa quella categoria, se non del tutto.
SDsolar,
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.