Ejercicio: Servidor DNS Dinámico y Servidor DHCP.

Autor: Joel Barrios Dueñas Correo electrónico: darkshram en gmail punto com
Sitio de Red: http://www.alcancelibre.org/ Jabber ID: darkshram@jabber.org

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2009 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

Introducción.

Este ejercicio está diseñado para ser puesto en práctica en CentOS 5, Elastix 1.5, Red Hat Enterprise Linux 5 y Whitebox Enterprise Linux 5 o sistemas operativos similares, basados sobre Red Hat Enterprise Linux 5. Requiere haber estudiado en su totalidad los siguientes documentos:

•  Cómo configurar un servidor DHCP en una LAN.
•  Cómo configurar un servidor de nombres de dominio (DNS).

Durante este ejercicio se configurará un servidor DNS dinámico y un servidor DHCP, ambos utilizando la misma firma digital a fin de permitir a los clientes actualizar sus registros en el servidor DNS, un servidor intermediario (Proxy) con Squid y un muro cortafuegos con Shorewall.

Equipamiento lógico necesario.

Ingrese al sistema como el usuario root.

Proceda a instalar los paquetes dhcp, bind, bind-chroot, caching-nameserver y la versión mejorada de Vi (paquete vim-enhanced):

yum -y install dhcp bind bind-chroot caching-nameserver vim-enhanced

Procedimientos

Modificación de la interfaz de acceso hacia Internet.

  1. En caso de utilizar una interfaz con dirección IP estática, ignore este paso y los 3 siguientes.

    Si la interfaz eth0 obtiene sus parámetros de red a través de DHCP, edite con vim el archivo /etc/sysconfig/network-scripts/ifcfg-eth0.

    vim /etc/sysconfig/network-scripts/ifcfg-eth0
  2. Pulse la tecla Insert.

    Modifique el valor del parámetro PEERDNS de yes a no a fin de evitar que se modifique automáticamente el archivo /etc/resolv.conf cuando inicie el sistema o se refresque la conexión DHCP. Evite modificar el valor del parámetro HWADDR, el valor XX:XX:XX:XX:XX:XX corresponde a la dirección MAC específica del dispositivo eth0.

    DEVICE=eth0
    HWADDR=XX:XX:XX:XX:XX:XX
    ONBOOT=yes
    BOOTPROTO=dhcp
    PEERDNS=no

    Pulse la tecla Esc, guarde cambios y salga de vim pulsando la combinación de teclas :x y luego la tecla (ENTER).

  3. Reinicie el servicio network a fin de que surtan efecto los cambios.

    service network restart
  4. Pulse la tecla Insert.

    Edite con vim el archivo /etc/resolv.conf y asegúrese de que esté definido un servidor DNS válido para poder acceder hacia Internet. El valor 123.123.123.123 debe corresponder a la dirección IP del servidor DNS del proveedor de servicio de acceso hacia Internet o del modem ADSL.

    search gateway.2wire.net
    nameserver 123.123.123.123

    Pulse la tecla Esc, guarde cambios y salga de vim pulsando la combinación de teclas :x y luego la tecla (ENTER).

Configuración de servidor DNS.

  1. Se debe crear el directorio /var/named/chroot/var/named/dynamics y configurar éste para qué pertenezca al usuario y grupo named, tenga permisos de lectura, escritura y ejecución para el usuario y grupo named (770) y tenga los contextos de SELinux de usuario de sistema (system_u), rol de objeto (object_r) y tipo cache del servicio named (named_cache_t) a fin de permitir escritura en este directorio.

    cd /var/named/chroot/var/named/
    mkdir dynamics/
    chmod 770 dynamics/
    chown named.named dynamics/
    chcon -u system_u -r object_r -t named_cache_t dynamics/
    cd -
  2. Genere con el mandato touch el archivo /var/named/chroot/var/named/dynamics/red-local.net.zone:

    touch /var/named/chroot/var/named/dynamics/red-local.net.zone
  3. Edite con vim el archivo /var/named/chroot/var/named/dynamics/red-local.net.zone:

    vim /var/named/chroot/var/named/dynamics/red-local.net.zone
  4. Pulse la tecla Insert.

    Añada el siguiente contenido, donde proxy.red-local.net corresponde al nombre de anfitrión del servidor que se está configurando, red-local.net corresponde al nombre del dominio de la red de área local con la que se está trabajando y 192.168.123.123 corresponde a la dirección IP del servidor para la interfaz eth1:

    $TTL 86400
    @		IN	SOA	proxy.red-local.net.	root.red-local.net. (
    		2009081501 ; número de serie
    		28800 ; tiempo refresco
    		7200 ; tiempo entre reintentos
    		604800 ; tiempo que expira la zona si deja de resolver
    		86400 ; tiempo total de vida
    		)
    @		IN	NS	proxy.red-local.net.
    @		IN	A	192.168.123.123
    proxy		IN	A	192.168.123.123

    Pulse la tecla Esc, guarde cambios y salga de vim pulsando la combinación de teclas :x y luego la tecla (ENTER).

  5. Configure los permisos del archivo /var/named/chroot/var/named/dynamics/red-local.net.zone para que éste pertenezca a el usuario y grupo named y tenga los contextos de SELinux de usuario de sistema (system_u), rol de objeto (object_r) y tipo zona del servicio named (named_zone_t):

    cd /var/named/chroot/var/named/dynamics/
    chown named:named red-local.net.zone
    chcon -u system_u -r object_r -t named_zone_t red-local.net.zone
    cd -
  6. Genere con el mandato touch el archivo /var/named/chroot/var/named/dynamics/123.168.192.in-addr.arpa.zone:

    touch /var/named/chroot/var/named/dynamics/123.168.192.in-addr.arpa.zone
  7. Edite con vim el archivo /var/named/chroot/var/named/dynamics/123.168.192.in-addr.arpa.zone:

    vim /var/named/chroot/var/named/dynamics/123.168.192.in-addr.arpa.zone
  8. Pulse la tecla Insert.

    Añada el siguiente contenido, donde proxy.red-local.net corresponde al nombre de anfitrión del servidor que se está configurando, red-local.net corresponde al nombre del dominio de la red de área local con la que se está trabajando y 123 corresponde al último octeto de la dirección IP del servidor para la interfaz eth1:

    $TTL 86400
    @		IN	SOA	proxy.red-local.net.	root.red-local.net. (
    		2009081501 ; número de serie
    		28800 ; tiempo refresco
    		7200 ; tiempo entre reintentos
    		604800 ; tiempo que expira la zona si deja de resolver
    		86400 ; tiempo total de vida
    		)
    @		IN	NS	proxy.red-local.net.
    123		IN	PTR	proxy.red-local.net.

    Pulse la tecla Esc, guarde cambios y salga de vim pulsando la combinación de teclas :x y luego la tecla (ENTER).

  9. Configure los permisos del archivo /var/named/chroot/var/named/dynamics/123.168.192.in-addr.arpa.zone para que éste pertenezca a el usuario y grupo named y tenga los contextos de SELinux de usuario de sistema (system_u), rol de objeto (object_r) y tipo zona del servicio named (named_zone_t):

    cd /var/named/chroot/var/named/dynamics/
    chown named:named 123.168.192.in-addr.arpa.zone
    chcon -u system_u -r object_r -t named_zone_t 123.168.192.in-addr.arpa.zone
    cd -
  10. Genere con el mandato touch el archivo /var/named/chroot/etc/named.conf:

    touch /var/named/chroot/etc/named.conf
  11. Edite con vim el archivo /var/named/chroot/etc/named.conf:

    vim /var/named/chroot/etc/named.conf
  12. Pulse la tecla Insert.

    Añada o modifique el contenido para que incluya todo lo siguiente, donde 192.168.123.0/24 corresponde a la dirección IP y máscara de subred (en formato de bits) de la red de área local (LAN) con la cual está trabajando, red-local.net corresponde al nombre de dominio que se utiliza en la red de área local (LAN) con la cual se está trabajando y 123.168.192.in-addr.arpa corresponde a la zona de resolución inversa del RFC1918 para la red de área local (LAN) con la cual está trabajando. Modifique la lista de servidores DNS del parámetro forwarders para que correspondan a los servidores DNS de su proveedor de acceso hacia Internet.

    acl "red-local" {
    		127.0.0.1/32;
    		192.168.123.0/24;
    		};
    options {
    	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-recursion { red-local; };
    	allow-query  { red-local; };
    	forwarders { 200.33.146.201; 200.33.146.193; 200.33.146.217; };
    	forward first;
    };
    
    include "/etc/named.rfc1912.zones";
    include "/etc/rndc.key";
    
    zone "red-local.net" {
    	type master;
    	file "/var/named/dynamics/red-local.net.zone";
    	allow-update { key "rndckey"; };
    };
    zone "123.168.192.in-addr.arpa" {
    	type master;
    	file "/var/named/dynamics/123.168.192.in-addr.arpa.zone";
    	allow-update { key "rndckey"; };
    };

    Pulse la tecla Esc, guarde cambios y salga de vim pulsando la combinación de teclas :x y luego la tecla (ENTER).

  13. Utilizando el mandato chcon, configure los contextos de SELinux para el archivo /var/named/chroot/etc/named.conf, definiendo éste con rol de objeto (object_r), usuario de sistema (system_u) y archivo de configuración del servicio named (named_conf_t):

    chcon -u system_u -r object_r -t named_conf_t /var/named/chroot/etc/named.conf
  14. Inicie (o simplemente reinicie, si es necesario) el servicio named.

    service named start
  15. Si el servicio named inicia normalmente, proceda con el siguiente paso. Si hay fallas o errores, regrese en los pasos que sean necesarios y corrija los posibles errores antes de continuar.

  16. Si el servicio named inició sin errores, utilice el mandato chkconfig para que el servicio named inicie automáticamente la próxima vez que arranque el sistema.

    chkconfig named on
  17. Edite con vim el archivo /etc/resolv.conf:

    vim /etc/resolv.conf
  18. Pulse la tecla Insert.

    Modifique el contenido para defina como único servidor DNS a 127.0.0.1 y defina el dominio predeterminado para la red de área local (LAN) con la que se está trabajando:

    search red-local.net
    nameserver 127.0.0.1

    Pulse la tecla Esc, guarde cambios y salga de vim pulsando la combinación de teclas :x y luego la tecla (ENTER).

Configuración de servidor DHCP.

  1. Edite con vim el archivo /etc/dhcpd.conf:

    vim /etc/dhcpd.conf
  2. Pulse la tecla Insert.

    Añada o modifique el contenido para que incluya todo lo siguiente, donde proxy.red-local.net corresponde al nombre de anfitrión del servidor que se está configurando, 192.168.123.0 corresponde a la dirección IP de la red de área local (LAN) con la cual está trabajando, 255.255.255.0 corresponde a la máscara de subred en formato decimal de la red de área local (LAN) con la cual está trabajando, 123.168.192.in-addr.arpa corresponde a la zona de resolución inversa del RFC1918 para la red de área local (LAN) con la cual está trabajando, 192.168.123.123 corresponde a la dirección IP del servidor que está configurando, 192.168.123.255 corresponde a la dirección IP de difusión (broadcast) de la red de área local (LAN) con la cual está trabajando, red-local.net corresponde al nombre de dominio que se utiliza en la red de área local (LAN) con la cual se está trabajando y 192.168.123.100 y 192.168.123.199 corresponden al los límites inferior y superior del rango de direcciones IP que se van a asignar de manera dinámica.

    include "/var/named/chroot/etc/rndc.key";
    server-identifier proxy.red-local.net;
    ddns-update-style interim;
    ddns-domainname "red-local.net.";
    ddns-rev-domainname "in-addr.arpa.";
    ignore client-updates;
    authoritative;
    default-lease-time 900;
    max-lease-time 7200;
    option domain-name "red-local.net";
    option ip-forwarding off;
    
    zone localdomain. {
    	primary 127.0.0.1;
    	key rndckey;
    }
    zone  123.168.192.in-addr.arpa. {
    	primary 192.168.123.123;
    	key rndckey;
    }
    zone red-local.net. {
    	primary 192.168.123.123;
    	key rndckey;
    }
    
    subnet 192.168.123.0 netmask 255.255.255.0 {
    	option routers 192.168.123.123;
    	option subnet-mask 255.255.255.0;
    	option broadcast-address 192.168.123.255;
    	option domain-name-servers 192.168.123.123;
    	option ntp-servers 200.23.51.205, 132.248.81.29, 148.234.7.30;
    	range 192.168.123.100 192.168.123.199;
    
    }

    Pulse la tecla Esc, guarde cambios y salga de vim pulsando la combinación de teclas :x y luego la tecla (ENTER).

  3. Edite con vim el archivo /etc/sysconfig/dhcpd:

    vim /etc/sysconfig/dhcpd
  4. Pulse la tecla Insert.

    Modifique el contenido estableciendo eth1 como argumentos para el servicio dhcpd, con la finalidad de que éste solo funcione a través de la interfaz eth1, la cual corresponde a la interfaz por donde accederá la red de área local (LAN).

    # Command line options here
    DHCPDARGS=eth1

    Pulse la tecla Esc, guarde cambios y salga de vim pulsando la combinación de teclas :x y luego la tecla (ENTER).

  5. Inicie (o simplemente reinicie, si es necesario) el servicio dhcpd.

    service dhcpd start
  6. Si el servicio dhcpd inicia normalmente, proceda con el siguiente paso. Si hay fallas o errores, regrese en los pasos que sean necesarios y corrija los posibles errores antes de continuar.

  7. Si el servicio dhcpd inició sin errores, utilice el mandato chkconfig para que el servicio dhcpd inicie automáticamente la próxima vez que arranque el sistema.

    chkconfig dhcpd on

Este documento puede complementarse siguiendo los procedimientos del ejercicio Ejercicio: Servidor Intermediario (Proxy) y cortafuegos con Shorewall.