Si algunos de nuestros foros, manuales, ALDOS, paquetería o proyectos te han resultado de ayuda, apreciaremos mucho nos apoyes con un donativo.

Configuración de 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-2015 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

Introducción.

Acerca del protocolo DHCP.

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 las variables 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:

  • Asignación manual: La asignación utiliza una tabla con direcciones MAC (acrónimo de Media Access Control Address, que se traduce como dirección de Control de Acceso al Medio). Sólo los anfitriones con una dirección MAC definida en dicha tabla recibirá el IP asignada en la misma tabla. Ésto se hace a través de la opción hardware ethernet combinado con deny unknown-clients.
  • Asignación automática: Una dirección de IP disponible dentro de un rango determinado se asigna permanentemente al anfitrión que la requiera.
  • Asignación dinámica: Se determina arbitrariamente un rango de direcciones IP y cada anfitrión conectado a la red está configurada para solicitar su dirección IP al servidor cuando se inicia el dispositivo de red, utilizando un intervalo de tiempo controlable (opciones default-lease-time y max-lease-time), de modo que la asignación de direcciones IP es de manera temporal y éstas se reutilizan de forma dinámica.

URL: http://www.ietf.org/rfc/rfc2131.txt y http://www.ietf.org/rfc/rfc2132.txt

Acerca de dhcp por Internet Software Consortium, Inc.

Fundado en 1994, Internet Software Consortium, Inc., distribuye un conjunto de herramientas para el protocolo DHCP, las cuales consisten en:

  • Servidor DHCP.
  • Cliente DHCP.
  • Agente de retransmisión.

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/

Equipamiento lógico necesario.

CentOS, Fedora™ y Red Hat™ Enterprise Linux.

Ejecute lo siguiente para instalar o actualizar todo necesario:

yum -y install dhcp

Modificaciones necesarias en el muro cortafuegos.

Por lo general, jamás se abren puertos de DHCP a las redes públicas. Es necesario abrir los puerto 67 y 68 (BOOTPS y BOOTPC) por UDP, tanto para trafico entrante como saliente.

Servicio iptables.

Asumiendo que el servicio funcionará a través de la interfaz eth1, puede ejecutar iptables conlas siguientes opciones:

iptables -A INPUT -i eth1 -p udp -m state --state NEW -m udp \
    --sport 67:68 --dport 67:68 -j ACCEPT

Ejecute lo siguiente para guardar los cambios:

service iptables save

O bien edite el archivo /etc/sysconfig/iptables:

vi /etc/sysconfig/iptables

Y añada el siguiente contenido:

-A INPUT -i eth1 -p udp -m state --state NEW -m udp --sport 67:68 --dport 67:68 -j ACCEPT

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

service iptables restart

Shorewall.

Edite el archivo /etc/shorewall/interfaces:

vi /etc/shorewall/interfaces

Asumiendo que el servicio funcionará a través de la interfaz eth1 (zona loc), añada 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.

La siguiente sería la configuración para CentOS 7 o Red Hat™ Enterprise Linux 7 utilizando Shorewall 4.5:

#ZONE	INTERFACE       OPTIONS
?FORMAT 2
##########################################################################
net	eth0
loc	eth1		dhcp

La siguiente sería la configuración para ALDOS 1.4, CentOS 6 o Red Hat™ Enterprise Linux 6 utilizando Shorewall 4.4:

##########################################################################
#ZONE   INTERFACE       BROADCAST       OPTIONS
net	eth0		detect
loc	eth1		detect		dhcp

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

Ejecute lo siguiente si utiliza CentOS 7 o Red Hat™ Enterprise Linux 7:

systemctl restart shorewall

Ejecute lo siguiente si utiliza ALDOS 1.4, CentOS 6 o Red Hat™ Enterprise Linux 6:

service shorewall restart

SELinux y el servicio dhcpd.

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.

Ejecute lo siguiente si se desea eliminar la protección que brinda SELinux al servicio dhcpd:

setsebool -P dhcpd_disable_trans 1

Ejecute lo siguiente si se desea eliminar la protección que brinda SELinux al sistema para funcionar como cliente DHCP:

setsebool -P dhcpc_disable_trans 1

Ninguna de estás políticas existe en CentOS 6 y Red Hat Enterprise Linux 6.

Activar, iniciar, detener y reiniciar, el servicio dhcpd.

Ejecute lo siguiente para activar el servicio en todos los niveles de ejecución:

chkconfig dhcpd on

Prefiera ejecutar lo siguiente si utiliza CentOS 7 o Red Hat™ Enterprise Linux 7 o versiones posteriores de éstos:

systemclt enable dhcpd

Ejecute lo siguiente para iniciar por primera vez el servicio:

service dhcpd start

Prefiera ejecutar lo siguiente si utiliza CentOS 7 o Red Hat™ Enterprise Linux 7 o versiones posteriores de éstos:

systemclt start dhcpd

Ejecute lo siguiente para hacer que los cambios hechos a la configuración surtan efecto:

service dhcpd restart

Prefiera ejecutar lo siguiente si utiliza CentOS 7 o Red Hat™ Enterprise Linux 7 o versiones posteriores de éstos:

systemclt restart dhcpd

Ejecute lo siguiente para detener el servicio:

service dhcpd stop

Prefiera ejecutar lo siguiente si utiliza CentOS 7 o Red Hat™ Enterprise Linux 7 o versiones posteriores de éstos:

systemclt stop dhcpd

Procedimientos.

Archivo de configuración /etc/sysconfig/dhcpd.

Nota.

Este paso es innecesario en CentOS 7 y Red Hat™ Enterprise Linux 7 y versiones posteriores de éstos.

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) de la opción DHCPDARGS o bien lo que corresponda a la interfaz desde la cual accede la red local.

Edite el archivo /etc/sysconfig/dhcpd:

vi /etc/sysconfig/dhcpd

Para el siguiente ejemplo, considerando que eth1 es la interfaz correspondiente a la LAN:

# Command line options here
DHCPDARGS=eth1

Archivo de configuración dhcpd.conf.

Considerando como ejemplo que se tiene una red local con las siguientes características:

  • Dirección IP del segmento de red: 172.16.1.0
  • Dirección IP de difusión: 172.16.1.15
  • Máscara de sub-red: 255.255.255.240 (28 bit)
  • Puerta de enlace: 172.16.1.1
  • Servidor de nombres: 172.16.1.1
  • Servidor Wins: 172.16.1.1
  • Servidores de tiempo (NTP): recomendamos utilizar los de NTP.org —es decir 0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org y 3.pool.ntp.org— los cuales son confiables y de acceso gratuito.
  • Rango de direcciones IP a asignar de modo dinámico: 172.16.1.2 hasta 172.16.1.14.
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.

Configuración básica.

Respalde el archivo de configuración original.

mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.original

Descargue el archivo plantilla —con una configuración mínima recomendada— desde AlcanceLibre.org:

wget http://www.alcancelibre.org/linux/secrets/dhcpd.conf \
    -O /etc/dhcp/dhcpd.conf

Restaure contextos de SELinux.

restorecon /etc/dhcp/dhcpd.conf

Si se utiliza CentOS 6 o Red Hat Enterprise Linux 6, edite el archivo /etc/dhcp/dhcpd.conf.

vi /etc/dhcp/dhcpd.conf

Nota.

Si se utiliza CentOS 5 o Red Hat Enterprise Linux 5, edite el archivo /etc/dhcpd.conf.

vi /etc/dhcpd.conf

Para efectos prácticos, utilice la siguiente plantilla y modifique todo lo que esté resaltado.

# Si se tienen problemas con equipos con Windows Vista/7/8 omita la opción 
# server-identifier. Ésto aunque rompe con el protocolo DHCP, permite a los
# clientes Windows Vista/7/8 poder comunicarse con el servidor DHCP y aceptar
# la dirección IP proporcionada.
# server-identifier 172.16.1.1;
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 0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org, 3.pool.ntp.org;

shared-network redlocal {
	subnet 172.16.1.0 netmask 255.255.255.240 {
		option routers 172.16.1.1;
		option subnet-mask 255.255.255.240;
		option broadcast-address 172.16.1.15;
		option domain-name-servers 172.16.1.1;
		option netbios-name-servers 172.16.1.1;
		range 172.16.1.2 172.16.1.14;
	}
}

Lo anterior corresponde a la configuración básica recomendada para un servidor DHCP básico.

Ejecute lo siguiente si utiliza CentOS 7 o Red Hat™ Enterprise Linux 7:

systemclt start dhcpd

Ejecute lo siguiente si utiliza ALDOS 1.4, CentOS 6 o Red Hat™ Enterprise Linux 6 o versiones anteriores de éstos:

service dhcpd start

Asignación de direcciones IP estáticas.

Para definir equipos con direcciones IP estáticas, pueden añadirse también en la configuración de la siguiente forma, especificando 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;
		}

Edite el archivo /etc/dhcp/dhcpd.conf o bien /etc/dhcpd.conf, según corresponda:

vi /etc/dhcp/dhcpd.conf

Un ejemplo de la configuración quedaría del siguiente modo:

# Si se tienen problemas con equipos con Windows Vista/7/8 omita la opción 
# server-identifier. Ésto aunque rompe con el protocolo DHCP, permite a los
# clientes Windows Vista/7/8 poder comunicarse con el servidor DHCP y aceptar
# la dirección IP proporcionada.
# server-identifier 172.16.1.1;
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 0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org, 3.pool.ntp.org;

shared-network redlocal {
	subnet 172.16.1.0 netmask 255.255.255.240 {
		option routers 172.16.1.1;
		option subnet-mask 255.255.255.240;
		option broadcast-address 172.16.1.15;
		option domain-name-servers 172.16.1.1;
		option netbios-name-servers 172.16.1.1;
		range 172.16.1.2 172.16.1.12;
	}
# 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.13;
		}
	host pc14 {
		option host-name "pc14.red-local.net";
		hardware ethernet 00:50:BF:27:1C:1C;
		fixed-address 172.16.1.14;
		}
}

Si realizó cambios en la configuración, reinicie el servicio dhcpd a fin de que surtan efecto los cambios.

Ejecute lo siguiente si utiliza CentOS 7 o Red Hat™ Enterprise Linux 7:

systemclt restart dhcpd

Ejecute lo siguiente si utiliza ALDOS 1.4, CentOS 6 o Red Hat™ Enterprise Linux 6 o versiones anteriores de éstos:

service dhcpd restart

Limitar el acceso por dirección MAC.

Es posible limitar el acceso al servidor DHCP a través de la opción deny con el valor unknown-clients y definiendo una lista de direcciones MAC. De tal modo, a los anfitriones que estén ausentes en dicha lista les será denegado el servicio. Ejemplo:

		deny unknown-clients;
		host impresora {
			hardware ethernet 00:24:2B:65:54:84;
		}
		host pc1 {
			hardware ethernet 00:50:BF:27:1C:1C;
		}

Edite el archivo /etc/dhcp/dhcpd.conf o bien /etc/dhcpd.conf, según corresponda:

vi /etc/dhcp/dhcpd.conf

Un ejemplo de la configuración quedaría del siguiente modo, donde sólo las direcciones MAC en la lista pueden conectarse hacia el servidor DHCP y recibir una dirección IP:

# Si se tienen problemas con equipos con Windows Vista/7/8 omita la opción 
# server-identifier. Ésto aunque rompe con el protocolo DHCP, permite a los
# clientes Windows Vista/7/8 poder comunicarse con el servidor DHCP y aceptar
# la dirección IP proporcionada.
# server-identifier 172.16.1.1;
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 0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org, 3.pool.ntp.org;

shared-network redlocal {
	subnet 172.16.1.0 netmask 255.255.255.240 {
		option routers 172.16.1.1;
		option subnet-mask 255.255.255.240;
		option broadcast-address 172.16.1.15;
		option domain-name-servers 172.16.1.1;
		option netbios-name-servers 172.16.1.1;
		range 172.16.1.2 172.16.1.14;
	}
# 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;
		}
}

Si realizó cambios en la configuración, reinicie el servicio dhcpd a fin de que surtan efecto los cambios.

Ejecute lo siguiente si utiliza CentOS 7 o Red Hat™ Enterprise Linux 7:

systemclt restart dhcpd

Ejecute lo siguiente si utiliza ALDOS 1.4, CentOS 6 o Red Hat™ Enterprise Linux 6 o versiones anteriores de éstos:

service dhcpd restart

Comprobaciones desde cliente DHCP.

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, ejecute lo siguiente para desactivar la interfaz eth0 y asignar una nueva dirección IP a través del servidor dhcp.

ifdown eth0
dhclient -d -I nombre-equipo -H nombre-equipo eth0

Lo anterior deberá devolver el mensaje «Determinando la información IP para eth0...» y el símbolo de sistema. Ejecute ip addr list para hacer comprobaciones y visualizar los dispositivos de red activos en el sistema.

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 a dhclient, definiendo como valor para esta opción, el mismo valor que fue asignado para la opción server-identifier, establecido en el archivo /etc/dhcp/dhcpd.conf del servidor correspondiente.

ifdown eth0
dhclient -d -I nombre-equipo -H nombre-equipo -V 172.16.1.1 eth0

Edite el archivo /etc/sysconfig/network-scripts/ifcfg-eth0 o el que corresponda al dispositivo de red principal del sistema cliente:

vi /etc/sysconfig/network-scripts/ifcfg-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, puerta de enlace y servidores de tiempo, sería la siguiente:

DEVICE=eth0
ONBOOT=yes
USERCTL=yes
HWADDR=00:01:03:DC:67:23
TYPE=Ethernet
NM_CONTROLLED=no
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
PEERNTP=yes
DOMAIN=red-local.net
DHCP_CLIENT_ID=nombre-equipo
DHCP_HOSTNAME=nombre-equipo

Si utiliza NM_CONTROLLED=yes, deje que el servicio NetworkManager se encargue por si solo de aplicar los cambios. Si utiliza NM_CONTROLLED=no, reinicie el servicio network a fin de que surtan efecto los cambios.

service network restart

Lecturas posteriores.

Por favor continúe con el documento titulado «Integración de servidor DHCP con con servidor DNS dinámico».

Última Edición: 23/07/2015, 11:16|Hits: 429,969 Ver la versión para imprimir