Instalacion de BIND (DNS) en Fedora Core *desde fuente*

.code { font: 9pt “Courier New”, Courier, monospace; color: #333333; } .definition { font: 8pt Verdana, Arial, Helvetica, sans-serif; color:#333333; } Son interesantes la cantidad de solicitudes acerca de una guia de instalacion de Bind para Fedora Core, creo que no voy a darme abasto para responder asi que mejor la publico…
Esta guia es eminementente práctica y no intentará explicar profundamente muchos de los pasos ni de los conceptos, es menester del usuario lector tener pleno conocimiento de sub-dominios, dominios, registros A, registros CNAME, zonas directas e inversas del DNS.

Pre-requisitos:

OpenSSL
Preferiblemente, perl instalado en su sistema.

OpenSSL desde fuente: (version dinamica):
1.- descomprimir el fuente: tar xvf openssl-0.98a.tar.gz
2.- movernos al directorio openssl creado
3.- ejecutar el configure con la siguiente sentencia:
——————–
CFLAGS=”-O3″ CXXFLAGS=”-O3 -fPIC -mtune=pentium-m -march=pentium-m -pipe -fomit-frame-pointer -msse3 -fno-exceptions” \
LDFLAGS=”-L/usr/local/lib -L/usr/local/zlib/lib -lz” \
CPPFLAGS=”-I/usr/local/zlib/include -I/usr/local/include” \
./config –prefix=/usr/local/ssl shared no-shared threads zlib-dynamic -L/usr/local/zlib/lib

———————
esta sentencia asume que:
Tienes las Zlib instaladas en (/usr/local/zlib)
Que deseas instalar SSL en /usr/local/ssl
Que tienes gcc 3.4 o superior
Que tienes un microprocesador Pentium-m para optimizar (puedes reemplazar pentium-m por athlon, pentium4, i686, athlon-xp, athlon64 o cualquier otra arquitectura conocida).

4.- ejecutar make y posteriormente make install
5.- agregar /usr/local/ssl/lib al ld.so.conf
6.- agregar /usr/local/ssl/bin al PATH

Metamail:

Por qué instalar Metamail?…

El Bind tradicional en Fedora Core 3 (o 4) soporta claves de HASTA 64 bits, la razón por la cual bind viene en fedora con claves de 128bits es para mi desconocida, lo unico cierto es que esta imposibilidad de bind de autentificarse a si mismo retorna el famoso error “rndc connection refused” y la imposibilidad de actualizacion de zonas DNS.-

ftp://194.199.20.114/linux/contrib/libc6/i386/metamail-2.7-29.9.i386.rpm

ya veremos despues para que usaremos metamail.

La creación de los archivos:NO es menester de esta guia explicar DNS, sino solo SU instalación, sin embargo aqui les copio un pequeño RESUMEN de los tipos de registros del BIND:

Tipo Nombre Función
Zona SOA Start Of Authority Define una zona representativa del DNS
NS Name Server Identifica los servidores de zona, delega subdominios
Básicos A Dirección IPv4 Traducción de nombre a dirección
AAAA Dirección IPv6 original Actualmente obsoleto
A6 Dirección IPv6 Traducción de nombre a dirección IPv6
PTR Puntero Traducción de dirección a nombre
DNAME Redirección Redirección para las traducciones inversas IPv6
MX Mail eXchanger Controla el enrutado del correo
Seguridad KEY Clave pública Clave pública para un nombre de DNS
NXT Next Se usa junto a DNSSEC para las respuestas negativas
SIG Signature Zona autenticada/firmada
Opcionales CNAME Canonical Name Nicks o alias para un dominio
LOC Localización Localización geográfica y extensión
RP Persona responsable Especifica la persona de contacto de cada host
SRV Servicios Proporciona la localización de servicios conocidos
TXT Texto Comentarios o información sin cifrar

La clave de Seguridad del DNS:

Genera la clave DNS de seguridad:

Usar mmencode para la salida de la clave, puede ser cualquier palabra:

#echo “jesuslara” | mmencode
amVzdXNsYXJhCg==

Generamos la siguiente clave:

key “jesuslara” {
algorithm hmac-md5;
secret “amVzdXNsYXJhCg==”;
};

Esto, lo copiamos en un archivo llamado RNDC.KEY y lo guardamos en /etc:

key “jesuslara” {
algorithm hmac-md5;
secret “amVzdXNsYXJhCg==”;
};

Luego, creamos un archivo llamado RNDC.CONF y copiamos lo siguiente:

include “/etc/rndc.key”;
options {
default-server localhost;
default-key “jesuslara”;
default-port 953;
};

server localhost {
key “jesuslara”;
};

Creo que está facilmente entendible lo que significa cada cosa, en RDNC.CONF estamos indicando que todas las conexiones del server “localhost” serán protegidas con la key “jesuslara” que en hmac-md5 tiene como palabra secret amVzdXNsYXJhCg==; además solicitamos que todas las conexiones se realicen a través del puerto 953 (para no interferir con el puerto 53).

El Archivo NAMED.CONF

contiene la información de configuración del bind; un ejemplo de un archivo de configuracion es el siguiente:

Nota: borrar los comentarios

La seccion OPTIONS:

options {

//Donde BIND buscara las zonas DNS
directory “/var/named”;
//donde guarda la cache el DNS
dump-file “/var/named/data/cache_dump.db”;
// Donde Bind vacia las estadisicas
statistics-file “/var/named/data/named_stats.txt”;
datasize 20M;
//por cual IP escucha BIND
listen-on { 127.0.0.1; 192.168.10.1; };
//de que hosts permitira transferencias de zonas
allow-transfer { 192.168.10.1; };
//de que hosts permitira consultas BIND
allow-query { any; };
allow-recursion { 192.168.10.0/24; localhost; };
max-cache-size 20M;
//a través de que puerto escuchará solicitudes
query-source address * port 53;
transfer-source * port 53;
notify-source * port 53;
zone-statistics yes;
};

La seccion CONTROLS:
#Interfaces de control

controls {
# Interfaz donde escuchamos las actualizaciones de zona (por defecto, localhost, protegido con clave
inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { “jesuslara”; };

# a través de estas interfaces escucharemos cualquier otro tipo de solicitud:
inet 192.169.1.1 allow { any; };
inet 192.169.1.2 allow { any; };
};

Qué contienen cada uno de los archivos de Zona?:

el fichero named.ca (otros lo llaman root.hints)… contiene los nameservers válidos para realizar resoluciones, este fichero es dinámico y existen multitud de tutoriales de como crearlo usando dig.

/var/named/named.ca

; < > DiG 8.1 < > @A.ROOT-SERVERS.NET.

; (1 server found)

;; res options: init recurs defnam dnsrch

;; got answer:

;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 10

;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13

;; QUERY SECTION:

;; ., type = NS, class = IN

;; ANSWER SECTION:

. 6D IN NS G.ROOT-SERVERS.NET.

. 6D IN NS J.ROOT-SERVERS.NET.

. 6D IN NS K.ROOT-SERVERS.NET.

. 6D IN NS L.ROOT-SERVERS.NET.

. 6D IN NS M.ROOT-SERVERS.NET.

. 6D IN NS A.ROOT-SERVERS.NET.

. 6D IN NS H.ROOT-SERVERS.NET.

. 6D IN NS B.ROOT-SERVERS.NET.

. 6D IN NS C.ROOT-SERVERS.NET.

. 6D IN NS D.ROOT-SERVERS.NET.

. 6D IN NS E.ROOT-SERVERS.NET.

. 6D IN NS I.ROOT-SERVERS.NET.

. 6D IN NS F.ROOT-SERVERS.NET.

;; ADDITIONAL SECTION:

G.ROOT-SERVERS.NET. 5w6d16h IN A 192.112.36.4

J.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.10

K.ROOT-SERVERS.NET. 5w6d16h IN A 193.0.14.129

L.ROOT-SERVERS.NET. 5w6d16h IN A 198.32.64.12

M.ROOT-SERVERS.NET. 5w6d16h IN A 202.12.27.33

A.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.4

H.ROOT-SERVERS.NET. 5w6d16h IN A 128.63.2.53

B.ROOT-SERVERS.NET. 5w6d16h IN A 128.9.0.107

C.ROOT-SERVERS.NET. 5w6d16h IN A 192.33.4.12

D.ROOT-SERVERS.NET. 5w6d16h IN A 128.8.10.90

E.ROOT-SERVERS.NET. 5w6d16h IN A 192.203.230.10

I.ROOT-SERVERS.NET. 5w6d16h IN A 192.36.148.17

F.ROOT-SERVERS.NET. 5w6d16h IN A 192.5.5.241

;; Total query time: 215 msec

;; FROM: roke.uio.no to SERVER: A.ROOT-SERVERS.NET. 198.41.0.4

;; WHEN: Sun Feb 15 01:22:51 1998

;; MSG SIZE sent: 17 rcvd: 436

La Zona localhost posee el siguiente archivo:

$TTL 86400
$ORIGIN localhost.
@ 1D IN SOA @ root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
1D IN NS @
1D IN A 127.0.0.1

La zona inversa de localhost posee el siguiente archivo:

$TTL 86400
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.
IN NS ns.midominio.com.
1 IN PTR localhost.
1 IN PTR servidor.midominio.com.

Donde como verán, se indican los registros de Nameserver y el nombre del equipo local como pointers (registros Puntero).

La Zona Directa e inversa de un dominio:

trataré de generar un archivo de zona directa lo bastante completo como para entender su utilidad:

zona directa midominio.com

$TTL 28800
midominio.com. IN SOA ns.midominio.com. hostmaster.midominio.com. (
2000021605 ; serial
3600 ; refresh
7200 ; retry
1209600 ; expire
604800 ) ; default_ttl

IN A 65.169.255.21

;
; Nameserver del dominio, en ausencia, los por defecto
;

IN NS ns.midominio.com.
IN NS ns2.midominio.com.

;
; nodos en el dominio
;

servidor IN A 192.168.1.1
servidor IN A 192.168.1.2
www IN A 192.168.1.1

;
; Informacion sobre el Equipo y demas
;

TXT “Servidor DNS de midominio/Soft Project”
HINFO “Servidor Athlon 2.4Mhz” “Linux Fedora Core 2”

ns IN A 192.168.1.1
ns2 IN A 192.168.1.2

;
; Mail server (mail exchange) para el dominio
;
mail.midominio.com. IN A 192.168.1.1

;Me gusta asegurarme que el MX no dará problema con nadie…
IN MX 2 mail
@ IN MX 2 mail.midominio.com.
midominio.com. IN MX 2 mail.midominio.com.
HINFO “Athlon 2.4Mhz” “Linux Fedora Core 2”

; registro especial, para control de spam
midominio.com. IN TXT “v=spf1 a mx ptr ~all”

;
; Alias existentes en el dominio
;

discovirtual IN CNAME servidor
pop IN CNAME servidor
irc IN CNAME servidor
ftp IN CNAME servidor
soporte IN CNAME servidor
ldap IN CNAME servidor

La zona Inversa:

$TTL 28800
255.169.65.in-addr.arpa. IN SOA midominio.com. hostmaster.midominio.com. (
2004121104 ;Serial number
10800 ;Refresh
3600 ;Retry
604800 ;Expire
86400) ;Minimum TTL

NS ns.midominio.com.
NS ns2.midominio.com.

;Punteros del NameServer
1 PTR ns.midominio.com.
2 PTR ns2.midominio.com.

;Nombre del Servidor
1 PTR servidor.midominio.com.
2 PTR servidor.midominio.com.

;Punteros del Servidor POP
1 PTR pop.midominio.com.

;Servidores de correo
1 PTR mail.midominio.com.

;Pointers del FTP
1 PTR ftp.midominio.com.

Verificación de los archivos:

Existen dos ayudantes que nos permitirá saber si nuestros archivos de configuración y de zona están correctamente escritos, uno es:

#named-checkconf

que revisa la configuracion de los archivos conf, si están bien realizados, no devolverá nada, pero devolverá un error y su linea si estuvieran mal.

el otro comando, que sirve para chequear una zona DNS es:

#named-checkzone zona_dns archivo_de_la_zona

permite revisar una zona DNS y verificar posibles errores:

ej:

#named-checkzone midominio.com /var/named/midominio.com.hosts

Instalando BIND desde source:

Al igual que cualquier fuente, bind requiere ser descargado, descompactado y ejecutar una sentencia de configuracion antes de poder escribir make.

sentencia de configuracion de BIND:

CC=”gcc” CFLAGS=”-O3″ CXX=”gcc” CXXFLAGS=”-O3 -fPIC -mtune=i686 -march=i686 -msse3″ \
./configure –prefix=/usr –localstatedir=/var/state –sysconfdir=/etc \
–enable-shared –enable-static –with-openssl=/usr –enable-libbind –enable-threads

luego ejecutar:
make
make depend

Ejecutar como root antes de probar:
bin/tests/system/ifconfig.sh up
make test
make install

Al completar el proceso de instalacion, debemos crear el usuario y grupo named
#groupadd named
#useradd -d /var/named -g named -s /bin/false -m named

Crear la carpeta /var/state/run y darle privilegios al usuario NAMED

#mkdir -p /var/state/run
#chown root:daemon /var/state -R
#chmod 700 /var/state/run -R
#chown named:named /var/state/run -R

(revisar siempre var/log/messages para el log de named)
Copiar named.conf, rndc.conf y rndc.key a la carpeta /etc/
copiar archivo de inicio en /etc/init.d/named

Crear directorio para las zonas y aplicarle los permisos necesarios:
mkdir -p /var/named && chown -R named:named /var/named && chmod -R 750 /var/named
copiar las zonas a /var/named
Crear:
touch /var/named/data/cache_dump.db && touch /var/named/data/named_stats.txt
chown -R named:named /var/named

Verificar el estado del archivo named.conf con:
named-checkconf

verificar el estado de las zonas con:
named-checkzone -D (dump) [nombre del dominio] [archivo de la zona]
Si las zonas estan correctamente editadas, obtendran algo como esto:
respuesta efectiva de la zona:
zone jesuslara.com.ve/IN: loaded serial 2004092601
OK

Iniciar el servicio e indicar que se cargue siempre al arranque:
chmod 700 /etc/init.d/named && chkconfig –add named
/etc/init.d/named start

verificar que escucha:
$rndc status

number of zones: 21
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/1000
tcp clients: 0/100
server is up and running
Verificar que el puerto 53 esta abierto solicitudes:
lsof -i tcp:53 (o IP)

Si observan algun detalle o tienen alguna consulta que realizar, no duden en comentar …

Acerca de phenobarbital

http://about.me/phenobarbital

Publicado el 30 marzo 2005 en Linux. Añade a favoritos el enlace permanente. 2 comentarios.

  1. Hola Jesus

    Tengo una linux con dist. fedora core 6, quiero instalar el DNS, pero no encuentro mi archivo de configuracion de las zonas el “named.conf” que debe estar en /etc. Sin embargo veo que hay dos enlaces simbolicos en /etc/named.caching-nameserver.conf -> /var/named/chroot//etc/named.caching-nameserver.conf este contiene las rutas de donde estan archivos de configuracion
    y el 2do enlace es /etc/named.rfc1912.zones -> /var/named/chroot//etc/named.rfc1912.zones hace refencia a mis zonas, lo que hice fue adicionar mis propias zonas pero no logro hacer funcionar el dns. Me gustaria contar con tu ayuda o alguna orientacion al respecto . Coordialmente Alirod

  2. tu problema es que tienes el bind en modo chroot, lo que significa en FC6 que tienes instalado bind-caching-namerserver y chroot, por lo cual todos los archivos de bind estan encerrados en /var/named, si no logras hacerlo funcionar asi entonces desintala y vuelve a instalar solo lo basico para ti (bind 9.3.2, caching-nameserver y lo demas crea tu mismo los archivos de zona (asi aprendes como funcionan).

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: