Ho bisogno di creare un server DNS di caching semplice e non autorevole personalizzato in C/C++. Qualche guida? Link? Campioni? Grazie!Come creare un server DNS semplice personalizzato in C/C++
risposta
Non esiste un server DNS "semplice" di cacheing, in particolare se si desidera una sicurezza decente. I recenti attacchi DNS hanno dimostrato che la funzione di cache nei server DNS ricorsivi è particolarmente vulnerabile.
Rivalutare se è effettivamente necessario l'utilizzo della cache locale. Se non lo fai, probabilmente stai meglio modificando il codice proxy DNS esistente (come 'dnsmasq').
Se si desidera eseguire il roll-out, esistono librerie buone come ldns
che possono fornire l'accesso ai pacchetti DNS sottostanti.
Io sto usando ldns
me stesso in congiunzione con libevent
per implementare il server DNS Fuzzing che ho menzionato in una domanda precedente.
Inizia con djbdns.
Sarei attento a questo. Il software di djb ha licenze molto restrittive. assicurarsi che sia d'accordo con l'uso previsto. – SingleNegationElimination
djbdns è ora di dominio pubblico, ma non lo userei ancora ... – Alnitak
Ci sono un sacco di implementazioni software gratuite di DNS. Potresti guardare il loro codice sorgente. Per esempio:
Il libro DNS and BIND potrebbe essere utile. E, naturalmente, ci sono le RFC che specificano il DNS, vedi http://rfc-editor.org/.
In alternativa, è possibile utilizzare Ragel State Machine Compiler per creare il server da zero.
State machine è una parte molto piccola del codice di un server ... – bortzmeyer
Per qualcosa definito da una specifica molto severa come un server DNS, è un sostanziale (e probabilmente la parte più importante). –
Se avete veramente bisogno di farlo (si tratta di un enorme lavoro , vedere la risposta di Alnitak), a partire da una buona programma esistente (non un one-man sperimentare non mantenuto per lungo tempo come djbdns) e modificare esso.
Unbound è probabilmente una scelta ragionevole per questo. (La base del codice è inferiore a quella di BIND.)
Nota per i lettori: ricorda di ignorare i downvotes se non c'è un commento per spiegarli. – bortzmeyer
è noto che il software del djb si comporta in modo contrario agli standard perché ritiene che il suo modo sia migliore degli standard, ed è anche noto per negare l'esistenza di gravi errori di elevazione dei privilegi in remoto nel suo codice. Insieme al lungo periodo durante il quale il djbdns era completamente non mantenuto, penso che questi fattori rendano perfettamente giusto per Bortzmeyer chiamarlo "un esperimento di un solo uomo non mantenuto per molto tempo" e scoraggiare il suo dispiegamento in ambienti non hobbisti. –
Ho scritto un server DNS di base per un colloquio di lavoro con licenza BSD.
può essere qualcuno potrebbe trovare utile:
Perché mai si potrebbe forse bisogno di costruire il proprio server DNS? –
Causa Ho bisogno di un server DNS con alcune funzionalità non standard –
Consiglio vivamente di cercare soluzioni alternative, ma se questo è il modo in cui devi andare ... djbdns è di dominio pubblico, quindi puoi modificare tutto ciò che desideri. –