Guía BIND de Gentoo
1.
Introducción
Este tutorial le enseñará cómo instalar y configurar BIND, el servidor
DNS más utilizado en Internet. Configuraremos bind para su
dominio usando distintas configuraciones, una para la red local y otra
para el resto del mundo. Para hacer esto, usaremos vistas (en inglés
views), una para la zona interna (su red local) y otra para la zona
externa (el resto del mundo).
2.
Los datos usados en los ejemplos
| Palabra clavev |
Explicación |
Ejemplo |
| SU_DOMINIO |
El nombre del dominio |
gentoo.org |
| SU_IP_PUBLICA |
La dirección ip asignada por el ISP |
204.74.99.100 |
| SU_IP_LOCAL |
La dirección ip local |
192.168.1.5 |
| SU_RED_LOCAL |
La red local |
192.168.1.0/24 |
| SERVIDOR_ESCLAVO_DNS |
La dirección ip del servidor esclavo DNS para el dominio. |
209.177.148.228 |
| ADMIN |
El nombre del administrador del servidor DNS. |
root |
| MODIFICACION |
La fecha de modificación del archivo de zona, con un número más. |
2009062901 |
Ilustración 2.1: Ejemplo de la red |
 |
3.
Configurando BIND
Instalación
Antes que nada, instale net-dns/bind.
Listado de Código 3.1: Instalando bind |
# emerge net-dns/bind
|
Configurando /etc/bind/named.conf
Lo primero que debemos configurar es el archivo
/etc/bind/named.conf. La primera parte de este paso es
especificar el directorio raíz de bind, el puerto de escucha con los
IPs, el archivo pid y una línea para el protocolo ipv6.
Listado de Código 3.2: Sección de opciones |
options {
directory "/var/bind";
listen-on-v6 { none; };
listen-on port 53 { 127.0.0.1; SU_IP_LOCAL; };
pid-file "/var/run/named/named.pid";
};
|
La segunda parte de named.conf es la vista interna usada
por nuestra red local.
Listado de Código 3.3: Vista interna |
view "internal" {
match-clients { SU_RED_LOCAL; localhost; };
recursion yes;
zone "SU_DOMINIO" {
type master;
file "pri/SU_DOMINIO.internal";
allow-transfer { any; };
};
};
|
La tercera parte de named.conf es la vista externa usada
para resolver nuestro nombre de dominio para el resto del mundo y para
resolver todos los demás nombres de dominios para nuestros usuarios (y
cualquiera que desee usar nuestro servidor DNS).
Listado de Código 3.4: Vista externa |
view "external" {
match-clients { any; };
recursion no;
zone "." IN {
type hint;
file "named.ca";
};
zone "127.in-addr.arpa" IN {
type master;
file "pri/127.zone";
allow-update { none; };
notify no;
};
zone "SU_DOMINIO" {
type master;
file "pri/SU_DOMINIO.external";
allow-query { any; };
allow-transfer { SERVIDOR_ESCLAVO_DNS; };
};
};
|
La parte final de named.conf es la política de registro.
Listado de Código 3.5: Política de registro |
logging {
channel default_syslog {
file "/var/log/named/named.log" versions 3 size 5m;
severity debug;
print-time yes;
print-severity yes;
print-category yes;
};
category default { default_syslog; };
};
|
El directorio /var/log/named/ debe existir y pertenecer a
named:
Listado de Código 3.6: Creando el archivo de registro |
# mkdir -p /var/log/named/
# chmod 770 /var/log/named/
# touch /var/log/named/named.log
# chmod 660 /var/log/named/named.log
# chown -R named /var/log/named/
# chgrp -R named /var/log/named/
|
Creando el archivo de la zona interna
Usamos los nombres de anfitriones y direcciones IP de la red ejemplo
cuya imagen aparece arriba. Note que casi todos (no todos) los nombres
de dominios terminan en un "." (punto).
Listado de Código 3.7: /var/bind/pri/SU_DOMINIO.internal |
$TTL 2d
@ IN SOA ns.SU_DOMINIO. ADMIN.SU_DOMINIO. (
MODIFICACION ; serial
3h ; refresh
1h ; retry
1w ; expiry
1d ) ; minimum
SU_DOMINIO. IN MX 0 mail.SU_DOMINIO.
SU_DOMINIO. IN TXT "v=spf1 ip4:SU_IP_PUBLICA/32 mx ptr mx:mail.SU_DOMINIO ~all"
SU_DOMINIO. IN NS ns.SU_DOMINIO.
SU_DOMINIO. IN NS SERVIDOR_ESCLAVO_DNS
www.SU_DOMINIO. IN A 192.168.1.3
ns.SU_DOMINIO. IN A 192.168.1.5
mail.SU_DOMINIO. IN A 192.168.1.3
router.SU_DOMINIO. IN A 192.168.1.1
hell.SU_DOMINIO. IN A 192.168.1.3
heaven.SU_DOMINIO. IN A 192.168.1.5
desktop.SU_DOMINIO. IN A 192.168.1.4
|
Creando el archivo de la zona externa
Aquí solo tenemos los subdominios que queremos para los clientes
externos(www, mail y ns).
Listado de Código 3.8: /var/bind/pri/SU_DOMINIO.external |
$TTL 2d
@ IN SOA ns.SU_DOMINIO. ADMIN.SU_DOMINIO. (
MODIFICACION ;serial
3h ;refresh
1h ;retry
1w ;expiry
1d ) ;minimum
SU_DOMINIO. IN MX 0 mail.SU_DOMINIO.
SU_DOMINIO. IN TXT "v=spf1 ip4:SU_IP_PUBLICA/32 mx ptr mx:mail.SU_DOMINIO ~all"
SU_DOMINIO. IN NS ns.SU_DOMINIO.
SU_DOMINIO. IN NS SERVIDOR_ESCLAVO_DNS
www.SU_DOMINIO. IN A SU_IP_PUBLICA
ns.SU_DOMINIO. IN A SU_IP_PUBLICA
mail.SU_DOMINIO. IN A SU_IP_PUBLICA
|
Concluyendo la configuración
Será necesario agregar named al nivel de ejecución default:
Listado de Código 3.9: Agregando named al nivel de ejecución default |
# rc-update add named default
|
4.
Configurando los clientes
Ahora puede usar su propio servidor DNS en todas las máquinas de su
red local para resolver los nombres de dominios. Modifique el archivo
/etc/resolv.conf de las máquinas de su red local.
Listado de Código 4.1: Modificando /etc/resolv.conf |
search SU_DOMINIO
nameserver IP_DE_SU_SERVIDOR_DNS
|
Note que IP_DE_SU_SERVIDOR_DNS es igual que SU_IP_LOCAL usado antes en
este documento. En la imagen de ejemplo arriba es 192.168.1.5.
5.
Comprobando
Podemos comprobar nuestro servidor DNS nuevo. Primero debemos iniciar
el servicio.
Listado de Código 5.1: Iniciando el servicio manualmente |
# /etc/init.d/named start
|
Ahora ejecutaremos algunos comandos con host a algunos
dominios. Podemos usar cualquier computador de nuestra red local para
esto. Si no tiene instalado net-dns/host, puede usar
ping en su lugar, o sino haga emerge host.
Listado de Código 5.2: Haciendo la prueba |
$ host www.gentoo.org
www.gentoo.org has address 209.177.148.228
www.gentoo.org has address 209.177.148.229
$ host hell
hell.SU_DOMINIO has address 192.168.1.3
$ host router
router.SU_DOMINIO has address 192.168.1.1
|
6.
Protegiendo el servidor con iptables
Si utiliza iptables para proteger al servidor, agregue estas reglas
para el servicio DNS.
Listado de Código 6.1: Reglas para iptables |
iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --sport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
|
|