Languages

User login


Com crear automaticament els fitxers de zona de Resolució Inversa als servidors DNS de guifi


 En l'entrada anterior del blog vaig explicar com fer les proves. Ara he automatitzat el sistema, incloent unes linees de codi a les funcions CNML de guifi.net per poder obtenir un llistat de les IPs públiques de guifi, junt amb el nom curt del trasto i id.

Ens caldrà un script que automàticament llegeixi el CNML i crei els fitxers de zona de resolució inversa (RRZ). N'he fet un amb PHP a mode d'exemple, és el que tinc provat i funcionant. Aquest script està posat al crontab del servidor DNS master del Penedès. Cada dia a les 4 del matí llegeix el CNML amb les IPs de guifi.net, el processa i crea els fitxers de zona. La resta de servidors del Penedès sòn esclaus, i quan s'actualitza el master amb els nous fitxers de zona, ells també ho fan.

L'script esta adjunt en aquest document. Per a posar-lo en marxa en el vostre servidor DNS, suposant que sigui una Debian/Ubuntu amb el dimoni bind9, el que heu de fer és editar el fitxer /etc/bind/named.conf.local i afegir al final:

 

zone "10.in-addr.arpa" IN {

  type master;

  file "/etc/bind/10.ip.guifi.net.rrz";

};

zone "172.in-addr.arpa" IN {

  type master;

  file "/etc/bind/172.ip.guifi.net.rrz";

};

 

Si no el teniu, instaleu l'interpret en línea del PHP:

 apt-get install php5-cli

Copieu l'script que llegeix el CNML i crea els fitxers de zona:

cd /root

mkdir scripts

cd scripts

wget http://guifi.net/files/get_guifi_ips.php_0.txt

mv get_guifi_ips.php_0.txt get_guifi_ips.php

Creeu manualment per primera vegada els fitxers de zona:

cd /etc/bind && php /root/scripts/get_guifi_ips.php  && /etc/init.d/bind9 reload

Ja els teniu funcionant, proveu de fer un traceroute. Per posar-ho al crontab perque s'actualitzai cada dia a les 4 del mati:

crontab -u root -e

Hi afegiu a la ultima linea:

0 4 * * * cd /etc/bind && php /root/scripts/get_guifi_ips.php  && /etc/init.d/bind9 reload

Sortiu de l'editor, i llestos.

 

AttachmentSize
get_guifi_ips.php.txt2.91 KB