Home | History | Documents | Software | Feedback | Disclaimer

Configuración de Arda.Homeunix.Net DNS & DHCP

Indice

  1. Introducción
  2. Preliminares
  3. DNS
    1. Servidor principal del DNS (Master)
      1. Archivos de configuración
      2. Archivos de zona
      3. Actualización manual de archivos de zona
      4. Ejecución de BIND Chrooted
      5. Scripts de arranque
    2. Servidor esclavo de DNS (Slave)
      1. Archivos de configuración
      2. Archivos de zona
      3. Ejecución de BIND Chrooted
      4. Scripts de arranque
  4. DHCP
    1. Archivos de configuración
    2. Ejecución de DHCP Chrooted
    3. Scripts de arranque
  5. Sitios de interés
  6. Lecturas adicionales

Introducción

Este documento describe cómo el DNS y DHCP trabajan en la red de Arda. He utilizado muchas de las características del DNS y de DHCP en mi configuración así que este documento proporciona una guía bastante comprensiva en cuanto a cómo conseguir que funcione. Este documento incluye:

Este documento no es un tutorial de cómo trabajan el DNS o DHCP. No enseña cómo utilizar el software descrito. Este documento proporciona un ejemplo de configuración de DNS/DHCP. Si Ud. es nuevo utilizando DNS o DHCP, seguramente necesitará conocimientos adicionales para entender lo que será presentada aquí. No tenga pánico, los conocimientos del DNS y DHCP son básicos en la operación de las redes IP, tales conocimientos son fáciles de alcanzar.

Preliminares

Elegí utilizar la implementación del Internet Systems Consortium's (ISC) del DNS y de DHCP para la red de Arda. ¿Por qué?, se preguntará Ud. Pues porque están ambos en amplio uso así que pensé que podría encontrar muchas facilidades para ayudarme a configurar el software. Resultó que estaba en lo correcto. Particularmente, confié en un libro excelente de O'Reilly Press llamado 'DNS and BIND'. Este libro proporciona mucha información útil; lo recomiendo.

Las versiones de software que utilizo son:

Conocer las versiones del software es muy importante. Para BIND, la sintaxis de la configuración ha cambiado muchísimo entre las versiones, tanto que lo descrito aquí puede ser aplicado únicamente para BIND 9.

En el archivo de configuración de DHCP, la opción utilizada para invocar las actualizaciones dinámicas con un servidor del DNS es también sensible a la versión de DHCP.

Podrá encontrar una descripción que incluye una muy bonito diagrama de Arda Network aqui.

¿Por qué he ido al apuro a instalar el DNS y DHCP en mi red?, seguramente se preguntará. Bien, la respuesta más simple es porque lo quise. La respuesta más complicada se divide en dos partes. Encuentro aburrido poner al día archivos del host teniendo el DNS que me permite actualizar dos archivos de zona en el servidor de DNS del amo siempre que algo cambie en mi red. También a veces traigo a mi casa una computadora portátil del trabajo y quiero conectarla en mi red casera para hacer transferir archivos desde y a ella. Puesto que utiliza DHCP en mi trabajo, pensé que podía instalarlos en casa también. Espero haya muchas maneras más simples de lograr lo, pero no me imagino que tan interesante como yo lo hice.

Algo a tener en mente en la lectura de este documento es que el DNS en la red de Arda está configurado para servir únicamente a mi red local. No configuré el DNS para que sirva al mundo exterior. y, de hecho, configuré mi servidor DNS para prevenir que desde el exterior se pueda tener acceso a leer mis archivos de zona. Si Ud. quiere tener una zona que sirva al internet, deberá diseñarla de forma diferente a la que se describe aquí. Si Uds. desean crear un DNS cache (un servidor de cache almacena resultados de un DNS de preguntas pero no un servidor de zona) refiéranse a DNS cache Configuré mi máquina Thebe utilizando djbdns.

DNS

El DNS en la red de Arda es manejado por dos máquinas, Europa y Io, que actúan en conjunto master/slave. El uso de estas dos máquinas automatizó las transferencias de la zona, aseguradas mediante TSIG keys, para estar sincronizados. El master del servidor de DNS también es puesto al día en forma dinámica por el servidor de DHCP. Las actualizaciones dinámicas también se aseguran usando TSIG keys.

En Europa y Io, todas las llaves de TSIG fueron generadas usando este comando:

Las llaves (keys) fueron cortadas y pegadas en los archivos de configuración correspondientes. En los archivos de la configuración enumerados abajo, cuando dos llaves en diversos archivos son referidas por el mismo nombre, es porque la misma llave se utiliza en ambos archivos.

Dos dominios se describen en mi configuración DNS, arda.homeunix.net y arda.homelinux.net. El primer dominio es el típico dominio del Internet. Todas las máquinas en mi red casera son parte de este dominio. El segundo dominio es un dominio virtual. Es utilizado por Callisto, mi servidor de correo, de modo que pueda encaminar el email por este dominio. Ninguna máquina real pertenece al dominio de arda.homelinux.net. Aunque incluyo solamente un dominio virtual en este documento, no me limito a uno. Podría hacer que tantos dominios virtuales como quiera simplemente agregando los archivos de zona apropiados y actualizando eñ archivo de configuración del servidor DNS named.conf.

Servidor principal del DNS (Master)

Archivos de Configuración

Debido a que utilizo TSIG para asegurar la transferencia entre zona y rndc, presento los permisos de varios archivos de configuración por ser muy importante. Aquí­ está la propiedad y los permisos de varios archivos de la configuración en Europa. Tome nota de la propiedad y de los permisos de los archivos relacionados con rndc. Se fijan de esta manera para que el usuario named pueda leer estos archivos, pero solamente root puede cambiarlos.

Archivo

Propietario

Permisos

/etc/namedb/etc/named.conf

root:root

644

/etc/namedb/etc/rndc.key

root:named

640

/etc/rndc.conf

root:root

600

/etc/resolv.conf

root:root

644



Aquí está mi archivo de configuración del servidor DNS named.conf:



Algunas aclaraciones referentes a mi archivo de named.conf :

aquí está mi archivo my rndc.conf:

y aquí mi archivo rndc.key:

Mi archivo /etc/resolv.conf se mira así:

Archivos Zona

Los nueve archivos zone están ubicados en /etc/namedb/master. La seccion que describe como se ejecuta BIND en chroot jail presenta un listado del directorio.

Hay dos archivos *.jnl en el directorio /etc/namedb/master. Se producen cuando el dhcpd actualiza mis archivos de la zona.

Aquí están lo que parecen ser mis archivos de zona:

Archivos Zone

Contenidos

arda.homeunix.net.zone

$ORIGIN .
$TTL 86400      ; 1 day
arda.homeunix.net       IN SOA  europa.arda.homeunix.net. postmaster.arda.homeunix.net. (
                                20060705   ; serial
                                21600      ; refresh (6 hours)
                                3600       ; retry (1 hour)
                                604800     ; expire (1 week)
                                21600      ; minimum (6 hours)
                                )
                        NS      io.arda.homeunix.net.
                        NS      europa.arda.homeunix.net.
                        MX      10 callisto.arda.homeunix.net.
$ORIGIN arda.homeunix.net.
metis                   A       192.168.10.1
thebe                   A       10.10.0.1
io                      A       192.168.10.5
europa                  A       192.168.10.9
callisto                A       192.168.10.6
$TTL 14400      ; 4 hours
ganymede                A       192.168.10.28
                        TXT     "311cc5d6b2b528cc61e23c831e840a6bf4"
$TTL 86400      ; 1 day
mail                    CNAME   callisto
www                     CNAME   io
        

arda.homelinux.net.zone

$ORIGIN .
$TTL 86400      ; 1 day
arda.homelinux.net      IN SOA  europa.arda.homeunix.net. postmaster.arda.homeunix.net. (
                                20070706   ; serial
                                21600      ; refresh (6 hours)
                                3600       ; retry (1 hour)
                                604800     ; expire (1 week)
                                86400      ; minimum (1 day)
                                )
                        NS      io.arda.homeunix.net.
                        NS      europa.arda.homeunix.net.
                        MX      10 callisto.arda.homeunix.net.
        

10.168.192.in-addr.arpa

$ORIGIN .
$TTL 86400      ; 1 day
10.168.192.in-addr.arpa IN SOA  europa.arda.homeunix.net. postmaster.arda.homeunix.net. (
                                20060705   ; serial
                                21600      ; refresh (6 hours)
                                3600       ; retry (1 hour)
                                604800     ; expire (1 week)
                                21600      ; minimum (6 hours)
                                )
                        NS      io.arda.homeunix.net.
                        NS      europa.arda.homeunix.net.
$ORIGIN 10.168.192.in-addr.arpa.
1                       PTR     metis.arda.homeunix.net.
$TTL 14400      ; 4 hours
28                      PTR     ganymede.arda.homeunix.net.
$TTL 86400      ; 1 day
5                       PTR     io.arda.homeunix.net.
6                       PTR     callisto.arda.homeunix.net.
9                       PTR     europa.arda.homeunix.net.
        

0.10.10.in-addr.arpa

$ORIGIN .
$TTL 86400      ; 1 day
0.10.10.in-addr.arpa    IN SOA  europa.arda.homeunix.net. postmaster.arda.homeunix.net. (
                                20070705   ; serial
                                21600      ; refresh (6 hours)
                                3600       ; retry (1 hour)
                                604800     ; expire (1 week)
                                86400      ; minimum (1 day)
                                )
                        NS      io.arda.homeunix.net.
                        NS      europa.arda.homeunix.net.
$ORIGIN 0.10.10.in-addr.arpa.
1                       PTR     thebe.arda.homeunix.net.
        

localhost.zone

$TTL 1w
@        IN SOA europa.arda.homeunix.net. postmaster.arda.homeunix.net. (
                                        1       ; Serial
                                        6h      ; Refresh after 6 hours
                                        1h      ; Retry after 1 hour
                                        1w      ; Expire after 1 week
                                        1d )    ; Negative caching TTL of 1 day

                        IN      NS      europa.arda.homeunix.net.
                        IN      NS      io.arda.homeunix.net.

localhost.              IN      A       127.0.0.1       
        

localhost.rev

$TTL 1w
@        IN SOA europa.arda.homeunix.net. postmaster.arda.homeunix.net. (
                                        1       ; Serial
                                        6h      ; Refresh after 6 hours
                                        1h      ; Retry after 1 hour
                                        1w      ; Expire after 1 week
                                        1d )    ; Negative caching TTL of 1 day

                        IN      NS      europa.arda.homeunix.net.
                        IN      NS      io.arda.homeunix.net.

1                       IN      PTR     localhost.
        

named.broadcast
named.network

$TTL 1w
@       IN SOA europa.arda.homeunix.net. postmaster.arda.homeunix.net. (
                                        1       ; Serial
                                        6h      ; Refresh after 6 hours
                                        1h      ; Retry after 1 hour
                                        1w      ; Expire after 1 week
                                        1d )    ; Negative caching TTL of 1 day

                IN      NS      europa.arda.homeunix.net.
                IN      NS      io.arda.homeunix.net.   
        

named.bind

$TTL 1d
$ORIGIN bind.
@       CHAOS SOA europa.arda.homeunix.net. postmaster.arda.homeunix.net. (
                                        1       ; Serial
                                        6h      ; Refresh after 6 hours
                                        1h      ; Retry after 1 hour
                                        1w      ; Expire after 1 week
                                        1d )    ; Negative caching TTL of 1 day

                CHAOS   NS      localhost.

version.bind.   CHAOS   TXT     "BIND 9.3.2"
authors.bind.   CHAOS   TXT     "Are at home at the ISC."
        

named.root

; <<>> DiG 9.3.2 <<>> @a.root-servers.net . ns
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63591
;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13

;; QUESTION SECTION:
;.                              IN      NS

;; ANSWER SECTION:
.                       518400  IN      NS      C.ROOT-SERVERS.NET.
.                       518400  IN      NS      G.ROOT-SERVERS.NET.
.                       518400  IN      NS      F.ROOT-SERVERS.NET.
.                       518400  IN      NS      B.ROOT-SERVERS.NET.
.                       518400  IN      NS      J.ROOT-SERVERS.NET.
.                       518400  IN      NS      K.ROOT-SERVERS.NET.
.                       518400  IN      NS      L.ROOT-SERVERS.NET.
.                       518400  IN      NS      M.ROOT-SERVERS.NET.
.                       518400  IN      NS      I.ROOT-SERVERS.NET.
.                       518400  IN      NS      E.ROOT-SERVERS.NET.
.                       518400  IN      NS      D.ROOT-SERVERS.NET.
.                       518400  IN      NS      A.ROOT-SERVERS.NET.
.                       518400  IN      NS      H.ROOT-SERVERS.NET.

;; ADDITIONAL SECTION:
C.ROOT-SERVERS.NET.     3600000 IN      A       192.33.4.12
G.ROOT-SERVERS.NET.     3600000 IN      A       192.112.36.4
F.ROOT-SERVERS.NET.     3600000 IN      A       192.5.5.241
B.ROOT-SERVERS.NET.     3600000 IN      A       192.228.79.201
J.ROOT-SERVERS.NET.     3600000 IN      A       192.58.128.30
K.ROOT-SERVERS.NET.     3600000 IN      A       193.0.14.129
L.ROOT-SERVERS.NET.     3600000 IN      A       198.32.64.12
M.ROOT-SERVERS.NET.     3600000 IN      A       202.12.27.33
I.ROOT-SERVERS.NET.     3600000 IN      A       192.36.148.17
E.ROOT-SERVERS.NET.     3600000 IN      A       192.203.230.10
D.ROOT-SERVERS.NET.     3600000 IN      A       128.8.10.90
A.ROOT-SERVERS.NET.     3600000 IN      A       198.41.0.4
H.ROOT-SERVERS.NET.     3600000 IN      A       128.63.2.53

;; Query time: 99 msec
;; SERVER: 198.41.0.4#53(198.41.0.4)
;; WHEN: Thu Jul  6 08:00:26 2006
;; MSG SIZE  rcvd: 436
        

En los archivos .zone y 10.168.192.in-addr.arpa de arda.homeunix.net, los registros de fuente (resource records RR) para el host Ganymede fueron insertados por DHCP. Los otros archivos más el resto de los archivos de zona fueron creados a mano con una excepción:

El archivo de named.root no fue creado a mano sino por la salida de esta pregunta con dig:

Este comando se puede volver a efectuar periódicamente para actualizar la lista de servidores de nombres root . Los servidores de nombres root no cambian muy a menudo así que la puesta al día de este archivo dos veces por un año es más que suficiente. Las actualizaciones frecuentes pueden deshacer la carga de los servidores de nombres root; tienen bastantes que hacer mientras existen.

El archivo arda.homelinux.net .zone no contiene ningún registro A. Su único propósito es identificar el servidor de correos, vía el registro MX, al cual se debe enviar el correo.

Actualización manual de los archivos de Zona

Hay momentos en que he necesitado actualizar manualmente un archivo de zona. Puesto que en Europa está el servidor de nombres principal (Master), siempre realizo el cambio en esta máquina y no prohibo el normal proceso de transferencia de la zona y se difunda el cambio a Io. Por supuesto, porque tengo un servidor de nombres slave y porque estoy actualizando dinámicamente con DHCP, el proceso de hacer cambios tiene algunos pasos:

  1. Utilizar el rndc para parar BIND.
  2. Borrar cualquier archivo .jnl del directorio de zona.
  3. Editar los archivos de zona cuanto sea necesario. Cerciorarse de incrementar el número de serie de cualquier archivo corregido.
  4. Comenzar BIND utilizando el script de arranque.

Si necesita corregir los archivos de la zona que no están sujetos a actualizaciones dinámicas, entonces no necesita detener BIND. Cuando edite los archivos de zona recuerde incrementar el número de serie y ejecutar un comando de recarga del rndc, tan simple como eso. Siempre y cuando realice cambios en un servidor de nombres principal, el comando de recarga tendrá cuidado de inicializar cualquier transferencia de zona que necesite.

Ejecución de BIND Chrooted

En Europa, no sólo corre BIND con privilegios reducidos, también funciona chroot jail. Aquí está cómo lo hice.

  1. La primera cosa a hacer era decidir donde poner todo. Decidí crear el directorio /etc/namedb que se convirtió en raíz de BIND.

  2. Necesité agregar directorios y archivos a namedb. Aquí está como se veían las cosas:

  1. Antes de que comenzar a usar los canales del registro (log channels) en named.conf, necesité dar a BIND una manera de enviar mensajes al syslog dentro de chroot jail. Para lograrlo, modifiqué una lí­nea en el archivo /etc/sysconfig/syslog:

    Parar y comenzar el syslog harán que un nuevo zócalo (socket) en syslog aparezca en el directorio /etc/namedb/dev. Puesto que utilizo los canales del registro, no hago este paso otra vez.

  1. Lo hecho anteriormente modifica los parámetros de arranque de BIND diciéndole que funcione en “jail”. Hice esto agregando la línea siguiente al archivo /etc/sysconfig/named.

Scripts de Arranque

Corrí BIND bajo usuario y grupo “named”. Así es cómo se ve script de lanzamiento /etc/rc.d/init.d/named. Necesité modificarla de modo que buscara binarios en /usr/local/sbin en vez de /usr/sbin y buscara rndc.conf en /etc y no en chroot jail.

Servidor Slave de DNS

La configuración del DNS en Io sigue de cerca lo hecho para Europa. Las diferencias más grandes vienen del hecho que el Io es un servidor de nombres auxiliar slave y BIND en Europa debe acomodar actualizaciones dinámicas mientras que no lo hace en Io.

Archivos de Configuración

Aquí está la propiedad y los permisos de varios archivos de la configuración:

Archivos

Propietario

Permisos

/var/named/etc/namedb/named.conf

root:wheel

644

/var/named/etc/namedb/rndc.key

root:bind

640

/var/named/etc/namedb/rndc.conf

root:wheel

600

/etc/resolv.conf

root:wheel

644

Aquí está mi archivo named.conf:

Este archivo parece mucho a mi archivo named.conf en Europa pero hay algunas diferencias:

Aquí está mi archivo de rndc.conf:

Y aquí está mi archivo rndc.key.

Mi archivo /etc/resolv.conf se parece a esto:

Archivos de Zona

En Io, los archivos de zona están en el directorio /etc/namedb/master y /etc/namedb/slave. La seccion presenta la ejecución de BIND como chroot, los directorios aparecen asi:

Aquí están los nueve archivos de la zona en el Io:

Archivos Zone

Contenidos

bak.arda.homelinux.net.zone

copiado de Europa automáticamente por transferencia de zona

bak.arda.homeunix.net.zone

copiado de Europa automáticamente por transferencia de zona

bak.10.168.192.in-addr.arpa

copiado de Europa automáticamente por transferencia de zona

bak.0.10.10.in-addr.arpa

copiado de Europa automáticamente por transferencia de zona

localhost.zone

$TTL 1w
@        IN SOA europa.arda.homeunix.net. postmaster.arda.homeunix.net. (
                                        1       ; Serial
                                        6h      ; Refresh after 6 hours
                                        1h      ; Retry after 1 hour
                                        1w      ; Expire after 1 week
                                        1d )    ; Negative caching TTL of 1 day

                        IN      NS      europa.arda.homeunix.net.
                        IN      NS      io.arda.homeunix.net.

localhost.              IN      A       127.0.0.1
        

localhost.rev

$TTL 1w
@        IN SOA europa.arda.homeunix.net. postmaster.arda.homeunix.net. (
                                        1       ; Serial
                                        6h      ; Refresh after 6 hours
                                        1h      ; Retry after 1 hour
                                        1w      ; Expire after 1 week
                                        1d )    ; Negative caching TTL of 1 day

                        IN      NS      europa.arda.homeunix.net.
                        IN      NS      io.arda.homeunix.net.

1                       IN      PTR     localhost.
        

named.broadcast
named.network

$TTL 1w
@       IN SOA europa.arda.homeunix.net. postmaster.arda.homeunix.net. (
                                        1       ; Serial
                                        6h      ; Refresh after 6 hours
                                        1h      ; Retry after 1 hour
                                        1w      ; Expire after 1 week
                                        1d )    ; Negative caching TTL of 1 day

                        IN      NS      europa.arda.homeunix.net.
                        IN      NS      io.arda.homeunix.net.
        

named.bind

$TTL 1w
$ORIGIN bind.
@       CHAOS SOA europa.arda.homeunix.net. postmaster.arda.homeunix.net. (
                                        1       ; Serial
                                        6h      ; Refresh after 6 hours
                                        1h      ; Retry after 1 hour
                                        1w      ; Expire after 1 week
                                        1d )    ; Negative caching TTL of 1 day

                        CHAOS   NS      localhost.

version.bind.           CHAOS   TXT     "BIND 9.3.1"
authors.bind.           CHAOS   TXT     "Are at home at the ISC."       
        

named.root

; <<>> DiG 9.3.1 <<>> @a.root-servers.net . ns
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41586
;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13

;; QUESTION SECTION:
;.                              IN      NS

;; ANSWER SECTION:
.                       518400  IN      NS      F.ROOT-SERVERS.NET.
.                       518400  IN      NS      B.ROOT-SERVERS.NET.
.                       518400  IN      NS      J.ROOT-SERVERS.NET.
.                       518400  IN      NS      K.ROOT-SERVERS.NET.
.                       518400  IN      NS      L.ROOT-SERVERS.NET.
.                       518400  IN      NS      M.ROOT-SERVERS.NET.
.                       518400  IN      NS      I.ROOT-SERVERS.NET.
.                       518400  IN      NS      E.ROOT-SERVERS.NET.
.                       518400  IN      NS      D.ROOT-SERVERS.NET.
.                       518400  IN      NS      A.ROOT-SERVERS.NET.
.                       518400  IN      NS      H.ROOT-SERVERS.NET.
.                       518400  IN      NS      C.ROOT-SERVERS.NET.
.                       518400  IN      NS      G.ROOT-SERVERS.NET.

;; ADDITIONAL SECTION:
F.ROOT-SERVERS.NET.     3600000 IN      A       192.5.5.241
B.ROOT-SERVERS.NET.     3600000 IN      A       192.228.79.201
J.ROOT-SERVERS.NET.     3600000 IN      A       192.58.128.30
K.ROOT-SERVERS.NET.     3600000 IN      A       193.0.14.129
L.ROOT-SERVERS.NET.     3600000 IN      A       198.32.64.12
M.ROOT-SERVERS.NET.     3600000 IN      A       202.12.27.33
I.ROOT-SERVERS.NET.     3600000 IN      A       192.36.148.17
E.ROOT-SERVERS.NET.     3600000 IN      A       192.203.230.10
D.ROOT-SERVERS.NET.     3600000 IN      A       128.8.10.90
A.ROOT-SERVERS.NET.     3600000 IN      A       198.41.0.4
H.ROOT-SERVERS.NET.     3600000 IN      A       128.63.2.53
C.ROOT-SERVERS.NET.     3600000 IN      A       192.33.4.12
G.ROOT-SERVERS.NET.     3600000 IN      A       192.112.36.4

;; Query time: 86 msec
;; SERVER: 198.41.0.4#53(198.41.0.4)
;; WHEN: Mon May 15 00:01:43 2006
;; MSG SIZE  rcvd: 436
        

Los archivos de zona arda.homelinux.net .zone, arda.homeunix.net .zone, 10.168.192.in-addr.arpa y 0.10.10.in-addr.arpa en Europa se copian a su “bak” correspondiente en Io no los enumero otra vez aquí.

Los archivos localhost.zone, named.broadcast, named.network y named.bind simplemente se copian de Europa sin modificación.

FreeBSD proporciona el script make-localhost para crear el reverso de zona del localhost. No uso este script, copié el archivo localhost.rev de Europa junto con todo.

Como con Europa, el archivo named.root es salida de un comando dig que enumerar toda la raíz de servidores de nombres.

Ejecución de BIND Chrooted

Como en Europa, en Io corrí BIND sin privilegios y en chroot jail. Realmente no hay nada que hacer en FreeBSD, el script de arranque que viene con el Sistema Operativo hace todo por uno la primera vez que se inicia named. En mi caso, debí editar el archivo named.conf, copié los archivos de zona desde Europa, y cree los archivos rndc.key, y rndc.conf. El directorio FreeBSD utilizado por jail para esto es /var/named. Aquí está una vista después que añadí archivos y después que se transfirió la zona desde Europa.

Todos los archivos y dispositivos necesitaron correr BIND en jail, automaticamente aparecen cuando el named inicia. Revise la sección que describe el funcionamiento de BIND en chroot jail en Europa para una explicación sobre qué hacen estos archivos y dispositivos.

Scripts de Arranque

Para ejecutar BIND desde el arranque del sistema (system boot), inserte estas línea en /etc/rc.conf.

Si realmente quiere que BIND ejecute chroot jail desde un directorio diferente, puede añadir esta línea en /etc/rc.conf:

Si decide hacer esto, recuerde copiar la estructura del directorio encontrado en /var/named a su chroot elegido, de otra manera toda esa automatización maravillosa que expliqué no trabajará.

Menciono eso porque FreeBSD configura BIND para trabajar como usuaria bind sin privilegios. ¿Si es así, Ud no necesita crear usuario o realizar configuraciones extra en named. No está mal, no?

DHCP

Cuando instalé DHCP en Europa, utilicé un tarball en lugar de un RPM porque quise aplicar un parche (patch) que permite a DHCP funcionar con privilegios reducidos y ser chrooted. Encontrará un enlace (link) a este parche en la sección Sitios de interés en el final de este documento. Este parche se llama “dhcp-3.0+paranoia”. Para utilizar este parche, necesita pasar algunas opciones en configure cuando compile DHCP, no se olvide de leer los comentarios al inicio del archivo. Aquí estan las opciones que utilicé cuando compilé DHCP:

Archivos de Configuración

Aquí está mi my dhcpd.conf:

El archivo dhcpd.conf provee toda la información que será entregada al cliente DHCP y también controla la actualización dinámica con el servidor DNS. Varios puntos en referencia a este archivo:


Ejecución de DHCP Chrooted

Igual que BIND, ejecuté DHCP con privilegios reducidos y en chroot jail. El proceso para hacerlo es similar al que hice para BIND, pero hay algunas diferencias. Aquí está cómo instalé DHCP para que funcione desde el directorio /etc/dhcpdb:

  1. Lo primero es crear el usuario y grupo dhcpd. A diferencia de BIND, hice esto manualmente. Elegí el conocido y enteramente fiable nombre 'dhcpd' tanto para el usuario como para el grupo.

  2. Necesité agregar directorios y archivos a /etc/dhcpdb. Así es como quedó una vez que terminé:

  1. Necesité dar a DHCP una manera de enviar mensajes al syslog desde chroot jail. Para lograr esto modifiqué una línea en el archivo /etc/sysconfig/:

    Parar e iniciar syslog causará que un nuevo zócalo de syslog aparezca en /etc/dhcpdb/dev.

  2. Note que el archivo de configuración de dhcpd no está en jail. Está ubicado en /etc. Aquí están las características de este archivo:

    El parche de dhcp-3.0+paranoia pide al dhcpd que lea dhcpd.conf antes de que pierda privilegios e invoque a chroot jail, esto porque el archivo es propiedad de root y se localiza fuera de jail. Fijé restricciones a los permisos de este archivo porque contiene las claves TSIG utilizadas para la actualización dinámica de BIND. Con la propiedad y permisos sobre este archivo con esta particular forma previene que el demonio pueda modificarlo mientras lo lee en el arranque. Solamente un proceso con privilegios de root (probablemente un sysadmin entrado como root) puedan modificar este archivo.

Scripts de Arranque

No sólo ejecuto, especifico el usuario, grupo y chroot jail en el arranque de DHCP, también especifico la interfaz particular DHCP que escucha las peticiones. Aquí está mi script de arranque /etc/rc.d/init.d/dhcpd. Modifiqué este archivo, algo problemático, para que DHCP se ejecute en chrooted.

Sitios de interés

BIND
DHCP

http://www.isc.org/

dhcp-3.0+paranoia.patch

http://www.episec.com/people/edelkind/patches/

Lecturas adicionales

Bind9.net – Una muy buena fuente de información sobre DNS y DHCP

http://www.bind9.net/

DNS Página del Grupo Webstart – Enlaces a información sobre DNS

http://www.the-paynes.com/DNS/

Configuración del DNS y localización de errores – Desarrolla la versión 8 de BIND

http://www.troubleshooters.com/linux/dns.htm

Compilación y ejecución de BIND 9

http://www.unixwiz.net/techtips/bind9-chroot.html

Plantillas seguras de BIND

http://www.cymru.com/Documents/secure-bind-template.html

Copyright © 2003-2006 Andrew St. Jean Last update Jul. 6, 2006
Traducción al español Henry Izurieta Last update May. 26, 2007

Apache Webserver

FreeBSD