apt-get update && apt-get upgradePara asegurarnos de tener actualizados nuestros repositorios:
apt-get bind9 dnsutilsCon esto se instala el servidor Bind9 y los dnsutils son varias utilidades de DNS que nos serviran más adelante para comprobar nuestro servidor.
/etc/init.d/bind9 stopPara detener el bind Luego apuntamos el archivo de configuración al directorio que vamos a crear para el Chroot:
vim /etc/default/bind9Puedes utilizar el editor de tu preferencia en cambio de vim (puede ser nano, emacs, etc) Y modificamos la línea que dice OPTIONS="-u bind" por:
OPTIONS="-u bind -t /var/lib/named"Luego creamos los directorios necesarios para el Chroot
mkdir -p /var/lib/named/etc mkdir /var/lib/named/dev mkdir -p /var/lib/named/var/cache/bind mkdir -p /var/lib/named/var/run/bind/runAhora movemos la configuración del Bind de /etc a /var/named/etc:
mv /etc/bind /var/lib/named/etcCreamos un link simbólico entre la configuración vieja y la nueva para no tener problemas cuando se actualice el Bind:
ln -s /var/lib/named/etc/bind /etc/bindLuego creamos los dispositivos necesarios para la jaula:
mknod /var/lib/named/dev/null c 1 3 mknod /var/lib/named/dev/random c 1 8Y por último modificamos los permisos necesarios:
chmod 666 /var/lib/named/dev/* chown -R bind:bind /var/lib/named/var/* chown -R bind:bind /var/lib/named/etc/bindCon esto ya creamos la Jaula y Bind tiene su propio espacio de directorios para sus procesos. Ahora debemos modificar sysklogd para que se registren (log) los eventos del Bind:
vim /etc/default/syslogdPuedes utilizar el editor de tu preferencia en cambio de vim (puede ser nano, emacs, etc) Y modificamos la línea que dice SYSLOGD="" por:
SYSLOGD="-a /var/lib/named/dev/log"Ahora debemos modificar el archivo resolv.conf de nuestro servidor:
vim /etc/resolv.confY agregamos la siguientes líneas (recuerda cambiar ejemplo.lan por tu nombre de dominio):
search ejemplo.lan nameserver 127.0.0.1Reiniciamos el sysklogd:
/etc/init.d/sysklogd restartE iniciamos el Bind:
/etc/init.d/bind9 startEste procedimiento lo tenemos que repetir para el servidor secundario. Ahora vamos a configurar nuestros servidores.
vim /etc/bind/named.conf.optionsY descomentamos las líneas que dicen forwarders para que quede de la siguiente forma:
forwarders { 208.67.222.222 };
Recuerda utilizar la IP del DNS de tu ISP, también puedes utilizar la que está en el ejemplo ya que es la de OpenDNS.
Luego vamos a crear nuestra zona que no es más que lo que va a manejar nuestro dominio de ejemplo.lan para esto seguimos los siguientes puntos:
mkdir /etc/bind/zones/
vim /etc/bind/zones/master_ejemplo.lanLuego dentro de este archivo colocamos la siguiente configuración:
$TTL 3D
@ IN SOA ns1.ejemplo.lan. hostmaster.ejemplo.lan. (
200808161 ; serial, fecha AAAA-MM-DD + serial
8H ; refrescamiento, en segundos
2H ; reentrar, segundos
4W ; expira, segundos
1D ) ; minimo, segundos
;
TXT "Ejemplo.LAN, servicio de DNS"
NS ns1 ; Direccion Inet del servidor de dominio
NS ns2
MX 10 mail ; Exchanger de Mail primario
localhost A 127.0.0.1
ns1 A 192.168.249.1
ns2 A 192.168.249.2
www CNAME ns1
Este es un archivo de Zona básico donde declaramos el dominio de ejemplo.lan, los servidores de dominio ns1 y ns2, además declaramos como servidor www (servidor web) a ns1 pero podría ser cualquier otro servidor donde tengas instalado Apache o algún otro servidor Web.
Ahora editamos el archivo /etc/bind/named.conf.local:
vim /etc/bind/named.conf.localY escribimos las siguientes líneas:
zone "ejemplo.lan" {
type master;
file "/etc/bind/zones/master_ejemplo.lan";
};
Ya con esto podemos probar nuestro servidor master a ver si funciona:
/etc/init.d/bind9 restart
ping ns1.ejemplo.lan
Deberia responder nuestro servidor ns1, recuerda que el servidor debe tener una dirección IP fija y que no debe estar corriendo ningún cliente dhcp.
Tambien podemos probar ejecutando:
host ns1.ejemplo.lan
Debería responder con la dirección de nuestro servidor.
Por útilmo para configurar nuestro servidor master modificamos el archivo /etc/bind/named.conf.options y agregamos la siguiente línea:
dnssec-enable yes;Creamos una llave segura esto es para que la comunicación entre el servidor master y el secundario sea encriptada.
dnssec-keygen -a hmac-md5 -b 128 -n host ejemplo.lanAnota el resultado ya que lo utilizaremos tanto en el servidor MASTER como en el SECUNDARIO. Modificamos el archivo /etc/bind/named.conf y agregamos las siguientes líneas:
include "/etc/bind/rndc.key";
key "TRANSFER" {
algorithm hmac-md5;
secret "---HASHKEY---";
};
server 192.168.249.2 {
keys {
TRANSFER;
};
};
Donde dice HASHKEY colocas la clave que generamos anteriormente. Y luego reiniciamos el servidor Bind:
/etc/init.d/bind9 restartCon esto ya tenemos configurado nuestro servidor master vayamos ahora con nuestro servidor secundario.
mkdir /etc/bind/zones/
vim /etc/bind/zones/slave_ejemplo.lanLuego dentro de este archivo colocamos la siguiente configuración:
$TTL 3D
@ IN SOA ns1.ejemplo.lan. hostmaster.ejemplo.lan. (
200808161 ; serial, fecha AAAA-MM-DD + serial
8H ; refrescamiento, en segundos
2H ; reentrar, segundos
4W ; expira, segundos
1D ) ; minimo, segundos
;
TXT "Ejemplo.LAN, servicio de DNS"
NS ns1 ; Direccion Inet del servidor de dominio
NS ns2
MX 10 mail ; Exchanger de Mail primario
localhost A 127.0.0.1
ns1 A 192.168.249.1
ns2 A 192.168.249.2
www CNAME ns1
Esto es idéntico al master solo que identificamos como slave al archivo. Luego modificamos el archivo:
vim /etc/bind/named.conf.local
Y escribimos:
zone "ejemplo.lan" {
type slave;
file "/etc/bind/zones/slave_ejemplo.lan";
masters { 192.168.249.1; };
allow-notify { 192.168.249.1; };
};
Luego modificamos:
vim /etc/bind/named.confY agregamos las siguientes líneas
server 192.168.249.1 {
keys {
TRANSFER;
};
};
Y repetimos lo que hicimos de último con el servidor Maestro.
Modificamos el archivo /etc/bind/named.conf y agregamos las siguientes líneas:
include "/etc/bind/rndc.key";
key "TRANSFER" {
algorithm hmac-md5;
secret "---HASHKEY---";
};
server 192.168.249.1 {
keys {
TRANSFER;
};
};
Donde dice HASHKEY colocas la clave que generamos anteriormente. Y luego reiniciamos el servidor Bind:
/etc/init.d/bind9 restartYa con esto tenemos configurado el servidor Esclavo o Secundario, ahora debes indicarle a tus PC que que estan son las direcciones de servidores DNS primario y secundario que deben utilizar y si quieres probar que uno funciona cuando el otro se cae puedes detener el bind en cualquiera de los dos. Espero que les haya servido este tutorial, cualquier duda, pregunta o sugerencia puedes dejar tu comentario y lo responderé a la brevedad posible. Saludos Olivers Si quieres recibir notificaciones de cuando se publican nuevos artículos y tutoriales en Vensign por favor subscribete a nuestro boletín RSS.
Otros artículos que te pueden interesar
![]()
Este trabajo está licenciado bajo Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License
Saludos, tremenda explicacion, funciona todo ok.
En mi empresa tenemos un servidor de dominio en windows server 2003, el dns funciona bien, nos hacemos ping por ip y por nombre. La red esta conformada por VLAN y esta configurado todo por DHCP. El problema es el siguiente: Tengo un equipo con ubuntu 10.04 el cual tiene instalado Apache2, Mysql 5.0, postgresql 8.4 y todos los sistemas corren bien. Configure el bind y localmente no arroja ningun tipo de error pero cuando intento acceder por nombre a la aplicacion desde un cliente XP no resuelve.
Cree Hosts Virtuales y si resuelven pero asi “nombre-de-mi-servidor-linux.dominio-de-mi-empresa” cuando deberia ser solo el nombre del host virtual, aunque de igual forma no me gustaria resolver el problema a traves de apache si no por bind. Espero me puedas ayudar
Hola Felix, gracias por tu comentario.
Tengo una duda a quien tienes como Servidor de Dominio configurado en los Clientes XP? porque según dices al principio tu servidor de dominio principal es un Windows Server 2003 si vas a utilizar a Bind como tu servidor de dominio principal o secundario debes configurarlo en el cliente o configurarlo en tu servidor DHCP para que se asigne automáticamente. Esa es uno de los problemas que pueden estar ocurriendo.
Verifica esto y cualquier duda vuelve a escribir estamos a la orden por aqui
Saludos
Los clientes XP estan unidos al windows server 2003. Ahora ¿Le puedo decir al server 2003 que mi ubuntu es DNS? Disculpa mi ignorancia. Yo he hecho lo siguiente, configuro bind como dns en mi red local y coloco la direccion ip en el XP de mi servidor linux en la parte de servodres DNS y no resuelve. Ahora tu sugerencia se refiere si no me equivoco es que el servidor dhcp le asigne la direccion de mi servidor a los clientes automaticamente. Se las he colocado estatico y no resuelve. Bueno seguire intentando. Espero me puedas seguir ayudando y un millon de gracias.
Hola nuevamente, en teoria lo que debo hacer es que mi servidor linux sea dns secundario y configurar en el windows server indicar que este existe. Ahora alguien sabe como hacer eso en el windows server, porq el server linux ya esta super recontra configurado porque ya hice la prueba sin dominio windows y resuelve perfectamente, pero cuando uso un cliente xp que esta en el dominio es donde no resuelve. La unica forma que resuelva es “nombre.dominio-windows”. Gracias
Hola, que tal.
Muy bueno y muy útil el tutorial.
Pero tengo una duda. ¿Cómo configuro el reenvío condicional en BIND9?
Resulta que tengo un dominio Active Directory del tipo ad-domain.local (con un PDC Windows 2003 y un BDC Windows 2008) funcionando Ok.
Además, tengo un enrutador GNU/Linux Debian Lenny (que está unido al dominio AD como miembro). La función de este linux es servir una DB MySQL, un servidor proxy SQUID y eventualmente un enrutador hacia internet para ciertos equipos para los cuales necesito la salida directa (y no a través del proxy). Pero ahora además, necesito servir nombres (e IPs) a una subred del tipo subnet.ad-domain.local
Entonces quería configurar un servidor DNS en este linux, de forma tal que:
resuelva los nombres de subred.ad-domain.local, reenvíe las consultas para ad-domain.local a los DNS del dominio ad-domain.local, y que para el resto los reenvíe al servidor DNS de mi ISP.
He estado probando configuraciones pero no se como hacerlo de forma correcta.
Hola!!
antes que nada gracias por el manual, creo que es el mas completo que he leido hasta ahora, pero continuo teniendo un problema, cuando levanto bind9 me lanza el error:
rndc: connect failed: 127.0.0.1#953: connection refused
* Starting domain name service… bind9 [fail]
me suena a permisos…. he hecho la primer parte de este manual pero aun continua el problema (no levanta bind9)
en /etc/passwd en la ultma linea tengo:
bind:x:115:124::/var/cache/bind:/bin/false
y aparentemente todo lo que esta dentro de la “jaula” el own y group es bind
alguna idea de donde puedo estar mal?
mi ubuntu es: 9.04 jaunty (no lo puedo actualizar debido al libc6
necesito esa libreria y dejo de tener soporte y ya no esta en las demas….pero esa es otra historia
de antemano agradezco la ayuda!!
Que tal amigos….
pues resulta que hize la jaula para el bind, pero algo hize mal ya que no puedo levantar el servicio bind9
me aparece:
/etc/init.d/bind9 restart
* Stopping domain name service… bind9
rndc: connect failed: 127.0.0.1#953: connection refused
…done.
* Starting domain name service… bind9
…fail!
en dmesg me dice cada que lo quiero levatar;
[1278195.137882] type=1503 audit(1292466587.396:64): operation=”inode_permission” requested_mask=”r::” denied_mask=”r::” fsuid=115 name=”/var/lib/named/etc/bind/named.conf” pid=2935 profile=”/usr/sbin/named”
y en el syslog me aparece que:
Dec 15 20:29:47 cs named[2929]: starting BIND 9.5.1-P2.1 -4 -u bind -t /var/lib/named
Dec 15 20:29:47 cs named[2929]: found 4 CPUs, using 4 worker threads
Dec 15 20:29:47 cs named[2929]: using up to 4096 sockets
Dec 15 20:29:47 cs named[2929]: loading configuration from ‘/etc/bind/named.conf’
Dec 15 20:29:47 cs named[2929]: none:0: open: /etc/bind/named.conf: permission denied
Dec 15 20:29:47 cs named[2929]: loading configuration: permission denied
Dec 15 20:29:47 cs named[2929]: exiting (due to fatal error)
obviamente se trata de un problema de permisos… pero para serles honesto, me he quedado sin ideas….
ojala alguien de ustedes pueda ayudarme….
la parte de los fw y reverse no tengo problemas (funcionaba antes de la jaula jejeje) asi que aparentemente el problema es el permiso…..
alguna idea de favor??
Saludos y excelente manual!!!
Hola Jorge asegurate que hayas ejecutado las lineas de los permisos que están en el tutorial y que estes ejecutando /etc/init.d/bind9 restart como root.
Saludos
Gracias Olivers por la respuesta….!
pues he hecho las lineas, de seguro algo me falta de permisos, aunqe no encuentro que….
me sigue apareciendo…:
* Stopping domain name service… bind9
rndc: connect failed: 127.0.0.1#953: connection refused
…done.
* Starting domain name service… bind9
…fail!
ahora.. mientras logro (o logramos) desifrar que paso.. en que me equivoque.. como hago para “desenjaular” al bind9?
de antemano te agradezco infinitamente tu ayuda!!!
Saludazos!!
Tengo el mismo problema, una manitoooo…..?
alguna idea??
Saludos,