ServidorDNS - Jusaba/Domo-Serverpic GitHub Wiki
Un componente de la infrastructura fundamental es el Servidor de DNS. Es este capitulo descirbiremos que papel juega el servidor, su isntalación y su configuración de acuerdo a los siguientes apartados
Principio de funcionamiento del servidor DNS
Como se detalló cuando se describió el principio de funcionamiento de Serverpic V1, la dirección IP de mundo va cambiando y va adoptando de forma ciclica cada una de las direeciones de los distintos servidores que soportan el mundo.
Representamos de nuevo graficamente el sistema
Cuando el sistema arranca, el mundo micasa.serverpic.es adopta la dirección Ip de Serverpic_1.com, al cabo de un tiempo, se cambia la dirección del mundo por la del servidor Serverpic_2.com y así sucesivamente hasta completar el ciclo con la direccion de Serverpic_N.com, completado el ciclo, se vuelve a repetir de forma indefinida.
Hay dos Host que se habilitan como servidor de DNS, para nuestro ejemplo dns1.com y dns2.com.
Cada Host Cliente accede al servidor de DNS por http para que este registre nombre de Host
En este sistema juega un papel imprescindible el servidor de DNS
Instalacion
El servidor de DNS se soporta en minidyndns de arkanis. Para detalles de este software se puede acceder al repositorio en https://github.com/arkanis/minidyndns .
Como se dijo anteriormente, se habilitan dos Host para albergar el servidor de DNS, dns1.com y dns2.com.
Instalamos el paquete del repositorio en cada Host en, por ejemplo /home/pi/minidyndns, una vez instalado copiamos los ficheros config.example.yml y db.example.yml a config.yml y db.yml
Configuracion
Para configurar el servidor lo primero es decirle que dominio vamos a utilizar, para eso, accedemos a config.yml y ponemos nuestro dominio serverpic.es
# The domain hosted by this DNS server. It will only reply to requests
# regarding subdomains of this domain. Everything is ignored completely.
domain: serverpic.es
Luego tendremos que poner el puerto por el que accederemos mediante http al servidor, en nuestor caso 8001
# IP and port the HTTP server runs on
http:
port: 8001
ip: 0.0.0.0
Por último se puede actualizar el mail del admisnitrador del servidor
En db.yml se deben registrar los Host que van a utilizar el servidor, en nuesto caso, el mundo micasa.serverpic.es lo deberíamos registrar de la siguiente forma
picservertest:
pass: passlleida
A: 1.1.1.1
AA: ff80::1
Podriamos registrar cualquier Host que nos interese que forme parte del dominio, el servidor de DNS no es de uso exclusivo para Serverpic, por ejemplo, si quisieramos añadir un Host como lleida.serverpic.es añadiríamos estas líneas en db.yml
lleida:
pass: passlleida
A: 1.1.1.1
AA: ff80::1
Ya tenemos el servidor dns configurado y listo para funcionar, el siguiente paso es instalarlo como servicio y habilitarlo en el arranque del ordenador.
En primer lugar, creamos el fichero minidyndns en /usr/local/bin con el siguiente contenido
#!/bin/sh
Nombre_Servicio=minidyndns
Path_Servicio=/home/pi/minidyndns
Path_PID_Servicio=/tmp/minidyndns-pid
case $1 in
start)
echo "Iniciando $Nombre_Servicio ..."
if [ ! -f $Path_PID_Servicio ]; then
cd $Path_Servicio
nohup ruby dns.rb 1> dns.log 2>&1 &
echo $! > $Path_PID_Servicio
echo "$Nombre_Servicio iniciado ..."
else
echo "$Nombre_Servicio estaba iniciado ..."
fi
;;
stop)
if [ -f $Path_PID_Servicio ]; then
PID=$(cat $Path_PID_Servicio);
echo "Parando $Nombre_Servicio ..."
kill $PID;
echo "$Nombre_Servicio parado ..."
rm $Path_PID_Servicio
else
echo "$Nombre_Servicio no estaba iniciado ..."
fi
;;
restart)
if [ -f $Path_PID_Servicio ]; then
PID=$(cat $Path_PID_Servicio);
echo "Parando $Nombre_Servicio ...";
kill $PID;
echo "$Nombre_Servicio parado ...";
rm $Path_PID_Servicio
echo "Iniciando $Nombre_Servicio ..."
cd $Path_Servicio
nohup ruby dns.rb 1> dns.log 2>&1 &
echo $! > $Path_PID_Servicio
echo "$Nombre_Servicio iniciado ..."
else
echo "$Nombre_Servicio no puede iniciarse ..."
fi
;;
esac
Ahora en /lib/systemd/system creamos el fichero minidyndns.service con el siguiente contenido
[Unit]
Description = minidyndns
[Service]
Type = forking
ExecStart = /usr/local/bin/minidyndns start
ExecStop = /usr/local/bin/minidyndns stop
ExecReload = /usr/local/bin/minidyndns restart
[Install]
WantedBy=multi-user.target
Por último, tenemos que decir al sistema que habilite este servicio en el arranque con el siguiente comando
systemctl enable minidyndns.service
Reiniciamos el sistema y arrancará nuestro servicio