Facilitare l’accesso ai propri servizi con DynDNS e DJBDNS

Uno dei problemi che si possono avere accedendo ai servizi della propria
LAN casalinga dall’esterno è che IP e hostnames non corrispondono, e
richiedono dei giochi per poter funzionare indistintamente.

Questo articolo darà modo a chi ne avesse bisogno di semplificare
l’accesso ai propri servizi, non richiedendo modifiche alla
configurazione dei programmi per gli accessi interni o esterni.

Introduzione

Avendo a casa una piccola LAN (tre computer in realtà), ho dato ai due
fissi il compito di gestirmi alcuni servizi, come per esempio la posta
@localmailserver o il BNC1.

Ovviamente quando sono collegato alla rete interna, il portatile accede
a questi senza passare dal router (che ha un’interfaccia a 10Mbit e
verrebbe appesantito dalla necessità di effettuare il NAT inverso
sull’interfaccia WAN per poter fornire i servizi alle altre macchine),
ma se usassi gli indirizi IP interni poi dovrei riconfigurare da capo
tutti i programmi quando fossi fuori della mia LAN (per esempio a scuola
o a casa di amici).

In questo articolo voglio provare a dare una piccola soluzione a questo
problema che potrebbe riguardare anche altre persone, utilizzando i
servizi forniti da DynDNS, e il server DNS dnsmasq.

Hostname dinamici: perché e come

La prima cosa da fare se si vuole poter fornire servizi all’esterno
della propria LAN senza avere bisogno di conoscere in continuazione il
proprio IP è utilizzare un hostname dinamico, a meno che non abbiate un
IP fisso.

Gli hostname sono nati apposta per poter fornire un identificativo
mnemonico per le macchine su internet, ma nell’epoca in cui la maggior
parte dei provider forniscono soltanto IP dinamici, i classici hostname
sono inutili.

Per questo divrsi siti offrono servizi di hostname dinamici, ovvero
hostname il cui IP può essere cambiato automaticamente tramite un
client, un nome utente e una password.

Per prima cosa, registriamoci su , fino ad avere un nome utente (che
sarà per noi, appunto, utente), e una password (che sarà per noi,
ancora una volta, password). A questo punto poi potrete registrare un
hostname (che per facilità sarà il mio 2).

Configurazione del client

Ora installiamo un client, io solitamente utilizzo ddclient, che è
disponibile per la maggior parte delle distribuzioni linux e dei sistemi
operativi liberi (tra cui OpenBSD dove lo eseguo).

Modifichiamo quindi il file /etc/ddclient.conf, inserendo le seguenti
righe:

login=utente
password=password

server=members.dyndns.org 
protocol=dyndns2 
flameeyes.homelinux.net 
wildcard=yes

Notate quest’ultima riga, wildcard=yes, perché è molto importante. In
pratica consente di risolvere i domini di quarto livello (come per
esempio pippo.flameeyes.homelinux.net) con lo stesso IP configurato
sull’hostname di terzo livello. Ora vedremo per cosa ci serve questa
opzione.

Una volta che ddclient è configurato, basta semplicemente impostarlo per
l’avvio automatico (questo dipende dalla vostra distribuzione / sistema
operativo).

Configurazione delle macchine

Una volta configurata l’hostname, dobbiamo iniziare a configurare le
macchine. Per fare ciò prima di tutto scegliamo dei nomi per le singole
macchine se già non ne hanno. Seguendo i consigli di DJB@djb-hints, i
nomi delle macchine dovrebbero essere scelti in modo da essere tra loro
simili, e che non vadano ad interferire con le proprie competenze. Io
per esempio utilizzo i nomi di astronavi presi da Star Trek.

Una volta che abbiamo deciso i nomi per le varie macchine, possiamo
unirli al dominio preso da DynDNS per avere il nome completo delle varie
macchine. Per esempio possiamo avere una macchina chiamata defiant che
diventa il nome defiant.flameeyes.homelinux.net .

Per configurare le varie macchine abbiamo ora diverse possibilità a
seconda di quale distribuzione linux o sistema operativo si usa. Posso
quindi solo dare alcuni esempi generali.

Gentoo Linux

In Gentoo Linux per la configurazione di hostname e dominio basta
modificare due files.

Il primo è /etc/conf.d/hostname, in cui bisogna semplicemente settare

HOSTNAME="defiant"

Il secondo è /etc/conf.d/domainname, che va modificato in modo da
avere

DNSDOMAINNAME="flameeyes.homelinux.net"

Un riavvio ed è finita.

OpenBSD

In OpenBSD il cambiamento è ancora più semplice, basta eseguire il
comando

echo "defiant.flameeyes.homelinux.net" > /etc/myname

Per finire un riavvio.

Installazione del DNS

A questo punto resta solo la parte più critica: installare e configurare
il server DNS in modo da rispondere alle richieste per il nostro nuovo
dominio flameeyes.homelinux.net.

Il software che consiglio è dnsmasq. Per una semplice rete casalinga, la
sua gestione è semplice ma allo stesso tempo funzionale. Inoltre, è un
programma molto leggero e non consuma risorse di alcun genere.

La sua installazione è praticamente banale. Il consiglio è sempre quello
di controllare se la propria distribuzione mette a disposizione un
pacchetto per dnsmasq, in tal caso, la cosa più semplice è installarlo
tramite questa.

Nel caso non sia presente un pacchetto precompilato o un metodo per
installare dnsmasq direttamente tramite la propria distribuzione, la sua
compilazione e installazione è comunque molto semplice.

Per prima cosa scaricate dal sito l’ultima versione del programma, che
al momento è dnsmasq-2.23.tar.gz. A questo punto, basta estrarre i
sorgenti e lanciare il comando di compilazione e installazione:

    $ tar zxf dnsmasq-2.23.tar.gz
    $ cd dnsmasq-2.23
    $ gmake
    $ su -
    # gmake install

Nota: se si è sotto Linux, è possibile utilizzare make al posto di
gmake; se si è sotto BSD però è necessario utilizzare il make GNU.

Per sistemi basati su RPM, come SuSE e Fedora, è presente nel pacchetto
dei sorgenti anche un file rc.d per l’avvio automatico del servizio. Per
altre distribuzioni, si faccia riferimento ai pacchetti ufficiali e non.

In ogni caso, per avviare il servizio basta, una volta completata la
configurazione spiegata nella prossima sezione, basta eseguire il
comando dnsmasq, che entrerà da solo nello stato di daemon
preparandosi a ricevere richieste.

Configurazione

Anche la configurazione di dnsmasq è molto semplice, un file di
configurazione di esempio è disponibile nel tarball dei sorgenti, ma
quello che viene qui riportato è un esempio di configurazione per una
rete LAN classica.

    server=999.999.999.999      # server DNS del proprio provider
    local=/flameeyes.homelinux.net/ # considera questo dominio locale
    no-resolv           # non cercare su resolv.conf
    no-poll

A questo punto, basta fornire a dnsmasq le coppie di hostname e
indirizzi IP da risolvere. Per fare questo, basta configurarare
/etc/hosts ponendo gli hostname con un indirizzo fisso:

    127.0.0.1   localhost
    192.168.0.1 defiant.flameeyes.homelinux.net
    192.168.0.2 voyager.flameeyes.homelinux.net
    192.168.0.3 northstar.flameeyes.homelinux.net

dnsmasq leggerà il file per risolvere gli hostname locali, e troverà
l’IP a cui risolvere l’hostname fornito. Se l’indirizzo non è locale,
dnsmasq rimanderà la richiesta al server specificato, così che sia
sempre possibile avere una risposta corretta.

Configurare le macchine

Ovviamente perché le macchine della lan possano sfruttare il servizio
offerto da dnsmasq è necessario configurarle per utilizzarlo come server
DNS. Per fare ciò, su macchine Unix o Unix-like, basta configurare
/etc/resolv.conf come segue:

domain flameeyes.homelinux.net
nameserver 192.168.0.1
nameserver 999.999.999.999

tenendo conto che qui è stato scelto 192.168.0.1 come server DNS su cui
gira dnsmasq.

Ora potete provare a pingare l’host voyager, e vedrete che la
richiesta sarà verso 192.168.0.2 (sempre se avete settato il file
/etc/resolv.con come spiegato prima con l’opzione domain).


  1. Una specie di “proxy” per le connessioni IRC, che
    supporta anche i log delle conversazioni private quando non si è
    presenti.

    [return]

  2. Non uso più questo hostname da tempo, e ora è settato
    semplicemente staticamente su 127.0.0.1

    [return]