Objetivo del documento
Explicar la instalación de un servidor BIND en la distribución linux RHEL
Descripción
BIND es el servidor de nombres de dominio más popular en Internet, que trabaja en todas las plataformas informáticas principales y se caracteriza por su flexibilidad y seguridad.
Domain Name Service (DNS) es el servicio que resuelve los nombres de dominio asociados a una dirección IP para direccionar las peticiones a un servidor en específico. Se utiliza cuando un nodo (o host) en Internet contacta a otro mediante el nombre de domino de la máquina y no por su dirección IP.
A través de este documento se verá la configuración del servicio de nombres con BIND, bajo la plataforma RedHat, aunque la mayoría de estos conceptos se pueden aplicar a la cualquier servicio de DNS sobre otras plataformas.
Requisitos
- RHEL 5.8 con el último nivel de parches
- Licencia RHEL y alta en RHEL Network con acceso a los repositorios
- HARDWARE:
- 1 CPU
- 1024 MB RAM
- 16 GB DISCO
Instalación
Instalamos BIND mediante el comando los paquetes necesarios:
yum –y install bind bind-utils bind-libs bind-chroot caching-nameserver system-config-bind
Esperamos a que termine el proceso:
Configuración
Previamente recopilamos los datos necesarios para nuestros servidores:
DNS1:
Host Name . . . . . . . . . . . . : dns1
Primary Dns Suffix . . . . . . . : example.com
Node Type . . . . . . . . . . . . : Unknown
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
DNS Suffix Search List. . . . . . : example.com
Ethernet adapter Frontend:
IP Address. . . . . . . . . . . . : xxx.xxx.xxx.101
Subnet Mask . . . . . . . . . . . : 255.255.255.224
Default Gateway . . . . . . . . . : xxx.xxx.xxx.126
DNS Servers . . . . . . . . . . . : xxx.xxx.xxx.101
xxx.xxx.xxx.102
Ethernet adapter Backend:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 192.168.1.101
Subnet Mask . . . . . . . . . . . : 255.255.255.128
DNS2:
Host Name . . . . . . . . . . . . : dns2
Primary Dns Suffix . . . .: example.com
Node Type . . . . . . . . . . . . : Unknown
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
DNS Suffix Search List. . . . . . : example.com
Ethernet adapter Frontend:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : xxx.xxx.xxx.102
Subnet Mask . . . . . . . . . . . : 255.255.255.224
Default Gateway . . . . . . . . . : xxx.xxx.xxx.126
DNS Servers . . . . . . . . . . . : xxx.xxx.xxx.102
xxx.xxx.xxx.101
Ethernet adapter Backend:
IP Address. . . . . . . . . . . . : 192.168.1.102
Subnet Mask . . . . . . . . . . . : 255.255.255.128
Crear RUTA:
Como queremos gestionarlo desde nuestra red interna hay que añadir una ruta manualmente para todo lo que llegue de la 192.168.0.0 que vaya al interfaz de Backend
route add -net 192.168.0.0 netmask 255.0.0.0 gw 192.168.1.1 dev eth0
CONFIGURAR EL FICHERO /etc/hosts EN CADA NODO
127.0.0.1 localhost.localdomain localhost
xxx.xxx.xxx.101 dns1.example.com dns1
xxx.xxx.xxx.102 dns2.example.com dns2
::1 localhost6.localdomain6 localhost6
CONFIGURAR FICHEROS NETWORK
Posterior a esto debemos cambiar el nombre de host de nuestro servidor por ejemplo a dns
vim /etc/sysconfig/network
y editamos donde dice hostname y colocamos dns1 y dns2 como nombre de servidor.
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=dns1
CONFIGURAR FICHEROS BIND
Los archivos de configuración se encuentran en dos rutas que se complementan, estas son:
Ruta 1 (Configuraciones): /var/named/chroot/etc/
Ruta 2 (Zonas, dominios y sub-dominios): /var/named/chroot/var/named/
Podemos encontrar ficheros de ejemplo que podemos utilizar de base en /usr/share/doc/bind-(versión)/sample
Empezamos con la configuración:
Ruta1 (Configuraciones)
Creamos “named.conf” en /etc/named.conf para posteriormente copiarlo a ruta1 y así evitarnos problemas con las modificaciones:
# vi /etc/named.conf
Si el fichero existe tendrá este contenido:
// Red Hat BIND Configuration Tool
//
// Default initial “Caching Only” name server configuration
//
options {
directory “/var/named”;
dump-file “/var/named/data/cache_dump.db”;
statistics-file “/var/named/data/named_stats.txt”;
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
};
zone “.” IN {
type hint;
file “named.root”;
};
zone “localdomain.” IN {
type master;
file “localdomain.zone”;
allow-update { none; };
};
zone “localhost.” IN {
type master;
file “localhost.zone”;
allow-update { none; };
};
zone “0.0.127.in-addr.arpa.” IN {
type master;
file “named.local”;
allow-update { none; };
};
zone “0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa.” IN {
type master;
file “named.ip6.local”;
allow-update { none; };
};
zone “255.in-addr.arpa.” IN {
type master;
file “named.broadcast”;
allow-update { none; };
};
zone “0.in-addr.arpa.” IN {
type master;
file “named.zero”;
allow-update { none; };
};
#Aquí va nuestra configuración
–>
include “/etc/rndc.key”;
En esta configuración aun no está la nuestra, sino solo hace referencia a los archivos que ya existen en ruta2, el contenido que vamos a agregar para nuestro propósito es el siguiente antes de la última línea). Depende del nodo, ya que uno es master y otro slave:
# Configuracion DNS1 para example.com
zone “example.com” IN {
type master;
file “example.com.zone”;
allow-update { none; };
allow-transfer { 192.168.1.102; };
};
# Configuración DNS2 para example.com
zone “example.com” {
type slave;
file “example.com.zone”;
masters { 192.168.1.101; };
};
Aquí se define la zona para nuestro dominio y también la resolución inversa para nuestra ip.
Al final nuestro archivo “named .conf” quedaría:
// Red Hat BIND Configuration Tool
//
// Default initial “Caching Only” name server configuration
//
options {
directory “/var/named”;
dump-file “/var/named/data/cache_dump.db”;
statistics-file “/var/named/data/named_stats.txt”;
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
};
zone “.” IN {
type hint;
file “named.root”;
};
zone “localdomain.” IN {
type master;
file “localdomain.zone”;
allow-update { none; };
};
zone “localhost.” IN {
type master;
file “localhost.zone”;
allow-update { none; };
};
zone “0.0.127.in-addr.arpa.” IN {
type master;
file “named.local”;
allow-update { none; };
};
zone “0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa.” IN {
type master;
file “named.ip6.local”;
allow-update { none; };
};
zone “255.in-addr.arpa.” IN {
type master;
file “named.broadcast”;
allow-update { none; };
};
zone “0.in-addr.arpa.” IN {
type master;
file “named.zero”;
allow-update { none; };
};
#Aquí va nuestra configuración
# Configuracion DNS1 para example.com
zone “example.com” IN {
type master;
file “example.com.zone”;
allow-update { none; };
allow-transfer { 192.168.1.102; };
};
include “/etc/rndc.key”;
Ruta2 (Zonas, dominios y sub-dominios)
Ahora pasemos a crear los archivos “.zone” (ahora tomamos de ejemplo example.com) a los que estamos llamando en nuestro named.conf (que deberemos concatenar posteriormente de esta forma con el resto de zones):
Habrá diferencias también para DNS1 y DNS2:
DNS1:
zone "example.com" IN {
type master;
file "example.com.zone";
allow-update { none; };
allow-transfer { 192.168.1.102; };
};
DNS2:
zone "example.com" {
type slave;
masters { 192.168.1.101; };
file "example.com.zone";
};
Creamos la zona del dominio para example.com
:
# vi /var/named/chroot/var/named/example.com
Dentro tendría lo siguiente:
;
; Database file example.com.dns for example.com zone.
; Zone version: 1187
;
$TTL 86400
@ IN SOA dns1.example.com. hostmaster.example.com. (
2012110523 ; Serial YYYYMMDDXX
900 ; refresh
600 ; retry
604800 ; expire
86400 ) ; default TTL
;
; Zone NS records
;
@ IN NS dns1.example.com.
dns1.example.com. IN A xxx.xxx.xxx.101
@ IN NS dns2.example.com.
dns2.example.com. IN A xxx.xxx.xxx.102
;
; Zone records
;
@ IN A xxx.xxx.xxx.123
@ IN MX 10 smtp3.example.com.
Aquí se resuelve el Canonical Name para peticiones tanta si estas vengan para FTP, web o DNS. Y se enlaza nuestra IP al dominio.
Ahora creamos el archivo para la resolución inversa de nuestra ip:
# vi /var/named/chroot/var/named/10.xxx.xxx.in-addr.arpa.zone
Dentro tendría lo siguiente:
$TTL 86400
@ IN SOA example.com. administrador (
200706246 ; Serial YYYYMMDDXX
28800 ; Refresh
7200 ; Retry
604800 ; Expire
86400) ; Minimum TTL
@ IN NS dns1.example.com.
dns1.example.com. IN A xxx.xxx.xxx.101
@ IN NS dns2.example.com.
dns2.example.com. IN A xxx.xxx.xxx.102
;
; Servers
;
102 IN PTR example.com.
102 IN PTR dns2.example.com.
102 IN PTR www.example.com.
102 IN PTR ftp.example.com.
En la linea “102 PTR ….”, no olvide reemplazar el 102 por el ultimo numero de tu ip.
Con esto el servidor DNS ya debería trabajar, pero aun falta algunos detalles, como cambiarle el nombre al servidor y también la ip.
Para cambiar el nombre al servidor editamos el archivo “network”:
# vi /etc/sysconfig/network
Y ponemos:
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=<nombre_maquina>.example.com
<nombre_maquina>, va ser el nombre que deseemos, el cual se va reemplazar en los archivos de zona donde seguro ya lo has visto.
Copiar named.conf a ruta definitiva
Antes de arrancar el servidor deberemos copiar el fichero de configuración named.conf a /var/named/chroot/etc/named.conf (también podemos hacer un enlace simbólico)
cp /etc/named.conf /var/named/chroot/etc/named.conf
Cambiar IP DNS
# vi /etc/resolv.conf
Y ponemos
nameserver xxx.xxx.xxx.101
nameserver xxx.xxx.xxx.102
Dar permisos de cambio en el directorio named del 2º nodo
# chmod 775 /var/named/chroot/var/named
Levantar Servicio
# /etc/init.d/named start
Inicio en el arranque
# chkconfig named –level 345 on
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?
Un comentario
Pingback: Monitorizar servicios con Cacti | El Blog de Negu