Questo forum fa uso dei cookie
Questo forum utilizza i cookie per memorizzare i dettagli del tuo login o della tua ultima visita. I cookie sono piccoli files di testo salvati nel computer; i cookie da noi utilizzati sono relativi unicamente ai servizi da noi forniti direttamente o dai banner pubblicitari. I cookie su questo forum salvano inoltre i dettagli relativi alle discussioni lette e alle tue preferenze personali. Sei pregato di selezionare il tasto OKAY se sei consapevole della presenza di questi files e ci autorizzi ad utilizarli per le informazioni specificate.

Indipendentemente dalla tua scelta un cookie verrà salvato per memorizzare nel tuo pc la risposta a questo form. Puoi modificare le impostazioni relative ai cookie nelle preferenze del tuo browser.

  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
Script per aggiundere DNS locale i client dhcp

#1
Come ho detto nella mia presentazione, la mia lan casalinga è abbastanza aterogenea e dinamica, per cui mi sono trovalo nella necessità di poter raggiundere i miei client (stampante, pc, ps3 ecc.) premite hostname e non tramite ip.

Prima di acquistere il l'attuale mikrotik, avevo un tp-link modificato dd-wrt con il quale ero riuscio egregiamente a soddisfare la necessità del dns locale. Adesso con RouterOs, come si fa?

Ecco che come al solito un pò di pazienza e conoscenza dell'inglese, sono riuscito a trovare in rete ciò che faceva al caso mio.

Lo script che segue, funzionante su routeros 6.19, non necessiata di alcuna modifica, non fa altro che leggere la dhcp-server lease e le sostituisce alle entry dinamiche del dns...
Successivamente ho schedulato l'esecuzione dello script ogni 60sec (ma l'intervallo lo si piò decidere in base alle proprie esigenze)

Codice:
/system script
add name=Local_Dns policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive source="# Domain to be added to your DHCP-clients hostname\
    \n:local topdomain;\
    \n:set topdomain \"martinet.local\";\
    \n\
    \n# Use ttl to distinguish dynamic added DNS records\
    \n:local ttl;\
    \n:set ttl \"00:59:59\";\
    \n\
    \n# Set variables to use\
    \n:local hostname;\
    \n:local hostip;\
    \n:local free;\
    \n\
    \n# Remove all dynamic records\
    \n/ip dns static;\
    \n:foreach a in=[find] do={\
    \n  :if ([get \$a ttl] = \$ttl) do={\
    \n    :put (\"Removing: \" . [get \$a name] . \" : \" . [get \$a address]);\
    \n    remove \$a;\
    \n  }\
    \n}\
    \n\
    \n/ip dhcp-server lease ;\
    \n:foreach i in=[find] do={\
    \n  /ip dhcp-server lease ;\
    \n  :if ([:len [get \$i host-name]] > 0) do={\
    \n    :set free \"true\";\
    \n    :set hostname ([get \$i host-name] . \".\" . \$topdomain);\
    \n    :set hostip [get \$i address];\
    \n    /ip dns static ;\
    \n# Check if entry already exist\
    \n    :foreach di in [find] do={\
    \n      :if ([get \$di name] = \$hostname) do={\
    \n        :set free \"false\";\
    \n        :put (\"Not adding already existing entry: \" . \$hostname);\
    \n      }\
    \n    }\
    \n    :if (\$free = true) do={\
    \n      :put (\"Adding: \" . \$hostname . \" : \" . \$hostip ) ;\
    \n      /ip dns static add name=\$hostname address=\$hostip ttl=\$ttl;\
    \n    }\
    \n  }\
    \n}"

Se ritenete utili modifiche, postate pure...
Cita messaggio

#2
spostato in guide ufficiali Smile
Cita messaggio

#3
Ho rimesso mano allo script e mi sono accorto che ad ogni esecuzione lui senza sapere ne leggere e ne scrivere, cancella dal dns statico tutti gli hosts dinamici e ricrea tutto. Funziona, nulla da dire, ma credo faccia del lavoro inutile (per quanto breve esso sia).

Pensavo di eseguire un controllo con un paio di if annidati affinchè verifichi se un host è già presente nella tabella (passatemi il termine) del dns e se true, confronti gli ip ed intervenga solo se questi ultimi sono diversi, aggiornando l'indirizzo

qualcosa del genere:

Codice:
if ($DHCPSHOST-NAME = $DNSNAME) do={
    :if ($DHCPADDRESS = $DNSADDRESS) do={
    :put ($DNSNAME ." gia' esistente"
    } else{ PROCEDE CON L?AGGIORNAMENTO DELL'INDIRIZZO }

qualcuno ha idea di cove inserirlo e come modificare lo script originario?

ecco come si comporta attualmente::

[admin@mikrotik] /system script> run script1
Rimuovo: android-6cc071b5366a1f90.martinet.local : 17.6.77.9
Rimuovo: Ada-pc.martinet.local : 17.6.77.18
Non aggiunto, AL-M2400.martinet.local gia' esistente!
Non aggiunto, freenas.martinet.local gia' esistente!
Non aggiunto, Michele-PC.martinet.local gia' esistente!
Aggiungo: android-6cc071b5366a1f90.martinet.local : 17.6.77.9
Aggiungo: Ada-pc.martinet.local : 17.6.77.18

Come vedete ad inizio script rimuove le due entry dinamiche per poi aggiungerle ancora identiche (perchè il lease-time nel frattempo non è scaduto)

i "Non aggiungo" si riferisco ad entry statiche nel dhcp-server.
Cita messaggio


Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  [Mikrotik] Riservare un indirizzo ip dal DHCP Server kikko 2 2'810 29-09-2016, 10:02
Ultimo messaggio: kikko
  Guida per redirezionare uno o più client su una pagina web utilizzando RouterOS mannana93 9 6'595 01-01-2014, 23:21
Ultimo messaggio: hamtarociaoo
  Guida: Script aggiornamento DynDNS hamtarociaoo 0 1'660 08-09-2013, 15:32
Ultimo messaggio: hamtarociaoo
  Configurare il DHCP client su routerOS kikko 7 3'820 06-06-2013, 13:10
Ultimo messaggio: kikko
  Configurare il dhcp su routerOS kikko 0 2'514 06-06-2013, 11:26
Ultimo messaggio: kikko

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


Utenti che stanno guardando questa discussione:
1 Ospite(i)


Powered by MyBB, © 2002-2019 MyBB Group.