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 😀

8 Responses to BIND Dns Autoritativo su Ip Dinamico

  1. Stefano

    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

    • 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

  2. … [Trackback]…

    […] Informations on that Topic: motosauro.net/?page_id=226 […]…

  3. Ciao la tua guida è fantastica e funziona tutto! Vorrei approfittare per chiederti un paio di dritte. Se volessi aggiungere altri alias a parte www ftp e mysql, come potrei fare? la mia idea era quella di accedere a webmin con un indirizzo del tipo webmin.ilmiodominio.com, credi sia fattibile considerando che webmin risponde alla porta 10000? Ultimissima cosa, potresti spiegarmi cosa rappresenta la riga ilvostroindirizzo.gmail.com. ??
    Grazie mille!!

    • Scusa il ritardo, il commento era perso in 30 pagine di spam puro. Devo mettere qualche filtro antispam.
      Aggiungere livelli è sempre possibile: il dominio viene risolto come se fosse un albero di directory, però al contrario.
      Si parte dal TLD ad esempio .eu, si legge il secondo livello (che è quello che compri) ad esempio marcoalbarelli e poi si leggono via via gli altri livelli come ad esempio ftp utenti marco
      L’esempio risulterebbe in marco.utenti.ftp.marcoalbarelli.eu
      Quello che segue il secondo livello lo decide chi controlla il DNS autoritativo
      Hai due strade: creare un CNAME o un A devi vedere tu quello che ti conviene di più
      ad esempio
      webmin.miosito.com. CNAME http://www.miosito.com.
      La porta è ininfluente e dipende da quello che fai chiedere al client, ad esempio nel browser scriverai http://webmin.miosito.com:10000

      ilvostroindirizzo.gmail.com. è la mail di contatto per la zona, è richiesta. Il formato è mailbox.domain.tld. (il primo punto viene sostituito in automatico da una @, quindi non puoi usare mario.rossi.gmail.com. Occhio al punto finale)

  4. Vassilis

    Ciao grazie mille per la dritta ho letto solo adesso il tuo messaggio.. comunque io ho risolto facile creando un record cname del tipo webmin.ilmiodominio.com ed abilitando su apache il plugin proxy che ti fa indirizzare le richieste sulle porte che vuoi.. quindi ho realizzato tutti i sottodomini che volevo tipo mldoneky.ilmiodominio.com transmission.ilmiodominio.com motion.ilmiodominio.com webmail.ilmiodominio.com ecc.. grazie comunque davvero la tua guida è la piu utile del web..per quanto riguarda la mail di contatto.. ancora non mi è chiaro l’utilizzo, cioè a cosa serve?

  5. Andrea

    Ciao, vorrei sapere se è possibile, e se si come, realizzare il seguente scenario.
    Ho registrato un dominio gratuito di terzo livello su dyndns con il quale accedo ad un server Synology (linux) dietro ad un modem router telecom con ip dinamico. Ora vorrei registrare un dominio di secondo livello andrea.com che punti al blog che ospito sul mio server in modo che sulla barra indirizzi del browser esca andrea.com piuttosto che il dominio di terzo livello dyndns, quindi se ho ben capito senza redirect. Come dovrei procedere? Grazie

    • Ciao e scusa il ritardo
      La guida spiega come fare esattamente questo, tenendosi in casa il DNS autoritativo, che se vuoi fare delle prove è più comodo rispetto all’averlo “fuori”
      Se ci sono dei passaggi non chiari chiedimi pure

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


*