Per la rubrica Parliamo di informatica oggi creiamo un servizio dynamic dns fatto in casa.
Su
gandi.net 
ho configurato lo zone file per il mio dominio:
@ 10800 IN A 1.2.3.4
ns 10800 IN A 1.2.3.4
* 10800 IN CNAME ilmiodominio.com.
*.ns 10800 IN NS ns
Questo si legge così: la @ indica le richieste dell'indirizzo
ilmiodominio.com 
(vanno all'ip 1.2.3.4, A sta per address ipv4), stessa cosa per ns.ilmiodominio.com, poi wildcard per *.ilmiodominio.com che vanno sempre all'ip di cui sopra e infine *.ns.ilmiodominio.com che vanno a chiedere l'indirizzo al server (record NS).
Ora sul mio server che risponde a 1.2.3.4 ho installato bind ed aggiunto al file di configurazione /etc/named.conf la sezione:
zone "ilmiodominio.com" {
type master;
file "dnsdb.ilmiodominio.com";
allow-update { localhost; };
};
Ho detto che il file di definizione è /var/named/dnsdb.ilmiodominio.com e che le richieste di update vengono accettate solo da localhost e non dall'esterno.
Ho anche attivato un casino di logging perché non ci stavo riuscendo, ma quello è un altro discorso.
Ho creato lo zone file:
$ORIGIN ilmiodominio.com.
$TTL 1h
@ 1D IN SOA ilmiodominio.com. root.ilmiodominio.com. (
2016120301 ; serial
1H ; refresh
15M ; retry
1W ; expiry
1D ) ; ttl minimo
1D IN NS ns.ilmiodominio.com.
ns.ilmiodominio.com. 1D IN A 127.0.0.1
Avviato il servizio, dalla stessa macchina (per via di allow-update nel named.conf) ho provato ad inserire un record:
$ cat add_loopback.txt
server localhost
zone ilmiodominio.com
update add loopback.ns.ilmiodominio.com. 3600 A 127.0.0.1
show
send
$ nsupdate add_loopback.txt
Outgoing update query:
;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id: 0
;; flags:; ZONE: 0, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
;; ZONE SECTION:
;ilmiodominio.com. IN SOA
;; UPDATE SECTION:
loopback.ns.ilmiodominio.com. 3600 IN A 127.0.0.1
$
Infine dal pc di casa ho testato:
ping loopback.ns.ilmiodominio.com
PING loopback.ns.ilmiodominio.com (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64 time=0.026 ms
^C
--- loopback.ns.ilmiodominio.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.026/0.026/0.026/0.000 ms
Lascio come esercizio al lettore quello di creare una api http per lanciare nsupdate e gestire da remoto gli indirizzi.