[Ninux-Calabria] dnsmasq, ordine delle query e DNS Ninux

Stefano De Carlo stefanauss a gmail.com
Mer 22 Lug 2015 19:44:55 CEST


Ciao ragazzi,

come ben sappiamo il DNS NinuCS è attualmente operativo all'indirizzo anycast 10.11.12.13 ("standard" informale di Ninux nazionale). Basta inserirlo come proprio DNS e si sarà in grado di risolvere sia i nomi a dominio solo-Ninux (come http://ebook.hl.cs oppure http://gr.spax.cs) sia i normali domini Internet. In genere poi si imposta anche come secondo DNS quello classico di Google 8.8.8.8.

Una prima accortezza è stata di disabilitare la protezione ("DNS Rebiding") che disabilita gli IP privati come risposte DNS valide. Infatti, sulla "Internet normale" non dovrebbe succedere mai (e quando succede è un attacco) che una query ad un DNS pubblico (tipo 8.8.8.8) restituisca come risposta un indirizzo di reti private. Su Ninux, che gira tutta su indirizzi privati, invece questa è la normale normalità. Tutti i nodi che usano 10.11.12.13 in questo momento hanno questa opzione correttamente settata.

Tuttavia nel corso dei mesi siamo stati afflitti da inspiegabili problemi ricorrenti dove tutto "doveva" funzionare, ma randomicamente le query DNS verso di domini ninux non riuscivano. Ho scoperto che questi problemi derivano dall'erratissimo assunto che i DNS che inseriamo in OpenWrt siano primari/secondari/terziari/ecc e che vengano interrogati in ordine.

NON. È. COSÌ.
dnsmasq, il dhcpserver/dnsforwarder di default su OpenWrt, e praticamente qualsiasi distribuzione Linux, non opera affatto così. Per chi volesse sapere come opera: [1]. In sostanza, fa una specie di bilanciamento, e una volta che decide che per un dominio vale un DNS-server, tanti cari saluti. Questo è un problemone immenso quando dnsmasq decide che per un dominio ninux, chiederà a 8.8.8.8.

Per forzare il comportamento primario/secondario/ecc su cui facciamo affidamento per integrare risposte DNS Ninux+Internet, dobbiamo abilitare l'opzione

"-o, --strict-order
    By default, dnsmasq will send queries to any of the upstream servers it knows about and tries to favour servers that are known to be up. Setting this flag forces dnsmasq to try each query with each server strictly in the order they appear in /etc/resolv.conf"

che su OpenWrt si abilita spuntando la casella in Network > DHCP and DNS > Advanced Settings > Strict Order.

Un'altra opzione importante è quella di non mantenere in memoria le risposte negative, tipo "dominio non esistente", che su Ninux possono capitare spesso durante il settaggio di un nuovo dominio. Senza quest'opzione bisognerebbe riavviare dnsmasq per tornare operativi verso un dominio che era settato male all'epoca della prima richiesta DNS ma che poi è stato aggiustato.

Questa opzione si imposta su OpenWrt con una spunta suNetwork > DHCP and DNS > Advanced Settings > No negative cache

A tutti quelli che usano i DNS Ninux 10.11.12.13 consiglio di abilitare queste opzioni a mano appena possibile per cominciare a raggiungere i domini Ninux con affidabilità. Queste opzioni dopo un po' di testing collettivo andranno praticamente di certo nei default del prossimo NinucsWrt.

Stefanauss.

[1] http://lists.thekelleys.org.uk/pipermail/dnsmasq-discuss/2009q3/003295.html

-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome:        signature.asc
Tipo:        application/pgp-signature
Dimensione:  819 bytes
Descrizione: OpenPGP digital signature
URL:         <http://ml.ninux.org/pipermail/calabria/attachments/20150722/5ae95f19/attachment-0001.sig>


Maggiori informazioni sulla lista Calabria