Djbdns

Da Cpline Wiki.

Indice

Un dns per la rete locale

Debian Lenny 5.0 ora include Djbdns installabile con apt-get install djbdns . Easier cake for fond nerds 28/07/2009

Requisiti

Per lo scopo dobbiamo recuperare un computer obsoleto , che magari avevamo dimenticato in soffitta o che qualcuno ha dismesso perché non più usabile con sistemi operativi moderni . L'unico requisito richiesto è una scheda di rete ed almeno 256 Mb di RAM.

Otteniamo un cd di installazione minimale di Debian ed accertiamoci di avere una connessione ad internet stabile.

Una volta installato il sistema operativo , iniziamo ad aggiungere via internet quello di cui abbiamo bisogno. Prima però dobbiamo dare un indirizzo di rete fisso alla nostra macchina , una default gateway (di solito l'indirizzo del router verso internet ) e un dns provvisorio per la risoluzione dei nomi.

Ci logghiamo come root e editiamo il file /etc/network/interfaces con nano .

nano -w /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.253
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1 

Ora facciamo puntare temporaneamente la macchina ad un server dns esterno per la risoluzione degli hosts internet :

echo "nameserver 208.67.222.222" > /etc/resolv.conf [/sourcecode]

Facciamo ripartire la rete con:

/etc/init.d/network restart [/sourcecode]

Controlliamo se riusciamo ad uscire su internet con un semplice ping :

debians:/etc/apt# ping maya.ngi.it
PING maya.ngi.it (88.149.128.3) 56(84) bytes of data.
64 bytes from maya.ngi.it (88.149.128.3): icmp_seq=1 ttl=54 time=58.3 ms [/sourcecode]

A questo siamo pronti per prelevare da internet i pacchetti di cui abbiamo bisogno.

Diamo una sistematina al nostro file /etc/apt/sources.list e rendiamolo simile a questo :

deb http://mi.mirror.garr.it/mirrors/debian/ stable main contrib non-free
deb-src http://mi.mirror.garr.it/mirrors/debian/ stable main contrib non-free
deb http://security.debian.org/ stable/updates main contrib non-free [/sourcecode]

Installazione daemons

Provvediamo ora ad installare il server DNS. Per questo tutorial la scelta è ricaduta sul pacchetto djbdns

Ci logghiamo come root e diamo i seguenti comandi :

aptitude update
aptitude install daemontools-installer

Subito dopo installiamo daemontools con il comando :

build-daemontools

Durante l'installazione di daemontools ci verranno chieste alcune domande :

Enter a directory where you would like to do this [/tmp/daemontools] <-- ENTER
Which format would you like to use? [fD] <-- ENTER
Press ENTER to continue... <-- ENTER
Do you want to remove all files in /tmp/daemontools,
except daemontools_0.76-9_i386.deb now? [Yn] <-- ENTER
Do you want to install daemontools_0.76-9_i386.deb now? [Yn] <-- ENTER
Do you want to purge daemontools-installer now? [yN] <-- ENTER

Accettiamo i valori di default premendo enter ad ogni occorrenza.

Ecco un altro pacchetto da installare :

aptitude install ucspi-tcp-src

Una volta scaricato installiamolo come già fatto per daemontools :

build-ucspi-tcp 

Anche qui ci verranno proposte alcune domande , alle quali rispondiamo come prima con i valori di default :

Enter a directory where you would like to do this [/tmp/ucspi-tcp] <-- ENTER
Press ENTER to continue... <-- ENTER
Do you want to remove all files in /tmp/ucspi-tcp,
except ucspi-tcp_0.88-10_i386.deb now? [Yn] <-- ENTER
Do you want to install ucspi-tcp_0.88-10_i386.deb now? [Yn] <-- ENTER
Do you want to purge ucspi-tcp-src now? [yN] <-- ENTER

Per finire preleviamo il pacchetto di djbdns e compiliamolo :

aptitude install djbdns-installer 

Lanciamo l'installazione al solito con :

build-djbdns

Sempre le domande a cui rispondere con i valori di default :

Enter a directory where you would like to do this [/tmp/djbdns] <-- ENTER
Press ENTER to continue... <-- ENTER
Do you want to remove all files in /tmp/djbdns,
except djbdns_1.05-11_i386.deb now? [Yn] <-- ENTER
Do you want to install djbdns_1.05-11_i386.deb now? [Yn] <-- ENTER
Do you want to purge djbdns-installer now? [yN] <-- ENTER

Bene , siamo a buon punto , non ci resta che configurare i parametri per la nostra rete interna .

creazione files di configurazione

Creiamo la directory in cui risiederanno i files di tinydns , dnscache e axfrdns .

mkdir /var/lib/svscan [/sourcecode]

Subito dopo configuriamo i tre demoni come segue :

dnscache-conf dnscache dnslog /var/lib/svscan/dnscache 192.168.0.253
axfrdns-conf axfrdns dnslog /var/lib/svscan/axfrdns /var/lib/svscan/tinydns 127.0.0.1
tinydns-conf tinydns dnslog /var/lib/svscan/tinydns 127.0.0.1 

E creiamo dei link simbolici nella directory service :

ln -s /var/lib/svscan/dnscache /service
ln -s /var/lib/svscan/axfrdns /service
ln -s /var/lib/svscan/tinydns /service 

Abbiamo ultimato l'installazione di djbdns , non ci rimane che far ripartire i demoni

/etc/init.d/djbdns restart


Abbiamo così a disposizione una cache dns fornita da dnscache , un authoritative dns server che risponde al nome di tinydns e un replication chiamato axfrdns . Per il nostro semplice setup sarà necessario sistemare i parametri di dnscache e di tinydns .

Cominciamo con dnscache .

Entriamo nella directory /service/dnscache/root e controlliamo che esistano due sottodirectory ip e servers. Entriamo in servers ed editiamo il file @ con nano -w @

In questo file si dovrebbero trovare alcuni indirizzi ip di server dns di varie provenienze , tra cui Internic e Apnic che funzionano a dovere ma sono terribilmente laggati per ovvie ragioni di distanza. Possiamo a scelta inserire il dns server del nostro provider o in alternativa i soliti dns di OpenDNS.

Entriamo nella sottodirectory ip e dovremmo trovare un file vuoto di nome 127.0.0.1 . Per permettere l'accesso alla cache a tutti i computer della sottorete dobbiamo creare un file vuoto chiamato 192.168.0 e lo facciamo con il comando touch 192.168.0.

A questo punto la nostra cache è perfettamente funzionante e subito dovremmo godere dei benefici di una risoluzione dei nomi quasi istantanea per le url di maggiore richiesta.

Ma uno dei nostri scopi è quello di tagliare fuori advertisement e cookies .

filtraggio contenuti pubblicitari

Per fare questo entriamo nuovamente in /services/dnscache/root/ e scarichiamo un piccolo script perl con

wget http://qmail.jms1.net/djbdns/mkservers 

Dobbiamo compilare una bella lista di url da bloccare e a questo scopo ci viene incontro Fooldns che la rilascia pubblicamente , anche formattata per i nostri scopi . Eccone un breve estratto :

tr.bt.alice.it:87.118.111.215
partners.sprintrade.com:87.118.111.215
adbard.net:87.118.111.215
ads.arcuspubblicita.it:87.118.111.215
adv.ilbanner.com:87.118.111.215
stats.wordpress.com:87.118.111.215

Quindi una volta prelevata la lista con

wget http://fooldns.com/rules.txt 

apriamola e tramite nano facciamo una ricerca (ctrl W ) di 87.118.111.215 e una sostituzione (ctrl R ) di tutte le occorrenze (ctrl T) con 127.0.0.1.

Rinominiamola in servers.txt :

mv rules.txt servers.txt

e lanciamo i seguenti comandi

chmod +x mkservers
./mkservers 

In questo modo abbiamo compilato delle regole che dicono a dnscache di puntare a localhost per le url indicate.

Bene , con dnscache abbiamo terminato , ora dobbiamo passare a tinydns con un semplicissimo settaggio. Entriamo in /service/tinydns/root ed editiamo il file data :

nano -w /service/tinydns/root/data
..:127.0.0.1:a:259200
=.:127.0.0.1:8640

Ora non ci rimane che compilare questo file in formato cdb dando semplicemente make.Ultimo ma proprio ultimo step è far ripartire tutti i demoni con :

/etc/init.d/djbdns restart

Se tutto è andato liscio abbiamo ottenuto con poco sforzo e poche risorse un dns tutto nostro da spoofare a piacimento.

Per poter far puntare tutti i computer della sottorete al nuovo server dns si puo' operare a manina o inserire il nuovo dns sul server dhcp della vostra rete LAN.

Strumenti personali
Namespace
Varianti
Azioni
Navigazione
Strumenti