Come imporre dnsmasq per utilizzare un server dns upstream solo per alcuni nomi di dominio specificati?


16

In questo momento ho la seguente riga in dnsmasq.conf, che gestisce bene tutte le richieste ( /#/corrisponde a qualsiasi dominio; questo è necessario):

address=/#/127.0.0.1

Tuttavia, ci sono alcuni domini che richiedono di essere risolti in indirizzi IP diversi da 127.0.0.1.

Come soluzione temporanea sono stati aggiunti a /etc/hosts:

209.85.148.95   ajax.googleapis.com
207.97.227.245  underscorejs.org
72.21.194.31    s3.amazonaws.com

Purtroppo questa è una soluzione molto temporanea: smetterà di funzionare non appena l'indirizzo IP di qualsiasi dominio di destinazione cambia.

La mia domanda è: come imporre dnsmasq per utilizzare un server dns upstream per risolvere gli indirizzi IP di alcuni nomi di dominio (specificati)?

Risposte:


29

Puoi farlo usando la server=direttiva es

server=/ajax.googleapis.com/8.8.8.8

interrogherebbe il server DNS pubblico di Google per il dominio ajax.googleapis.com, in modo simile

server=/amazonaws.com/209.244.0.3

interrogherà il server DNS pubblico di Level3 per il dominio amazonaws.com.

Puoi raggruppare più domini insieme

server=/co.uk/com/8.8.4.4

Invierebbe i domini .co.uk e .com al server DNS in 8.8.4.4

Puoi avere anche più server=direttive

−S, --server = [/ [<domain>] / [domain /]] [<ipaddr> [# <port>] [@ <source> [# <port>]]]

Specificare direttamente l'indirizzo IP dei server upstream. L'impostazione di questo flag non elimina la lettura di /etc/resolv.conf, usare -R per farlo. Se vengono forniti uno o più domini opzionali, quel server viene utilizzato solo per quei domini e vengono interrogati solo utilizzando il server specificato. Questo è destinato ai server dei nomi privati: se hai un server dei nomi sulla tua rete che si occupa dei nomi del modulo xxx.internal.thekelleys.org.uk al 192.168.1.1, allora dai la bandiera -S /internal.thekelleys.org.uk/ 192.168.1.1 invierà tutte le query per le macchine interne a quel nameserver, tutto il resto andrà ai server in /etc/resolv.conf. Una specifica di dominio vuota, // ha il significato speciale di "solo nomi non qualificati", ovvero nomi senza punti. Una porta non standard può essere specificata come parte dell'indirizzo IP usando un carattere #.

È anche consentito un flag -S che fornisce un dominio ma nessun indirizzo IP; questo dice a dnsmasq che un dominio è locale e potrebbe rispondere alle domande da / etc / hosts o DHCP ma non dovrebbe mai inoltrare le domande su quel dominio a nessun server upstream. local è sinonimo di server per rendere più chiari i file di configurazione in questo caso.

Il secondo indirizzo IP facoltativo dopo il carattere @ indica a dnsmasq come impostare l'indirizzo di origine delle query su questo nameserver. Dovrebbe essere un indirizzo appartenente alla macchina su cui è in esecuzione dnsmasq, altrimenti questa linea del server verrà registrata e quindi ignorata. Il flag query-port viene ignorato per tutti i server per i quali è stato specificato un indirizzo di origine ma la porta può essere specificata direttamente come parte dell'indirizzo di origine.


Non penso che abbia bisogno di più serverrighe: qualunque indirizzo voglia risolvere (127.0.0.1), può aggiungerle con le addressrighe; nient'altro, DNSMasq eseguirà una query su server. Abbastanza sicuro, è così che è stato installato il mio.
gravyface

1
@gravyace: Ho letto la domanda come volendo che tutto si risolva in 127.0.0.1 con alcune eccezioni che vuole usare DNS per risolvere nel caso in cui cambino indirizzo. Vedo che il modo per farlo è usare le direttive del server.
utente9517

Oh forse Chissà. Ad ogni modo, questo dovrebbe farlo andare.
gravyface

Funziona come un fascino!
nrph
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.