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

RedServidores_1.png

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