Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1
© 1999-2011 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. Esta licencia deberá aparecer como primer texto del documento distribuido
DHCP (acrónimo de Dynamic Host Configuration Protocol, que se traduce Protocolo de configuración dinámica de servidores) es un protocolo que permite a dispositivos individuales en una red de direcciones IP obtener su propia información de configuración de red (dirección IP; máscara de sub-red, puerta de enlace, etc.) a partir de un servidor DHCP. Su propósito principal es hacer más fáciles de administrar las redes grandes. DHCP existe desde 1993 como protocolo estándar, y se describe a detalle en el RFC 2131.
Sin la ayuda de un servidor DHCP, tendrían que configurarse de forma manual cada dirección IP de cada anfitrión que pertenezca a una Red de Área Local. Si un anfitrión se traslada hacia otra ubicación donde existe otra Red de Área Local, se tendrá que configurar otra dirección IP diferente para poder unirse a esta nueva Red de Área Local. Un servidor DHCP entonces supervisa, y distribuye, las direcciones IP de una Red de Área Local asignando una dirección IP a cada anfitrión que se una a la Red de Área Local. Cuando, por mencionar un ejemplo, una computadora portátil se configura para utilizar DHCP, a ésta le será asignada una dirección IP, y otros parámetros de red, necesarios para unirse a cada Red de Área Local donde se localice.
Existen tres métodos de asignación en el protocolo DHCP:
URL: http://www.ietf.org/rfc/rfc2131.txt, y http://www.ietf.org/rfc/rfc2132.txt
Fundado en 1994, Internet Software Consortium, Inc., distribuye un conjunto de herramientas para el protocolo DHCP, las cuales consisten en:
Dichas herramientas utilizan un API (Application Programming Interface o Interfaz de Programación de Aplicaciones) modular diseñado para ser lo suficientemente general para ser utilizado con facilidad en los sistemas operativos que cumplen el estándar POSIX (Portable Operating System Interface for UNIX o interfaz portable de sistema operativo para Unix), y no-POSIX, como Windows.
URL: http://isc.org/products/DHCP/
Si utiliza CentOS 5, Red Hat™ Enterprise Linux 5, o bien versiones posteriores de éstos, solamente necesita ejecutar lo siguiente:
yum -y install dhcp |
Por lo general, jamás se abren puertos de DHCP a las redes públicas. Si se utiliza un cortafuegos con políticas estrictas, como por ejemplo Shorewall, es necesario abrir los puerto 67, y 68, por UDP (BOOTPS, y BOOTPC, respectivamente) de modo bidireccional.
Si se utiliza Shorewall, edite el archivo /etc/shorewall/interfaces:
vim /etc/shorewall/interfaces |
Y añadir la opción dhcp a las opciones de la interfaz sobre la cual funciona el servicio dhcpd. Esta opción, tras reiniciar el servicio shorewall, habilita las comunicaciones de entrada, y salida, para DHCP.
########################################################################## #ZONE INTERFACE BROADCAST OPTIONS net eth0 detect blacklist loc eth1 detect dhcp,blacklist #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE |
Reinicie el servicio shorewall a fin de que surtan efecto los cambios.
service shorewall restart |
Se recomienda encarecidamente dejar activo SELinux, y dejar como están las políticas predeterminadas.
Nota. |
||
|
Lo siguiente sólo aplica para CentOS 5 y Red Hat Enterprise Linux 5. Si se desea eliminar la protección que brinda SELinux al servicio dhcpd, utilice el siguiente mandato.
Si se desea eliminar la protección que brinda SELinux al sistema para funcionar como cliente DHCP, utilice el siguiente mandato.
Ninguna de estás políticas existe en CentOS 6 y Red Hat Enterprise Linux 6. |
En el caso de disponer múltiples dispositivos de red en el servidor, se recomienda que el servicio dhcpd solamente funcione a través de la interfaz de red utilizada por la LAN. Edite el archivo /etc/sysconfig/dhcpd, y agregue el valor eth0, eth1, eth2, etc., como argumento(s) del parámetro DHCPDARGS, o bien lo que corresponda a la interfaz desde la cual accede la red local.
Edite el archivo /etc/sysconfig/dhcpd:
vim /etc/sysconfig/dhcpd |
Para el siguiente ejemplo, considerando que eth1 es la interfaz correspondiente a la LAN:
# Command line options here
DHCPDARGS=eth1
|
Considerando como ejemplo que se tiene una red local con las siguientes características:
Nota. |
|
Es indispensable conocer, y entender perfectamente, todo lo anterior para poder continuar con este documento. Si se tienen dudas, por favor, primero consultar, y estudiar, el documento titulado «Introducción a IP versión 4.» |
Puede utilizar el contenido de ejemplo, que se encuentra más adelante, para adaptar, o bien crear desde cero, un nuevo archivo de configuración para el servicio dhcpd, ajustando los datos a una red para un conjunto de sistemas en particular.
Si se utiliza CentOS 6, o Red Hat Enterprise Linux 6, edite el archivo /etc/dhcp/dhcpd.conf.
vim /etc/dhcp/dhcpd.conf |
Nota. |
|
|
Si se utiliza CentOS 5, o Red Hat Enterprise Linux 5, edite el archivo /etc/dhcpd.conf.
|
Para efectos prácticos, utilice la siguiente plantilla y modifique todo lo que esté resaltado.
server-identifier servidor.red-local.net;
ddns-update-style interim;
ignore client-updates;
authoritative;
default-lease-time 900;
max-lease-time 7200;
option ip-forwarding off;
option domain-name "red-local.net";
option ntp-servers 200.23.51.205, 132.248.81.29, 148.234.7.30;
shared-network redlocal {
subnet 172.16.1.0 netmask 255.255.255.192 {
option routers 172.16.1.1;
option subnet-mask 255.255.255.192;
option broadcast-address 172.16.1.63;
option domain-name-servers 172.16.1.1;
option netbios-name-servers 172.16.1.1;
range 172.16.1.2 172.16.1.58;
}
}
|
Lo anterior corresponde a la configuración básica recomendada para un servidor DHCP básico.
Si se tienen equipos con direcciones IP estáticas, pueden añadirse también en la configuración de la siguiente forma, definiendo el nombre de anfitrión, dirección MAC, y dirección IP:
host impresora {
option host-name "epl5900.red-local.net";
hardware ethernet 00:24:2B:65:54:84;
fixed-address 172.16.1.59;
}
|
De modo tal que la configuración queda del siguiente modo:
server-identifier servidor.red-local.net;
ddns-update-style interim;
ignore client-updates;
authoritative;
default-lease-time 900;
max-lease-time 7200;
option ip-forwarding off;
option domain-name "red-local.net";
option ntp-servers 200.23.51.205, 132.248.81.29, 148.234.7.30;
shared-network redlocal {
subnet 172.16.1.0 netmask 255.255.255.192 {
option routers 172.16.1.1;
option subnet-mask 255.255.255.192;
option broadcast-address 172.16.1.63;
option domain-name-servers 172.16.1.1;
option netbios-name-servers 172.16.1.1;
range 172.16.1.2 172.16.1.58;
}
# Equipos con IP fija.
host impresora {
option host-name "epl5900.red-local.net";
hardware ethernet 00:24:2B:65:54:84;
fixed-address 172.16.1.59;
}
host pc14 {
option host-name "pc14.red-local.net";
hardware ethernet 00:50:BF:27:1C:1C;
fixed-address 172.16.1.60;
}
}
|
Para iniciar por primera vez el servicio dhcpd, utilice:
service dhcpd start |
Para hacer que los cambios hechos a la configuración del servicio dhcpd surtan efecto, utilice:
service dhcpd restart |
Para detener el servicio dhcpd, utilice:
service dhcpd stop |
Para hacer que el servicio de dhcpd esté activo con el siguiente inicio del sistema, en todos los niveles de ejecución (2, 3, 4, y 5), ejecute lo siguiente:
chkconfig dhcpd on |
Es posible limitar el acceso al servidor DHCP, definiendo una lista de direcciones MAC. De tal modo, a los anfitriones que estén ausentes en dicha lista les será denegado el servicio.
server-identifier servidor.red-local.net;
ddns-update-style interim;
ignore client-updates;
authoritative;
default-lease-time 900;
max-lease-time 7200;
option ip-forwarding off;
option domain-name "red-local.net";
option ntp-servers 200.23.51.205, 132.248.81.29, 148.234.7.30;
shared-network redlocal {
subnet 172.16.1.0 netmask 255.255.255.192 {
option routers 172.16.1.1;
option subnet-mask 255.255.255.192;
option broadcast-address 172.16.1.63;
option domain-name-servers 172.16.1.1;
option netbios-name-servers 172.16.1.1;
range 172.16.1.2 172.16.1.58;
}
# Lista de direcciones MAC que tendrán permitido utilizar el servidor
# DHCP.
# deny unknown-clients impide que equipos fuera de esta lista puedan
# utilizar el servicio.
deny unknown-clients;
host impresora {
hardware ethernet 00:24:2B:65:54:84;
}
host pc1 {
hardware ethernet 00:50:BF:27:1C:1C;
}
host pc2 {
hardware ethernet F4:C7:14:70:FA:AC;
}
host laptop1 {
hardware ethernet 44:87:FC:AA:DD:2D;
}
host laptop2 {
hardware ethernet 70:F1:A1:9F:70:3B;
}
}
|
El ejemplo anterior hace que solamente las direcciones MAC descritas puedan hacer uso del servidor DHCP.
Asumiendo que ya se dispone de un servidor DNS previamente configurado, y funcionando, para configurar el servidor DHCP a fin de que actualice automáticamente los registros correspondientes en las zonas del servidor DNS, sólo basta añadir los parámetros ddns-updates, ddns-domainname, ddns-rev-domainname, la misma firma digital de la configuración del DNS, y definir las zonas de localhost, zona de re-envío, y zona de resolución inversa del DNS, con los valores ejemplificados a continuación, solamente siendo necesario reemplazar los valores resaltados.
server-identifier servidor.red-local.net;
ddns-update-style interim;
ddns-updates on;
ddns-domainname "red-local.net.";
ddns-rev-domainname "in-addr.arpa.";
ignore client-updates;
authoritative;
default-lease-time 900;
max-lease-time 7200;
option ip-forwarding off;
option domain-name "red-local.net";
option ntp-servers 200.23.51.205, 132.248.81.29, 148.234.7.30;
# Copiar tal cual contenido del archivo
# /etc/rndc.key
# Ésto se utilizará para poder comunicar el servidor DHCP con el servidor DNS,
# y poder gestionar zonas dinámicas desde el servidor DHCP con la misma firma
# digital.
# Jamás utilizar la clave ejemplificada a continuación para producción.
# Es la única configuración cuya llave de cierre pueden llevar punto y coma.
key "rndc-key" {
algorithm hmac-md5;
secret "undGpjMq3iWmUh2yvWOnUQ==";
};
zone localdomain. {
primary 127.0.0.1;
key rndc-key;
}
zone 1.16.172.in-addr.arpa. {
primary 172.16.1.1;
key rndc-key;
}
zone red-local.net. {
primary 172.16.1.1;
key rndc-key;
}
shared-network redlocal {
subnet 172.16.1.0 netmask 255.255.255.192 {
option routers 172.16.1.1;
option subnet-mask 255.255.255.192;
option broadcast-address 172.16.1.63;
option domain-name-servers 172.16.1.1;
option netbios-name-servers 172.16.1.1;
range 172.16.1.2 172.16.1.58;
}
# Equipos con IP fija.
host impresora {
option host-name "epl5900.red-local.net";
hardware ethernet 00:24:2B:65:54:84;
fixed-address 172.16.1.59;
}
host pc14 {
option host-name "pc14.red-local.net";
hardware ethernet 00:50:BF:27:1C:1C;
fixed-address 172.16.1.60;
}
}
|
Para que lo anterior funcione con el servidor DNS, considerando que ya están instalados los paquetes bind, y bind-chroot, se requiere generar los archivos red-local.net.zone, y 1.16.172.in-addr.arpa.zone, dentro del directorio /var/named/chroot/dynamic/ del siguiente modo::
touch /var/named/chroot/var/named/dynamic/red-local.net.zone
|
Ambos archivos deben pertenecer al usuario named, y grupo named.
chown named:named /var/named/chroot/var/named/dynamic/red-local.net.zone
|
El archivo /var/named/chroot/var/named/dynamic/red-local.net.zone deberá tener el siguiente contenido, donde solamente será necesario añadir los registros de los equipos con IP fija:
$TTL 86400 @ IN SOA servidor.red-local.net. root.localhost. ( 2011101901; 28800; 7200; 604800; 86400; ) @ IN NS servidor.red-local.net. servidor IN A 172.16.1.1 epl5900 IN A 172.16.1.59 pc14 IN A 172.16.1.60 |
El archivo /var/named/chroot/var/named/dynamic/1.16.172.in-addr.arpa.zone deberá tener el siguiente contenido, donde solamente será necesario añadir los registros de los equipos con IP fija:
$TTL 86400 @ IN SOA servidor.red-local.net. root.localhost. ( 2011101901; 28800; 7200; 604800; 86400; ) @ IN NS servidor.red-local.net. 1 IN PTR servidor.red-local.net. 13 IN PTR impresora.red-local.net. 14 IN PTR pc14.red-local.net. |
En el archivo /var/named/chroot/etc/named.conf deberá estar presente lo siguiente:
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";
forwarders {
8.8.8.8;
8.8.4.4;
};
forward first;
// Opciones de DNSSEC.
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
bindkeys-file "/etc/named.iscdlv.key";
};
// Comentar la siguiente línea y utilizar en su lugar el contenido
// del archivo /etc/rndc.key.
// include "/etc/rndc.key";
key "rndc-key" {
algorithm hmac-md5;
secret "undGpjMq3iWmUh2yvWOnUQ==";
};
controls {
inet 127.0.0.1 allow { 127.0.0.1; 172.16.1.1; } keys { "rndc-key"; };
};
view "local" {
match-clients { 127.0.0.0/8; 172.16.1.0/26; };
recursion yes;
include "/etc/named.rfc1912.zones";
zone "." IN {
type hint;
file "named.ca";
};
zone "red-local.net" {
type master;
file "dynamic/red-local.net.zone";
allow-update { key "rndc-key"; };
};
zone "1.16.172.in-addr.arpa" {
type master;
file "dynamic/1.16.172.in-addr.arpa.zone";
allow-update { key "rndc-key"; };
};
};
|
Active la política de SELinux, la cual permitirá al servidor DNS poder realizar modificaciones a los archivos de zona.
setsebool -P named_write_master_zones 1 |
Reinicie el servicio named a fin de que surtan efecto los cambios.
service named restart |
Reinicie también el servicio dhcpd a fin de que surtan efecto los cambios, y para que el servidor DHCP comience a interactuar con el servidor DNS.
service dhcpd restart |
A partir de este momento, todo cliente que tenga definido en su configuración local un nombre de anfitrión, y al cual le sea asignada una dirección IP a través del servidor DHCP recién configurado, comunicará su nombre de anfitrión al servidor DHCP, el cual a su vez comunicará al servidor DNS este mismo nombre asociada a la dirección IP asignada al cliente, de modo que el DNS añadirá automáticamente el registro correspondiente a las zonas de re-envío, y de resolución inversa correspondientes.
Hecho lo anterior, solamente se necesitará configurar como interfaces DHCP, las utilizadas en las estaciones de trabajo que sean necesarias, sin importar que sistema operativo utilicen.
Después concluida la configuración, y que estén funcionando los servicio correspondientes, pueden hacerse comprobaciones desde un cliente GNU/Linux, es decir, desde otro equipo. Abra una terminal, como usuario root, y, asumiendo que se tiene una interfaz de red denominada eth0, utilice los siguientes mandatos para desactivar la interfaz eth0, y asignar una nueva dirección IP a través del servidor dhcp.
ifdown eth0
|
Lo anterior deberá devolver el mensaje «Determinando la información IP para eth0...», y el símbolo de sistema. Para corroborar, utilice el mandato ifconfig para visualizar los dispositivos de red activos en el sistema. Pulse CTRL-C para terminar el programa.
Si se dispone de varios servidores DHCP, y se desea probar la configuración de alguno en particular, puede añadir la opción -V al mandato dhclient, definiendo como valor para esta opción, el mismo valor que fue asignado para el parámetro server-identifier, establecido en el archivo /etc/dhcp/dhcpd.conf del servidor correspondiente.
ifdown eth0
|
La configuración permanente del dispositivo de red, considerando como ejemplo la interfaz eth0 con dirección MAC 00:01:03:DC:67:23, solicitando los datos para los servidores DNS, correspondiente al archivo /etc/sysconfig/network-scripts/ifcfg-eth0, sería con el siguiente contenido:
DEVICE=eth0
ONBOOT=yes
USERCTL=yes
HWADDR=00:01:03:DC:67:23
TYPE=Ethernet
NM_CONTROLLED=no
DEFROUTE=yes
BOOTPROTO=dhcp
PEERDNS=yes
PEERROUTES=yes
PEERNTP=yes
DOMAIN=red-local.net
DHCP_CLIENT_ID=nombre-equipo
DHCP_HOSTNAME=nombre-equipo
|
Alcance Libre
http://www.alcancelibre.org/staticpages/index.php/como-dhcp-lan
()