BIND Dns Autoritativo su Ip Dinamico
Come detto qualche giorno fa (anche un mese e mezzo è composto di giorni
) ecco la ricettina per avere i dns che fanno puntare su un ip dinamico il vostro dominio di secondo livello.
Ingredienti:
- un dominio di secondo livello registrato a vostro nome
- un “mantainer” che vi permetta di specificare i dns per il vostro dominio
- un pc possibilmente sempre acceso e che sappia l’IP che volete assegnare al dominio
- il pacchetto bind
- un dominio dinamico di terzo livello di quelli gratuiti (DynDNS no-ip o quel che volete)
- uno script per fare l’update dell’ip dinamico sopra citato
Il tutto va amalgamato in maniera abbastanza semplice:
passo 1:
registratevi due domini di terzo livello. Per questo esempio useremo fakedns1.no-ip.org e
fakedns1.no-ip.org. I nomi non sono assolutamente importanti, quindi sbizzarritevi (o se ne avete già usateli tranquillamente).
Configurate un qualche script per tenere aggiornati questi domini. Su Gentoo uso noip-updater
serverillo3#emerge noip-udater ... serverillo3#noip2 rispondere alle domande .....
A quel punto lo script si arrangia e siete a posto, con un downtime massimo ipotetico lungo quanto l’intervallo di aggiornamento dato allo script (normalmente 5 minuti).
Passo2:
Registrate un dominio presso un mantainer che vi permetta di specificare i dns da usare.
pegaso hosting lo permette.
Indicate in quel caso come dns 1 e 2 fakedns1.no-ip.org e
fakedns1.no-ip.org. Corrispondono alla stessa macchina quindi sembra idiota indicarne due, ma tant’è.
In questa maniera le richieste DNS per ilvostrodominio.net verranno instradate verso i server DNS autoritativi per quel dominio, ossia fakedns1.no-ip.org e fakedns1.no-ip.org.
passo 3:
Installate BIND
serverillo3#emerge bind
Editiamo adesso /etc/bind/named.conf e /etc/bind/pri/ilvostrodominio.net.zone
nel primo mettiamo la configurazione del demone:
cut....
zone "ilvostrodominio.net." IN {
type master;
file "pri/ilvostrodominio.net.zone";
};
....cut
Ovviamente DOVETE abilitare le richieste esterne, altrimenti il vostro server DNS non risponderà
nel secondo mettiamo la configurazione per il vostrodominio
$TTL 1M ilvostrodominio.net. IN SOA fakedns1.no-ip.org. ilvostroindirizzo.gmail.com. ( 2008081312 ; serial 5M ; refresh 5M ; retry 5M ; expiry 1M ) ; minimum ilvostrodominio.net. IN NS fakedns1.no-ip.org. ilvostrodominio.net. IN NS fakedns2.no-ip.org. ;Riga da cambiare con uno script messo in cron ilvostrodominio.net. IN A 111.222.222.111 ;Fine riga da cambiare www.ilvostrodominio.net. IN CNAME ilvostrodominio.net. ftp.ilvostrodominio.net. IN CNAME ilvostrodominio.net. mysql.ilvostrodominio.net. IN CNAME ilvostrodominio.net.
poche avvertenze:
quando cambiate qualcosa nel file di configurazione della zona DOVETE cambiare il seriale (2008081312 nell’esempio) ad un numero SUPERIORE.
L’indirizzo 111.222.222.111 è ovviamente finto e va sostituito con il vostro reale indirizzo ossia quello cui puntano fakedns1.no-ip.org e fakedns1.no-ip.org.
Passo 4:
serverillo3#/etc/init.d/named reload
e tutto dovrebbe funzionare
Prima parte dello script di aggiornamento della zona
#!/bin/bash # Ottieni l'indirizzo da checkip.dyndns.org wget checkip.dyndns.org -q -O tmpIndirizzo.html # Strippalo delle parti non necessarie e mettilo in una variabile NUOVOIP=`grep Current tmpIndirizzo.html | cut -d \: -f 2 |cut -d \ -f2|cut -d \< -f1` # Recupera il valore attuale IPCORRENTE=`cat /var/run/ipcorrente` #Creiamo un nuovo seriale da mettere nella zona SERIALE=`date +%Y%m%H%m` # Li confrontiamo e se diversi aggiorniamo l'attuale if [ $NUOVOIP != $IPCORRENTE ] then # ----8<--------------- # Qui andrà inserita la seconda parte dello script echo "Va aggiornato a $NUOVOIP" echo "E il seriale va messo a $SERIALE" echo $NUOVOIP > /var/run/ipcorrente # # ---->8--------------- else echo "Rimane $IPCORRENTE" echo "E il seriale non va cambiato" fi
Questa parte si rende “solo” conto del fatto che l’ip sia cambiato o meno.
Prima del primo giro bisogna creare “/var/run/ipcorrente” con un touch
Questa sotto invece è la seconda e ultima parte dello script
echo "Va aggiornato a $NUOVOIP"
echo "E il seriale va messo a $SERIALE"
sed -i 's/\b[0-9]\{10\}\b/'$SERIALE'/g' /etc/bind/pri/ilvostrodominio.net.zone
sed -i 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/'$NUOVOIP'/g' /etc/bind/pri/ilvostrodominio.net.zone
echo $NUOVOIP > /var/run/ipcorrente
/etc/init.d/named reload
Spero sia utile a qualcuno.
Eventualmente mandatemi una mail a
motosauro chiocciola gmail punto com
con ringraziamenti e/o insulti
March 25th, 2010 at 12:33 pm
Ciao,
ho letto e seguito con interesse il tuo tutorial per fare il bind con un ip dinamico.
Ho seguito tutto alla lettera e il bind9 sembra configurato a dovere, il problema pero’ ce l’ho con i dns.
Come mantainer ho godaddy. Il problema e’ che non riesco a far puntare ai server dns da me creati ns1 e ns2 il mio ip dinamico.
Questo perche’ viene accettato come campo di destinazione un ip numerico e non il dns alias che mi sono creato con dyndns…
Come posso ovviare a tutto cio’? Hai un’idea?
Grazie mille
Stefano
March 25th, 2010 at 12:39 pm
Purtroppo se non puoi specificare un dominio come dns autoritativo e sei costretto a mettere un ip le soluzioni non sono molte (ci sono però)
Presumendo che tu non voglia cambiare mantainer passando ad uno che ti permetta di specificare il DNS come dominio puoi fare quanto segue:
* Vedere se godaddy mette a disposizione delle API per aggiornare i dns autoritativi (la vedo molto improbabile come cosa, ma val la pena chiedere).
* Loggarti a mano sul sito di godaddy e cambiare manualmente l’ip del DNS autoritativo tenendolo allineato col tuo (o cmq con quello su cui fai puntare l’alias di dyndns)
* Trovare qualcuno con un ip statico che ti faccia da relay
* Usare i servizi di gestione dns di no-ip o dyndns o simili, però questi sono a pagamento (intorno ai $25 all’anno) …
Se provi a sentire Godaddy riguardo la possibilità di aggiornare l’ip tramite API e ti dicono che è possibile si fa uno scriptino in 5 minuti
P.S.
Godaddy mette a disposizione delle API per i rivenditori, ovviamente non sono quelle che ti interessano