-
dynamic dns fatto in casaPer 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.Young professional woman and busy mom.-
Re: dynamic dns fatto in casaInvece di perder tempo dietro alle cacate di wakko ho finito il progetto di ieri.
Sul server ho installato openresty, che sarebbe un nginx scriptabile in lua (che da oggi in avanti definirò una merda di linguaggio).
Installato openresty ho definito nel suo nginx.conf il puntamento allo script lua:... server { listen 80; server_name ns.ilmiodominio.com; location /nsadmin { content_by_lua_file conf/nsadmin.lua; } } ...
E definito lo script lua seguente:local key = ngx.var.arg_key local domain = ngx.var.arg_domain local ip = ngx.var.arg_ip fd = io.open("/opt/openresty/nginx/conf/credentials.txt") for line in fd:lines() do local lkey, ldomain = line:match("^([^:]*):([^:]*)$") if key == lkey and domain == ldomain then if ip == nil then break end ngx.log(ngx.DEBUG, "updating: k=" .. key .. " d=" .. domain .. " i=" .. ip) local cmd = 'server localhost\n' cmd = cmd .. 'zone ilmiodominio.com\n' cmd = cmd .. 'update delete ' .. domain .. '.ns.ilmiodominio.com A\n' cmd = cmd .. 'update add ' .. domain .. '.ns.ilmiodominio.com 3600 A ' .. ip .. '\n' cmd = cmd .. 'show\n' cmd = cmd .. 'send\n' ngx.say('nsupdate command:\n' .. cmd) p = io.popen("echo '" .. cmd .. "' | nsupdate 2>&1") for pline in p:lines() do ngx.say(pline .. "\n") end p.close() return end end fd:close() ngx.say("unauthorized")
Ho creato il file credentials.txt che contiene le coppie chiave-dominio separate da due punti:passwordsegretissima:nomedelsottodominio
Abilitato e startato il servizio openresty mi sono dedicato al client, dove ho creato uno script che esegue:#!/usr/bin/env sh exec curl -v 'http://ns.ilmiodominio.com/nsadmin?key=passwordsegretissima&domain=nomedelsottodominio&ip='$(ifdata -pa eth0)
ifdata si trova in moreutils.
Ed infine inserito l'esecuzione dello script nel crontab del client.
Mission accomplished!
**Modificato dall'autore il 03.12.2016 19:38**Young professional woman and busy mom.-
Re: dynamic dns fatto in casaScritto daNon Autenticatoil 2016-12-03 20:55:31.0 alle 2016-12-03 20:55:31.0Scritto da: ::1
> Invece di perder tempo dietro alle cacate di wakko ho finito il progetto di ieri.
>
> Sul server ho installato openresty, che sarebbe un nginx scriptabile in lua (che da oggi in avanti definirò una merda di linguaggio).
> Installato openresty ho definito nel suo nginx.conf il puntamento allo script lua:
>> ... > server { > listen 80; > server_name ns.ilmiodominio.com; > location /nsadmin { > content_by_lua_file conf/nsadmin.lua; > } > } > ... >
>
> E definito lo script lua seguente:
>> local key = ngx.var.arg_key > local domain = ngx.var.arg_domain > local ip = ngx.var.arg_ip > > fd = io.open("/opt/openresty/nginx/conf/credentials.txt") > for line in fd:lines() do > local lkey, ldomain = line:match("^([^:]*):([^:]*)$") > if key == lkey and domain == ldomain then > if ip == nil then > break > end > ngx.log(ngx.DEBUG, "updating: k=" .. key .. " d=" .. domain .. " i=" .. ip) > local cmd = 'server localhost\n' > cmd = cmd .. 'zone ilmiodominio.com\n' > cmd = cmd .. 'update delete ' .. domain .. '.ns.ilmiodominio.com A\n' > cmd = cmd .. 'update add ' .. domain .. '.ns.ilmiodominio.com 3600 A ' .. ip .. '\n' > cmd = cmd .. 'show\n' > cmd = cmd .. 'send\n' > ngx.say('nsupdate command:\n' .. cmd) > p = io.popen("echo '" .. cmd .. "' | nsupdate 2>&1") > for pline in p:lines() do > ngx.say(pline .. "\n") > end > p.close() > return > end > end > fd:close() > > ngx.say("unauthorized") >
>
> Ho creato il file credentials.txt che contiene le coppie chiave-dominio separate da due punti:
>> passwordsegretissima:nomedelsottodominio >
>
> Abilitato e startato il servizio openresty mi sono dedicato al client, dove ho creato uno script che esegue:
>> #!/usr/bin/env sh > exec curl -v 'http://ns.ilmiodominio.com/nsadmin?key=passwordsegretissima&domain=nomedelsottodominio&ip='$(ifdata -pa eth0) >
> ifdata si trova in moreutils.
>
> Ed infine inserito l'esecuzione dello script nel crontab del client.
> Mission accomplished!
Tutto ciò è molto interessante, ma al di fuori della mia portata
Ad alto livello, il tuo DNS dinamico privato come funziona?
Dovessi farmene uno pecoreccio metterei su un server online, sotto un dominio, uno script che se non ha il mio IP scrive "offline", se lo ha funge da proxy (andrebbe visto come) verso casa mia. Allo script comunico l'IP collegandomi, ma bisognerebbe anche fare in modo che solo io possa farlo.-
Re: dynamic dns fatto in casaScritto da:
> Tutto ciò è molto interessante, ma al di fuori della mia portata
>
> Ad alto livello, il tuo DNS dinamico privato come funziona?
Metti una riga password:dominio nel file credentials.txt, e poi fai chiamare al client periodicamente la url di aggiornamento dell'ip.
> Dovessi farmene uno pecoreccio metterei su un server online, sotto un dominio, uno script che se non ha il mio IP scrive "offline", se lo ha funge da proxy (andrebbe visto come) verso casa mia. Allo script comunico l'IP collegandomi, ma bisognerebbe anche fare in modo che solo io possa farlo.
Non è questo lo scopo del progetto. Per fare quello che dici te bisogna scriptare un reverse tunnel ssh.Young professional woman and busy mom.
-
-
Re: dynamic dns fatto in casaCi ho scritto una pagina qua: https://suoranciata.github.io/self-hosted-dynamic-...

Qualcuno mi verifica la grammatica?Young professional woman and busy mom.-
Re: dynamic dns fatto in casaScritto da: ::1
> Ci ho scritto una pagina qua: https://suoranciata.github.io/self-hosted-dynamic-...
> Qualcuno mi verifica la grammatica?
The first line tell
The first line tells
o
The first lines tellGrammar macht frei-
Re: dynamic dns fatto in casaScritto da: Grammar Nazi
> Scritto da: ::1
> > Ci ho scritto una pagina qua: https://suoranciata.github.io/self-hosted-dynamic-...
> > Qualcuno mi verifica la grammatica?
>
> The first line tell
>
> The first line tells
>
> o
>
> The first lines tell
Ok, non ti fermare alla prima frase però, controlla anche il resto.Young professional woman and busy mom.-
Re: dynamic dns fatto in casaScritto daNon Autenticatoil 2016-12-04 16:57:19.0 alle 2016-12-04 16:57:19.0Scritto da: ::1
> Scritto da: Grammar Nazi
> > Scritto da: ::1
> > > Ci ho scritto una pagina qua: https://suoranciata.github.io/self-hosted-dynamic-...
> > > Qualcuno mi verifica la grammatica?
> >
> > The first line tell
> >
> > The first line tells
> >
> > o
> >
> > The first lines tell
>
> Ok, non ti fermare alla prima frase però, controlla anche il resto.
S'è inceppato
-
-
-
-
-
Re: dynamic dns fatto in casaScritto daavvelenatoun mezzo cavalloil 2016-12-03 21:58:22.0 alle 2016-12-03 21:58:22.0Trollate totali: 14239I pedoni possono muoversi solo in avanti.
-
-
Re: dynamic dns fatto in casaScritto daavvelenatoun mezzo cavalloil 2016-12-04 02:58:43.0 alle 2016-12-04 02:58:43.0Trollate totali: 14239Scritto da: ::1
> Scritto da: avvelenato
> > Scritto da: ::1
> > >
> > > 2016120301 ; serial
> >
> >
> > srsly?
>
> uai not?
In realtà ti invidio, hai una passione forte.I pedoni possono muoversi solo in avanti.-
Re: dynamic dns fatto in casaScritto daNon Autenticatoil 2016-12-04 16:53:14.0 alle 2016-12-04 16:53:14.0Scritto da: avvelenato
> Scritto da: ::1
> > Scritto da: avvelenato
> > > Scritto da: ::1
> > > >
> > > > 2016120301 ; serial
> > >
> > >
> > > srsly?
> >
> > uai not?
>
> In realtà ti invidio, hai una passione forte.
Anch'io lo invidio, praticamente vive per programmare.-
Re: dynamic dns fatto in casaScritto da:
> Scritto da: avvelenato
> > Scritto da: ::1
> > > Scritto da: avvelenato
> > > > Scritto da: ::1
> > > > >
> > > > > 2016120301 ; serial
> > > >
> > > >
> > > > srsly?
> > >
> > > uai not?
> >
> > In realtà ti invidio, hai una passione forte.
>
> Anch'io lo invidio, praticamente vive per programmare.
Non è così, non sopporto i task ripetitivi e le limitazioni artificiali; la programmazione è il mezzo che ho per superarli.Young professional woman and busy mom.-
Re: dynamic dns fatto in casaScritto daNon Autenticatoil 2016-12-04 19:13:01.0 alle 2016-12-04 19:13:01.0Scritto da: ::1
> Scritto da:
> > Scritto da: avvelenato
> > > Scritto da: ::1
> > > > Scritto da: avvelenato
> > > > > Scritto da: ::1
> > > > > >
> > > > > > 2016120301 ; serial
> > > > >
> > > > >
> > > > > srsly?
> > > >
> > > > uai not?
> > >
> > > In realtà ti invidio, hai una passione forte.
> >
> > Anch'io lo invidio, praticamente vive per programmare.
>
> Non è così, non sopporto i task ripetitivi e le limitazioni artificiali; la programmazione è il mezzo che ho per superarli.
È quasi così. Qualsiasi problema, in mezz'ora te ne esci con la prima versione di uno script per risolverlo. Io impiegherei sei mesi.-
Re: dynamic dns fatto in casaScritto da:
>
> È quasi così. Qualsiasi problema, in mezz'ora te ne esci con la prima versione di uno script per risolverlo. Io impiegherei sei mesi.
Si tratta solo di farlo in continuazione, per ogni cosa che vedi.
Io avevo lo stesso problema in iRacing, pensavo di essere veramente lento e non essere bravo come tanti altri, invece poi vedi che loro si allenano ogni giorno, anche solo mezz'ora, ma con costanza; quando ho il tempo di farlo con assiduità, come durante le feste o in qualche weekend dove ci spendo più tempo, i miei tempi sul giro scendono, la costanza di risultati in gara arriva e così via.Young professional woman and busy mom.
-
-
-
-
-
-
-