Configuracion Basica DNS

El siguiente mini how-to es para mostra la configuracion basica de un servidor DNS
para una red interna, donde el servidor DNS local dependera de los servidores externos DNS obtenido via el ISP( fowarders only )

Este mini how-to lo realizare en Fedora9, el procedimiento es el mismo para RedHat/CentOS, lo primero es definir la configuracion de red a utilizar la cual sera la siguiente:

Red privada clase C: 192.168.1.0/24

Gateway: 192.168.1.10

DNS: 192.168.1.1 (el servidor que configurare)

Dominio: mynetwork.lan (el dominio puede ser cualquiera, puesto que esto no sera visible desde el internet)

DNS(fowards = servidores DNS externos): 208.67.222.222 208.67.220.220

ahora los paquetes los instalamos usando el gestor de paquetes yum que es un frontend del comando “rpm”

# yum install -y bind* 

con esto instalamos todos los paquetes necesarios, Bind9 se instalara en fedora en un chroot (entorno restringido) teniendo sus archivos de configuracion en los siguientes directorios:

# configuracion
/var/named/chroot/etc
# archivos de zona
/var/named/chroot/var/named

definiremos 2 archivos de zonas con los registros de los recursos que tenemos en la red

; file: net.db
$TTL 1D
mynetwork.lan. IN SOA xaero.mynetwork.lan. root.mynetwork.lan. (
	1  ; serial
	3h  ; refresh after 3 hours
	1h  ; retry after 1 hour
	1w  ; expiry after 1 week
	1h   ; minimum, Negative caching TTL of 1 hour)

@	NS	xaero.mynetwork.lan.
	IN 	A 	192.168.1.1
www	IN 	A 	192.168.1.1 ; web server
ftp	IN 	A 	192.168.1.1 ; ftp server
wrack	IN 	A 	192.168.1.2 ; old file server machine
mynx	IN 	A 	192.168.1.3 ; laptop
xaero	IN 	HINFO 	i686 Unix   ; this server

;Test Virtual hosts
www.phpweb20.lan	IN	CNAME	xaero.mynetwork.lan.
www.django_demo.lan	IN	CNAME	xaero.mynetwork.lan.

El archivo “net.db” define los recursos de la red y con los registros A, CNAME, NS.

; file: 192.db
; Zone file for 192.168.1.x
;

$TTL 3h

1.168.192.in-addr.arpa. IN SOA xaero.mynetwork.lan. root.mynetwork.lan. (
1 ; Serial
3h ; Refresh after 3 hours
1h ; Retry after 1 hour
1w ; Expire after 1 week
1h ) ; Negative caching TTL of 1 hour

; Name servers

@  IN NS xaero.mynetwork.lan.

1  IN PTR xaero.mynetwork.lan.
2  IN PTR wrack.mynetwork.lan.
3  IN PTR mynx.mynetwork.lan.

Este archivo permitira resolver en reversa los hosts de la red a partir del IP.
los archivos a modificar son:

/var/named/chroot/etc/named.conf

// named.conf
acl mynetwork-lan { 192.168.1.0/24; 127.0/8; };
options {
listen-on port 53 { 192.168.1.1; 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
directory       "/var/named";
dump-file       "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query     { localhost; mynetwork-lan; };
forwarders { 208.67.222.222; 208.67.220.220; }; #IP dns servers
forward only; # rely completely on our upstream nameservers
query-source    port 53;
query-source-v6 port 53;
recursion  yes;
};

logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};

view  "internal" {

match-clients {mynetwork-lan;};
zone "." IN {
type hint;
file "named.ca";
};

zone "mynetwork.lan" in {
type master;
file "net.db";
};

zone "1.168.192.in-addr.arpa" in {
type master;
file "192.db";
};

include "/etc/named.rfc1912.zones";
};

En named.conf se definen los dns externos una ACL para limitar el acceso de los clientes DNS a solo los clientes que se encuentra en la red 192.168.1.0/24, se definen los puertos en los cuales el Bind9 escuchara, otros parametros y los archivos de zona

/etc/resolv.conf

search mynetwork.lan

nameserver 127.0.0.1
nameserver 192.168.1.1

Los parametros en “resolv.conf” le dicen al sistema como resolvera los nombre y la busqueda de dominio asi como los servidores de nombre.

/etc/sysconfig/network

# file: network
NETWORKING=yes
HOSTNAME=xaero.mynetwork.lan
IPV6_DEFAULTGW=
PEERDNS=no

Aqui el parametro importante es la opcion “PEERDNS=no” sin esta opcion las lineas en el resolv.conf cambiaran al reiniciar y usaran los DNS de la conexion del gateway, lo cual no es lo que se desea.

ahora que el DNS esta configurado se necesita que los clientes de la red haga uso del, para esto se tienen 2 opciones configurar el servicio DHCP en el router que sirve de gateway para que use el servidor Linux que funciona como DNS o instalar el servicio DHCP en linux para que funcione con DNS local.

Una vez configurado lo anterior solo basta con probar la configuracion

Configuracion DHCP basica

ddns-update-style interim;
ignore client-updates;
subnet 192.168.1.0 netmask 255.255.255.0 {

# --- default gateway
option routers   192.168.1.10;
option subnet-mask  255.255.255.0;
option broadcast-address  192.168.1.255;
# option nis-domain  "mynetwork.lan";
option domain-name  "mynetwork.lan";
option domain-name-servers 192.168.1.1;

option time-offset  -18000; # Eastern Standard Time
# option ntp-servers  192.168.1.1;  # NTP
# option netbios-name-servers 192.168.1.1;  # SAMBA

option ip-forwarding off;
range dynamic-bootp 192.168.1.21 192.168.1.254;
default-lease-time 21600;
max-lease-time 43200;
}

Ahora solo queda probar la configuracion del Servidor DNS para esto se utilizar la poderosa herramienta “dig”

uso:

# dig mynetwork.lan

la respuesta debe ser:

como vemos la respuesta fue obtenida desde el server local, ahora si probamos haciendo la consulta al server por su IP 192.168.1.1 obtendremos lo siguiente:

# dig @192.168.1.1 mynetwork.lan

Referencia

DNS for Rocket Scientists