Cuando dhclient, el cliente DHCP, se ejecuta en la máquina cliente, comienza a transmitir solicitudes de información de configuración. De forma predeterminada, estas solicitudes se encuentran en el puerto UDP 68. El servidor responde en el UDP 67 y le brinda al cliente una dirección IP y otra información de red relevante, como la máscara de red, el enrutador y los servidores DNS. Toda esta información viene en forma de un "arrendamiento" de DHCP. y solo es válido por un tiempo determinado (configurado por el mantenedor del servidor DHCP). De esta manera, las direcciones IP obsoletas de los clientes que ya no están conectados a la red se pueden recuperar automáticamente.
El servidor DHCP (o DHCPd) es el servidor que proporciona al cliente DHCP la información que necesita, y es la parte del servidor de la suite que no se proporciona como parte de FreeBSD, por lo que debe instalarse desde net/isc-dhcp3-server puerto para proporcionar este servicio.
FreeBSD viene con ISC DHCP, y viene con FreeBSD como puertos net/isc-dhcp3-server.
Para instalarlo, vaya al directorio ports net/isc-dhcp3-server y ejecute el siguiente comando:
# make install clean
DHCPd se configura mediante un archivo de configuración, normalmente dhcpd.conf ubicado en el directorio /usr/local/etc. Normalmente hay un archivo de configuración de ejemplo que es dhcpd.conf.example en el directorio. Copie dhcpd.conf.ejemplo a dhcpd.conf o cree un nuevo dhcpd.conf antes de proceder a realizar cambios en el servidor DHCP.
dhcpd.conf se compone de declaraciones sobre subredes y hosts, y quizás se explique más fácilmente usando un ejemplo:
opción nombre-dominio “ejemplo.com”; (1)
opción servidores de nombres de dominio 192.168.4.100; (2)
opción máscara de subred 255.255.255.0; (3)
tiempo de arrendamiento predeterminado 3600; (4)
tiempo máximo de arrendamiento 86400; (5)
ddns-actualización-estilo ninguno; (6)
subred 192.168.4.0 máscara de red 255.255.255.0 {
rango 192.168.4.129 192.168.4.254; (7)
enrutadores opcionales 192.168.4.1; (8)
servidor de correo {
hardware ethernet 02:03:04:05:06:07; (9)
dirección fija mailhost.example.com; (10)
(1) Esta opción especifica el dominio que se proporcionará a los clientes como dominio de búsqueda predeterminado.
(2) Esta opción especifica una lista separada por comas de servidores DNS que el cliente debe usar.
(3) La máscara de red que se proporcionará a los clientes.
(4) Un cliente puede solicitar un período de tiempo específico durante el cual un contrato de arrendamiento será válido. De lo contrario, el servidor asignará una concesión con este valor de caducidad (en segundos).
(5) Este es el período máximo de tiempo que se arrendará el servidor. Si un cliente solicita una concesión más larga, se emitirá una concesión, aunque solo será válida durante los segundos de tiempo máximo de concesión.
(6) Esta opción especifica si el servidor DHCP debe intentar actualizar el DNS cuando se acepta o libera una concesión. En la implementación de ISC, esta opción es obligatoria.
(7) Esto indica qué direcciones IP deben usarse en el grupo reservado para asignar a los clientes. Las direcciones IP entre las indicadas, inclusive, se entregan a los clientes.
(8) Declara la puerta de enlace predeterminada que se proporcionará a los clientes.
(9) La dirección MAC del hardware de un host (para que el servidor DHCP pueda reconocer un host cuando realiza una solicitud).
(10) Especifica que el host siempre debe recibir la misma dirección IP. Tenga en cuenta que usar un nombre de host es correcto aquí, ya que el servidor DHCP resolverá el nombre de host por sí mismo antes de devolver la información de concesión.
Una vez que haya terminado de escribir su dhcpd.conf, puede proceder a iniciar el servidor emitiendo el siguiente comando:
# /usr/local/etc/rc.d/isc-dhcpd.sh start
Si necesita realizar cambios en la configuración de su servidor en el futuro, es importante tener en cuenta que enviar una señal SIGHUP a dhcpd no da como resultado que se vuelva a cargar la configuración, como sucede con la mayoría de los demonios. Una señal SIGTERM para detener el proceso y luego reiniciarlo usando el comando anterior. Por ejemplo:
# ps wax | grep dhcpd
pid de dhcpd se mostrará con el comando anterior, emita el siguiente comando para eliminarlo.
# kill -15 (pid of dhcpd)