Montar un Servidor DNS en una Raspberry PI 2 (II)

En la anterior entrada, completamos la configuración básica de la Raspi. Algunas cosas más que no quedaron reflejadas en el post fue, por ejemplo, el establecimiento de la zona horaria. Esta entrada se centra en la configuración de la red.

Lo primero que voy a hacer es echarle un ojo a la configuración de las interfaces de red:

Imagen23

Lo que estamos viendo es que:

  • El nombre de la máquina sigue siendo “raspberrypi”
  • La dirección IP sigue siendo la que obtenemos por dhcp.
  • Está activado IPv6. Dado que yo no uso IPv6 en mi red voy a deshabilitarlo.

Pasito a pasito. Para empezar, para establecer el nombre de la máquina edito el fichero /etc/hostname y pongo el nombre de la máquina con el dominio.

Imagen27

El establecimiento de la dirección IP estática lo hago editando dhcpcd.conf. Para ello, ya que es más cómodo que andar usando vi (o nano) me lo voy a traer al PC y usar un editor de texto más amigable. Para estos movimientos de ficheros utilizo WinSCP. Establezco, en dhcpcd.conf las siguientes líneas:

Imagen25

Los servidores de nombres los he establecido al propio host y a los servidores de OpenDNS. Después de estos dos cambios, rearranco y pruebo a ver si el nombre de máquina, el dominio y la IP ya están establecidos.

El nombre del host si cambió, la dirección IP no. Afortunadamente la Pi volvió a coger la dirección IP que le había dado el servidor DHCP. Tras dar unas vueltas con el syslog miro la configuración de las interfaces (ifconfig) y aparece esto:

Imagen30

No aparece la interfaz eth0 y aparece un nombre largo de interfaz. Lo que ocurre es que no está usando nombres de interfaces predecibles. Para corregirlo, edito el fichero /boot/cmdline.txt y añado, al final, la directiva net.ifnames=0

Imagen31

Rearranco y compruebo si ha cogido la nueva IP haciendo un ping desde el PC:

Imagen32

Ya no responde la 192.168.1.133 y ahora responde la 192.168.1.6. Voy a conectarme con putty a la nueva IP ver qué es lo que dice ifconfig:

Imagen33

La interfaz eth0 ya está bien configurada pero sigue estando activo el IPv6. Investigando un poco, para deshabilitar IPv6 hay que añadir la directiva ipv6.disable=1

Imagen34

Rearranco y verifico que IPv6 ya no aparece. Para terminar con esta parte y, antes de instalar bind, voy a comprobar si el servicio avahi está activo y si lo está, desactivarlo:

Imagen35

Como se ve está activo, así que lanzo el comando:

sudo systemctl disable avahi-daemon

Rearranco (una vez más) y compruebo que el servicio esté desactivado. En la siguiente entrega, la instalación de bind.

Anuncios

Montar un Servidor DNS en una Raspberry PI 2 (I)

Después de llevar mucho tiempo sin publicar voy a seguir registrando mis experimentos. Lo que voy a intentar es montar un servidor DNS para la red doméstica sobre la Raspi.

Para empezar, un poco de planificación. Ya tengo un servidor DNS en el entorno lab montado sobre Ubuntu y ser capaz de operar con dos servidores es un reto. Las posibilidades de configuración son casi infinitas pero me decido por tener dos servidores master que, lo único que significa es que ambos servidores tienen su propia copia de la información de zonas que sincronizaré (espero) a través del servidor de svn. La idea es que puedan funcionar de forma independiente y que no necesite tener arrancado uno u otro para que todo el entorno funcione.

La ventaja de una configuración Master – Slave es que los datos de zona están en un solo sitio (en el master) y el slave accede a ellos a través de transferencias de zona. La desventaja es, por supuesto, que para que pueda darse la transferencia de zona, el master tiene que estar arrancado.

Hay otra configuración posible que es configurar el DNS del lab virtual como stealth master pero, a estas alturas del partido, me parece complicar mucho el entorno y no tengo claro que, para que esto funcione, no tenga que tener arrancada la Raspi además del DNS en la DMZ del entorno virtualizado. Así que configuración master – master y replicación de la información de zonas a través de svn.

Imagen3

Para empezar voy a partir de una instalación limpia de Raspbian sobre una tarjeta MicroSD de Clase 10 de 16GB. La Raspi va a conectarse sólo por cable ethernet a través de un switch de 8 puertos. La dirección IP va a ser fija (192.168.1.6), dentro del rango de direccionamiento de la LAN doméstica (192.168.1.0/24). La la Raspi va a ser headless así que toda la configuración la voy a hacer a través de SSH.

Lo primero es descargarse Raspbian, como quiero un sistema lo más simple posible, me descargo la versión Raspbian Stretch Lite. Descomprimo la imagen descargada y mediante Win32DiskImager grabo la imagen a la tarjeta SD.

Imagen5

Una vez que acabe la grabación, insertaremos la MicroSD en la Raspberry y estaremos listos para el primer arranque de Raspbian.

El primer problema es encontrar la Raspi en la red. Probablemente obtenga una dirección IP por DHCP (está conectada por cable ethernet) pero no sabemos cuál es. La forma fácil es conectarse al router y ver qué dirección le asigna:

Imagen7

Le ha asignado la dirección 192.168.1.133. Nos conectamos a esta dirección mediante putty y … ¡Houston tenemos un problema!, la Raspi rechaza la conexión. Resulta que Raspbian viene con el SSH deshabilitado por defecto. La solución, para habilitar SSH es crear un fichero vacío, de nombre SSH en la partición de boot de la Raspberry. Apago la Rasp y saco la MicroSD y vuelta al PC.

Imagen9

Expulsar la SD, extraer la micro, insertarla en la Raspi, arrancar de nuevo e intentar de nuevo la conexión con putty. En el primer intento voy a confiar que el servidor DHCP le haya asignado la misma IP, sino es así, me tocará repetir los pasos que he hecho antes con el router de banda ancha.

Imagen10

Aparece el mensaje de advertencia de seguridad en la conexión SSH en relación con la clave del host, pulso “Sí”:

Imagen11

Me aparece la consola solicitándome las credenciales del usuario. Introduzco las credenciales por defecto (pi, raspberry) y entro:

Imagen12

Como soy un tío serio, antes de nada voy a cambiar la contraseña del usuario:

Imagen14

El siguiente paso es actualizar los componentes del sistema operativo:

Imagen17

Imagen18

Tras un rato actualizando cosas y un rearranque abordaremos el último paso para dejar la Raspi lista para el combate. Este último paso es expandir la partición root para usar todo el espacio de la tarjeta MicroSD. Primero lanzo el comando lsblk para ver cómo está el almacenamiento y veo (sorpresa) que está ocupado todo el almacenamiento de la tarjeta. Así que no hay nada que hacer.

Imagen21

De haber sido necesario hubiera utilizado raspi-config.

Más en la siguiente entrega.

Ahora un servidor de nombres

1. Introducción

Una vez completada la configuración de la red de gestión, voy a empezar a configurar distintos servidores en el entorno. Para empezar, voy a desplegar un servidor de nombres, basado en bind para mi entorno.

El servidor DNS, como no podía ser de otra forma, lo voy a instalar en la DMZ. La red virtual del lab, va tomando forma de este modo:

dns3

2. Creación y preconfiguración de la máquina virtual

Creo una máquina virtual con la configuración estándar (1GB de RAM y 10 GB de disco):

dns1

Instalo el sistema operativo, Ubuntu para no variar. Antes de ponerme con el despliegue de bind, tengo una serie de tareas que completar:

a) En primer lugar me toca configurar la segunda tarjeta de red para que se conecte a la red de gestión. Esto es, a priori, sencillo, no hay más que configurar la interfaz de gestión en /etc/network/interfaces

dns7

dns8

b) El segundo aspecto a configurar es enviar los logs al servidor de logs. Editamos el fichero /etc/rsyslog.conf y añadimos al final la línea correspondiente:

dns9

c) Por último, necesitamos instalar NRPE y configurarlo para poder monitorizar el servidor DNS desde Nagios. Los pasos a seguir están descritos aquí. Asimismo, tengo que crear los objetos necesarios en el servidor de Nagios para que la monitorización sea efectiva. Finalmente, ya tengo controlado el nuevo servidor en Nagios:

dns10

3. Instalando bind

Instalo el paquete bind9, las utilidades asociadas y la documentación:

dns11

Compruebo que el servicio named esté a la escucha en el puerto 53:

dns12

Todo correcto pero voy a hacer que sólo resuelva para IPv4. Para ello edito el fichero /etc/default/bind9 y añado –4 al parámetro OPTIONS.

dns13

Rearranco el servicio y verifico que no esté escuchando en el puerto 53 en IPv6:

dns14

4. Configurando bind

Ahora voy a configurar bind para que sea el servidor de nombres de mi dominio lab (tcantos.local).

Editamos el fichero de opciones de configuración de bind (/etc/bind/named.conf.options), añadiendo un acl para las redes de mi lab y configurando las opciones de acuerdo a mi entorno. El fichero queda de la siguiente forma:

dns15

A continuación vamos a definir las zonas. Para ello editamos el fichero /etc/bind/named.conf.local. Definimos una zona de resolución directa para las distintas redes del entorno lab y cuatro zonas de resolución inversa para las distintas redes:

dns16

dns17

Ahora definimos los ficheros de datos de bind para la resolución directa e inversa:

  • tcantos.local.db

dns18

  • 2.1.10.db (servidores de backend)

dns20

  • 3.1.10.db (Red de estaciones de trabajo)

dns21

  • 2.168.192.db (DMZ)

dns19

  • 199.168.192.db (Red de Gestión)

dns22

Una vez creados los ficheros necesarios, los llevamos al servidor y verificamos la configuración, las zonas y rearrancamos el servidor bind.

dns23

Finalmente, configuramos los clientes. En los servidores ubuntu editamos el fichero /etc/resolvconf/resolv.conf.d/head para añadir las líneas necesarias y ejecutamos resolvconf:

dns24

Verificamos el funcionamiento del servidor dns con dig y nslookup:

dns25

dns26

dns27

Parece que todo funciona, sólo queda configurar el resto de los equipos.