Configurando Clientes
La configuración de cliente es la más “fácil” de todas. En cualquier sabor de Linux, solo es modificar el archivo ifcfg-eth0 (en RH7.1, este archivo esta en /etc/sysconfig/network-scripts. En RH7.2, este archivo esta en dos partes (?), /etc/sysconfig/network-scripts/ y en /etc/sysconfig/networking/devices. Cual de los dos usar? Por precaucion, ojala ambos (o que uno sea un link simbolico del otro) y verificando que la linea que dice: BOOTPROTO=static
se cambie por BOOTPROTO=dhcp
y borrar las opciones IPADDR, NETMASK, NETWORK y BROADCAST.
Verificar ademas que dhcpcd este instalado. Si no, no funciona.
En clientes Windows (aj), en las “Propiedades de Red” (aj), especificar “Iniciar con un numero IP automaticamente”.
Configurando el server:
caso 1 - una sola tarjeta de red:eth0]
El paquete dhcp- debe estar instalado. Si no esta, instalarlo via RPM (o por fuentes tambien sirve).
Verificar que exista el sigiuente archivo (y ojalá vacío):
/var/lib/dhcp/dhcpd.leases
(en las versiones anteriores de dhcp para RedHat este archivo había que crearlo a mano. Y era una de las razones porque dhcpd no iniciaba).
Antes de modificar /etc/dhcpd.conf hay que entender un poco los parametros de configuración. Aquí van los parámetros y una explicación corta:
# /etc/dhcpd.conf#----------opciones globales------------#opciones mas comunesdefault-lease-time <tiempo>; tiempo de prestamo de IP por defecto (en segundos)max-lease-time <tiempo>; cuanto tiempo estara prestado cada IP (en segundos)option subnet-mask <mask>; indica la mascara de redoption routers <ip1>,<ip2>; indica los routers de la redoption domain-name-servers <ip1>,<ip2>; indica los servidores DNSoption "<dominio>"; indica el dominio por defecto server-name "<nombre-host>"; indica el nombre del servidor DHCP#opciones "exoticas"option smtp-server <ip>,<ip>; indica servidores SMTPoption pop3-server <ip>,<ip>; indica servidores POP3option nntp-server <ip>,<ip>; indica servidores de noticiasoption irc-server <ip>,<ip>; bueno, de aqui se entiende =)#----------opciones globales------------#----------opciones locales------------subnet <network> netmask <mask>; indica la subred y la mascara para los clientes{ range <ip1> <ip2>; indica el rango de IPs a entregar range <ip1> <ip2>; ... ....}#----------opciones locales------------
Es posible mezclar opciones globales y locales. Por ejemplo (en este caso, el caso 1, un servidor DHCP con una sóla tarjeta de red eth0 con IP fijo 192.168.1.1 y mask 255.255.255.0) la configuración para atender a una LAN de al menos 20 computadores sería la siguiente:
subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.1; option subnet-mask 255.255.255.0; option domain-name "midominio"; #cambiar en caso de tener otro dominio =) range 192.168.1.2 192.168.1.50; # 48 computadores default-lease-time 21600; # 1/4 de un dia max-lease-time 43200; # 1/2 dia option domain-name-server 192.168.1.1; #siempre que este host sea un DNS }
Ahora iniciar el servicio de DHCP con
# /etc/rc.d/init.d/dhcpd start
Y verificar en el log de mensajes (/var/log/messages) algo como esto:
Feb 26 04:38:07 www dhcpd: Listening on Socket/eth0/192.168.1.0Feb 26 04:38:07 www dhcpd: Sending on Socket/eth0/192.168.1.0Feb 26 04:38:07 www dhcpd: Listening on Socket/eth0/192.168.1.0Feb 26 04:38:07 www dhcpd: Sending on Socket/eth0/192.168.1.0Feb 26 04:38:07 www dhcpd: dhcpd startup succeeded
(si, son las 4:38 AM. El insomnio hace mella en el organismo humano
)
Bien! DHCP esta funcionando. Pero todo se complica en...
caso 2. Dos tarjetas de Red (eth0 y eth1). Eth1 es de la intranet. Eth0 es de Internet. Esto también es llamado "caso típico"]
Ahora suponiendo el “caso típico” del servidor que funciona como firewall/proxy, se desea que entregue IPs a los clientes de una red. El problema esta en que DHCP es algo “estúpido”. Hay que decirle en que interfaz escuchar los mensajes. Si no, no funciona. Así de simple.
Hay dos alternativas: a) la elegante: agregar la tarjeta de red (eth1) en /etc/sysconfig/dhcpd en la opcion DHCPDARGS. b) a la fuerza : modificar la linea de /etc/rc.d/init.d/dhcpd que dice
daemon /usr/sbin/dhcpd ${DHCPDARGS}
y cambiarla por
daemon /usr/sbin/dhcpd eth1 ${DHCPDARGS}
Personalmente prefiero la versión elegante.
Ahora SI iniciar dhcpd.
Configurando para que inicie DHCPD "on boot".
Simplemente usando ntsysv o
# chkconfig dhcpd on