Jump to content
From ArchWiki
Esta traducción de BIND fue revisada el 2017-01-24. Si existen cambios puede actualizarla o avisar al equipo de traducción.

Artículos relacionados

- DNSCrypt
- dnsmasq
- Pdnsd
- Unbound
- PowerDNS

BIND (Berkeley Internet Name Daemon) es la implementación de referencia del protocolo DNS (Domain Name System).

Nota: The organization developing BIND is serving security notices to paying customers up to four days before Linux distributions or the general public.[1]

## Instalación

Los siguientes pasos indican cómo instalar una configuración básica de BIND como servidor local DNS de solo caché.

Instale el paquete bind desde los repositorios oficiales.

Opcionalmente, edite `/etc/named.conf`, y añada la siguiente línea en la sección de opciones (options), para permitir únicamente conexiones de localhost:

    listen-on { 127.0.0.1; };

Edite resolv.conf para usar el servidor local DNS, 127.0.0.1.

Inicie `named.service` con systemd.

## Redireccionamiento

Cuando BIND actúa como un servidor de redireccionamiento DNS, almacena por una parte memoria caché de las búsquedas DNS ya realizadas, y por otra redirigirá las peticiones DNS no guardadas en caché a otros servidores DNS que se hayan definido, como podría ser el servidor DNS de nuestro ISP u otros servicios DNS globales como OpenNIC.

Para configurar el redireccionamiento DNS, basta con añadir las siguientes líneas a `/etc/named.conf` en la secciones de opciones globales (options) o en una sección de zona específica, y cambiar la dirección IP de acuerdo con la del servidor DNS que deseamos emplear.

    options {
     listen-on { 192.168.66.1; };
     forwarders { 8.8.8.8; 8.8.4.4; };
    };

Tras realizar este cambio, es necesario reiniciar `named.service`.

## Plantilla de configuración para ejecutar un dominio

Este es un sencillo tutorial para configurar una servidor DNS en una red doméstica con bind. Usaremos "domain.tld" como nuestro dominio.

Para ver ejemplo más elaborados, consúltese Two-in-one DNS server with BIND9.

### 1. Crear un archivo de zona

    # nano /var/named/domain.tld.zone

    $TTL 7200
    ; domain.tld
    @       IN      SOA     ns01.domain.tld. postmaster.domain.tld. (
                                            2007011601 ; Serial
                                            28800      ; Refresh
                                            1800       ; Retry
                                            604800     ; Expire - 1 week
                                            86400 )    ; Minimum
                    IN      NS      ns01
                    IN      NS      ns02
    ns01            IN      A       0.0.0.0
    ns02            IN      A       0.0.0.0
    localhost       IN      A       127.0.0.1
    @               IN      MX 10   mail
    imap            IN      CNAME   mail
    smtp            IN      CNAME   mail
    @               IN      A       0.0.0.0
    www             IN      A       0.0.0.0
    mail            IN      A       0.0.0.0
    @               IN      TXT     "v=spf1 mx"

$TTL define el tiempo de vida en segundos por defecto para todos los registros de todos los tipos. En este ejemplo es de 2 horas.

El número de serie (Serial) debe incrementarse manualmente antes de reiniciar named cada vez que se cambie un registro en la zona. De lo contrario los servidores esclavos no retransmitirán la zona, ya que para ello requieren un número serie mayor que el de la última versión de la zona que transfirieron.

### 2. Configurar un servidor maestro

Añade tu zona a `/etc/named.conf`:

    zone "domain.tld" IN {
            type master;
            file "domain.tld.zone";
            allow-update { none; };
            notify no;
    };

Inicie `named.service`.

Alternativamente, recargue los archivos de configuración. Esta última opción mantendrá el servidor disponible mientras se ejecuta el cambio.

### 3. Configurarlo como el servidor DNS por defecto

Si estamos ejecutando nuestro propio servidor DNS, podríamos querer usarlo no solo para redirigir peticiones DNS, sino para realizar todas las búsquedas DNS. Esto requiere la capacidad de hacer búsquedas recursivas. Para prevenir ataques de amplificación de DNS (DNS Amplification Attacks), la búsqueda recursiva está desactivada por defecto en la mayor parte de las configuraciones. El fichero Arch `/etc/named.conf` por defecto solo permite habilitar la recursión en la interfaz de circuito cerrado (loopback) del sistema.

    allow-recursion { 127.0.0.1; };

Por lo tanto, para permitir búsquedas DNS para nuestro equipo, el fichero resolv.conf debe incluir 127.0.0.1 como servidor de nombres. Consulte Conservar las configuraciones de DNS para prevenir que este fichero sea reescrito.

Para proveer un servicio de nombres a nuestra red local, por ejemplo 192.168.0, debemos añadir el rango apropiado de direcciones IP a `/etc/named.conf`:

    allow-recursion { 192.168.0.0/24; 127.0.0.1; };

## Configurar BIND para servir zonas firmadas con DNSSEC

This article or section needs expansion.

Reason: Esto es solo una lista de enlaces. (Discuss in Talk:BIND (Español))

- https://www.dnssec.net/practical-documents
  - https://www.cymru.com/Documents/secure-bind-template.html (plantilla de configuración)
  - https://www.bind9.net/manuals[enlace roto 2021-11-07]
  - https://www.bind9.net/BIND-FAQ[enlace roto 2021-11-07]
- http://blog.techscrawl.com/2009/01/13/enabling-dnssec-on-bind/
- O use un mecanismo externo tal como OpenDNSSEC (cambio de clave completamente automático)

## Escuchar automáticamente nuevas interfaces

Por defecto, bind hace un escaneo en búsqueda de nuevas interfaces cada hora, y deja de escuchar aquellas que dejan de existir. Este comportamiento se puede modificar añadiendo el parámetro:

    interface-interval <rescan-timeout-in-minutes>;

en la sección de opciones de `named.conf`, con un valor máximo de 28 días (40320 min). También se puede desactivar esta caraterística con el valor 0.

A continuación, reniciamos el servicio.

## Ejecutar BIND en un entorno chroot

Ejecutar en un entorno chroot mejora la seguridad del servidor DNS.

### Crear un sistema de archivos para la jaula chroot

En primer lugar, debemos crear un lugar donde contener la jaula chroot, como el directorio `/srv/named` por ejemplo, y disponer todos los archivos necesarios para el funcionamiento de BIND en el mismo.

     mkdir -p /srv/named/{dev,etc,usr/lib/engines,var/{run,log,named}}
     # Copy over required system files
     cp -av /etc/{localtime,named.conf} /srv/named/etc/
     cp -av /usr/lib/engines/* /srv/named/usr/lib/engines/
     cp -av /var/named/* /srv/named/var/named/.
     # Set up required dev nodes
     mknod /srv/named/dev/null c 1 3
     mknod /srv/named/dev/random c 1 8
     # Set Ownership of the files
     chown -R named:named /srv/named

Estas operaciones deberían crear el sistema de archivos necesario para la jaula chroot.

### Archivo de servicio

A continuación, debemos crear un nuevo archivo de servicio que fuerce bind a ejecutarse dentro de chroot.

     cp -av /usr/lib/systemd/system/named.service /etc/systemd/system/named-chroot.service

editando cómo el servicio llama a bind.

    /etc/systemd/system/named-chroot.service

      ExecStart=/usr/bin/named -4 -f -u named -t "/srv/named"

Ahora, reload systemd `systemctl daemon-reload`. Entonces inicie `named-chroot.service`

## Véase también

- BIND 9 DNS Administration Reference Book
- DNS and BIND by Cricket Liu and Paul Albitz
- Pro DNS and BIND
- Internet Systems Consortium, Inc. (ISC)
- DNS Glossary[enlace roto 2021-11-07]
- Archived mailing list discussion on BIND's future

Category:

- Domain Name System (Español)

Hidden categories:

- Pages or sections flagged with Template:Expansion
- Pages with dead links