Tenemos que montar 2 servidores de DNS, un maestro y un esclavo, el esclavo simplemente va a recibir las actualizaciones del maestro, así que los cambios sólo los vamos a realizar al servidor de DNS maestro.
Instalamos bind en ambos equipos
# apt-get install bind9
Y creamos los ficheros de zona en /var/lib/bind/, por ejemplo el de capa8.cat
# vi capa8.cat.hosts $ttl 1800 capa8.cat. IN SOA ns1.craem.net. hostmaster.craem.net. ( 1386607334 10800 3600 604800 38400 ) IN NS ns1.capa8.cat. IN NS ns2.capa8.cat. IN MX 10 mx1.capa8.cat. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @ IN A 81.184.1.215 ;; PLACE 1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; c-router 1H IN A 109.69.8.25 c-radius 1H IN A 109.69.8.26 c-proxmox 1H IN A 109.69.8.27 ;; CRAEM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; jabber 1H IN A 109.69.10.129 nagios 1H IN A 109.69.10.129 cloud 1H IN A 109.69.10.130 ns1 1H IN A 109.69.10.133 vmadmin 1H IN A 10.138.13.82 zeus 1H IN A 81.184.1.215 sip 1H IN A 188.165.119.7 mx1 1H IN A 81.184.1.215 www 1H IN CNAME zeus ;; BLACKHOLD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; alfresco 1H IN A 109.69.10.136 ;;syslog 1H IN A 109.69.10.137 ns2 1H IN A 109.69.10.138 alfresco.guifi 1H IN A 10.228.192.215 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Atención, MX no puede ser CNAME, tiene que ser A y A siempre va vinculado a una IP.
Y para gestionar las inversas, para ejemplo para el rango 109.69.10.128/27
# vi 109.69.10.128_27.rev $ORIGIN 128/27.10.69.109.in-addr.arpa. $TTL 28800 @ IN SOA ns1.capa8.cat. hostmaster.capa8.cat. ( 1384107250 ;serial number 10800 ;refresh 3600 ;update retry 604800 ;expiry 38400 ;nx =nxdomain ttl ) IN NS ns1.capa8.cat. 129 IN PTR ns1.capa8.cat. 130 IN PTR www.capa8.cat. 131 IN PTR mx1.capa8.cat. 132 IN PTR ip132.capa8.cat. 133 IN PTR ip133.capa8.cat. 134 IN PTR ip134.capa8.cat. 135 IN PTR ip135.capa8.cat. 136 IN PTR ip136.capa8.cat. 137 IN PTR ip137.capa8.cat. 138 IN PTR ns2.capa8.cat. 139 IN PTR ip139.capa8.cat. 140 IN PTR ip140.capa8.cat. 141 IN PTR ip141.capa8.cat. 142 IN PTR ip142.capa8.cat. 143 IN PTR ip143.capa8.cat. 144 IN PTR ip144.capa8.cat. 145 IN PTR ip145.capa8.cat. 146 IN PTR ip146.capa8.cat. 147 IN PTR ip147.capa8.cat. 148 IN PTR ip148.capa8.cat. 149 IN PTR ip149.capa8.cat. 150 IN PTR ip150.capa8.cat. 151 IN PTR ip151.capa8.cat. 152 IN PTR ip152.capa8.cat. 153 IN PTR ip153.capa8.cat. 154 IN PTR ip154.capa8.cat. 155 IN PTR ip155.capa8.cat. 156 IN PTR ip156.capa8.cat. 157 IN PTR ip157.capa8.cat. 158 IN PTR ip158.capa8.cat. 159 IN PTR ip159.capa8.cat. ;; para generar automáticamente estas líneas ;; $GENERATE 129-159 $ PTR ip-$.capa8.cat.
Este será el contenido del fichero /etc/bind/named.conf.local (en este servidor de dns estoy gestionando/tengo delegados 3 rangos de red distintos.
// RANG 0 zone "24/29.8.69.109.in-addr.arpa" { type master; file "/var/lib/bind/109.69.8.24_29.rev"; allow-query { any; }; }; // RANG 1 zone "128/27.10.69.109.in-addr.arpa" { type master; file "/var/lib/bind/109.69.10.128_27.rev"; allow-query { any; }; }; // RANG 2 zone "192/26.10.69.109.in-addr.arpa" { type master; file "/var/lib/bind/109.69.10.192_26.rev"; allow-query { any; }; }; // master capa8.cat zone "capa8.cat" { type master; file "/var/lib/bind/capa8.cat.hosts"; };
Una vez realizado esto en el servidor maestro, vamos a replicar estos ficheros en el servidor esclavo.
Nota: Esto no se hace así, la forma correcta de hacerlo es usar el modo maestro-esclavo de bind. Pendiente de documentar :P Pero así también funciona hehe
Primero hacemos un ssh-copy-id para poder acceder a ns2.capa8.cat desde ns1.capa8.cat sin tener que poner el password.
# cd # cd .ssh # ssh-keygen -t rsa # ssh-copy-id -i id_rsa.pub root@109.69.10.138 # ssh root@109.69.10.138
Y creamos un script que replique los ficheros al secundario automáticamente.
# vi /root/scripts/dns_primary_to_slave.sh #!/bin/bash VAR=$(rsync -av --delete /var/lib/bind/ root@109.69.10.138:/var/lib/bind/ |wc -l) rsync -av --delete /etc/bind/ root@109.69.10.138:/etc/bind/ if [ "$VAR" -gt 4 ]; then echo "reboto bind ns2" ssh root@109.69.10.138 '/etc/init.d/bind9 restart' fi
Le damos permisos de ejecución
# chmod +x /root/scripts/dns_primary_to_slave.sh
Y haremos que el script se ejecute cada 10 minutos en cron. Añadimos este contenido al final del fichero:
# vi /etc/crontab # dns primary to slave */10 * * * * root /root/scripts/dns_primary_to_slave.sh
¡Y a replicar!
Thnks craem y fompi :)
Ah! y no me olvido de ZUNbado que siempre le doy la brasa con los dns de marsupi! :D
Buena entrada… aprender a replicar dns por @Blackhold_
http://t.co/ttLAx4KwWC
RT @craem_: Buena entrada… aprender a replicar dns por @Blackhold_
http://t.co/ttLAx4KwWC
Replicar un servidor de DNS de un maestro a un esclavo –
http://t.co/BW2GGtMotT
Replicar un servidor de DNS de un maestro a un esclavo –
http://t.co/BW2GGtMotT
Pingback: dnsservices: interno por guifi, externo a mano | Blackhold