Demonio-cliente DHCP

					OBSOLETA


TÍTULO:			Demonio-cliente DHCP
VERSIÓN LFS:	3.3 (debería funcionar en versiones anteriores si se
				actualizan los guiones de arranque)
AUTOR:        		D.J. Lucas <dj_me@swbell.net>
				Última actualización 07/08/2002
TRADUCTOR: 	Proyecto LFS-ES

SINOPSIS:       Cómo configurar un demonio-cliente de DHCP. Este
		protocolo es utilizado por la mayoría de las pasarelas
		de red para módems de cable y módems xDSL.  También se
		usa, en la actualidad, en casi todas las redes
		corporativas para configurar servidores con propósitos
		no críticos y la mayoría de las estaciones de trabajo.

RECETA: Después de leer las recetas sobre dhcpcd, escritas por Simon
Perreault <nomis80@videotron.ca> y Thinus Pollard
<thinusp@olienhout.org.za>, tuve un excelente dominio sobre la
configuración y uso de dhcpcd. Sin embargo, sentí la necesidad de
ampliarlo, tomando como base sus ideas, e incorporar el uso del cliente
de DHCP en el guión de inicio de la red (network - llamado ethnet en versiones
anteriores). De esta forma, reduciremos la cantidad de guiones de
/etc/rc.d/init.d/ y, también, nos permitirá un fácil cambio a una red
estática, si se presenta la necesidad.

NOTA: Sólo un recordatorio básico... que ésto funcione en mi sistema no
significa que funcionará en el tuyo, aunque debería hacerlo. Pese a que
sólo son cambios en algún guión, SIEMPRE ES UNA BUENA IDEA HACER COPIAS
DE SEGURIDAD de cualquier fichero existente que vaya a ser cambiado,
borrado, modificado, movido, etc... Además, no entraré en ninguna de las
opciones avanzadas para módems de cable o *DSL que pueden requerir
ciertos proveedores de internet (ISPs). Estas opciones se explican en
las páginas del manual (man) del cliente; sin embargo, si tienes
problemas con módems de banda ancha, busca las opciones -D, -H, -I y -i.
Además, los usuarios de módems de cable probablemente no querrán usar la
opción -k que se utiliza en el guión ifdown-eth0, que aparece
posteriormente. Cambia esta opción y utiliza killproc en su lugar para
configuraciones de módems de cable. Lee la página del manual para más
información sobre los ficheros de caché, etc.

Cómo instalar y configurar el demonio-cliente de DHCP de acuerdo a las
normas del LFS.

1. Obtén la versión actual de dhcpcd en:
	ftp://ftp.phystech.com/pub/dhcpcd-1.3.22-pl1.tar.gz
2. (opcional) Obtén el parche de LFS para DHCPCD.
	http://www.lucasit.com/linux/dhcpcd-1.3.22-pl1.patch.bz2
3. Desempaqueta el archivo, parchéalo e instálalo.
_______________________________________________________________________________
	tar -zxf dhcpcd-1.3.22-pl1.tar.gz 
# (opcional)
	bzip2 -d dhcpcd-1.3.22-pl1.patch.bz2 &&
	cd dhcpcd-1.3.22-pl1 &&
# (opcional)
	patch -Np1 -i ../dhcpcd-1.3.22.pl1.patch &&
	./configure --prefix="" --sysconfdir=/var/lib \
		--mandir=/usr/share/man &&
	make &&
	make install
_______________________________________________________________________________

NOTA:  Explicaciones sobre los comandos:
No queremos instalar dhcpcd en prefix=/usr porque, en muchos sistemas,
/usr se monta desde la red.  Además, no es un programa al que queramos
que la mayoría de la gente tenga acceso, así que, para mí, tiene sentido
instalarlo en /sbin. De todas formas, es tu propio LFS, así que haz lo
que quieras (--prefix=/usr).


NOTA:  Sobre el parche:
El parche de LFS cambia la localización de los ficheros de caché,
información e identificador de proceso (pid), para que la instalación
sea amigable con LFS y cumpla con FHS. Esto se añadió para asegurarse
que el guión cleanfs borra correctamente los ficheros con el
identificador de proceso (pid) cuando se reinicia el sistema sin que
haya sido apagado correctamente. Para tu información: los ficheros de
caché se guardan en /var/cache, los ficheros de información se guardan
aún en <ConfigDir>, pero <ConfigDir> ahora es, por defecto,
/var/lib/dhcpc, y los ficheros con el identificador de proceso (pid) se
almacenan correctamente en /var/run. Los tres cambios cumplen la norma
FHS.

4. Crea los nuevos guiones, específicos para cada dispositivo.
Una pequeña ayuda de Gerard: ya no hay necesidad de editar los guiones
existentes para permitir nuevos tipos de dispositivos de red. Ahora se
implementa con la primera sentencia if que aparece en los guiones
$network_scripts/ifup y $network_scripts/ifdown. Si utilizas una versión
de LFS anterior a la 3.3, lee mi receta anterior para encontrar guiones
que funcionarán: http://hints.linuxfromscratch.org/hints/old/dhcpcd.txt
Crearemos los ficheros $nework_devices/ifup-eth? y
$network_devices/ifdown-eth? Está comprobado que este método es mucho
más fácil para nuevos tipos de dispositivo que no se hayan tenido en
cuenta en la construcción del sistema base. Además, no enredaremos en
los archivos de configuración existentes, así que, si necesitas volver a
tener una IP asignada estáticamente, simplemente tenemos que borrar los
guiones que hemos creado. En el siguiente ejemplo, crearemos un guión
para eth0; si necesitas uno para eth1, renombra los ficheros a ifup-eth1
y ifdown-eth1 respectivamente, y editalos para añadir el eth1.

cat > /etc/sysconfig/network-devices/ifup-eth0 << "EOF"
#!/bin/sh
# Inicio de /etc/sysconfig/network-devices/ifup-eth0

source /etc/sysconfig/rc
source $rc_functions

echo "Activando la interfaz eth0 por DHCP..."
/sbin/dhcpcd eth0
evaluate_retval
# Fin de /etc/sysconfig/network-devices/ifup-eth0
EOF
_______________________________________________________________________________
cat > /etc/sysconfig/network-devices/ifdown-eth0 << "EOF"
#!/bin/sh
# Inicio de /etc/sysconfig/network-devices/ifdown

source /etc/sysconfig/rc
source $rc_functions

echo "Desactivando la interfaz eth0..."
/sbin/dhcpcd -k eth0
evaluate_retval

# Fin de /etc/sysconfig/network-devices/ifdown
EOF
chmod 755 /etc/sysconfig/network-devices/ifup-eth0
chmod 755 /etc/sysconfig/network-devices/ifdown-eth0
______________________________________________________________________________

5. Manejo de los guiones de arranque
Ha surgido otra cuestión con la manera con la que LFS maneja los
apagados y reinicios en los nuevos guiones. Por defecto, en los niveles
de ejecución 0 y 6, el guión network se ejecuta como K80, lo que provoca
un problema debido a que dhcpcd es, exactamente como su nombre indica,
un demonio. En ambos niveles de ejecución, el guión sendsignals se
ejecuta como K50, antes de que el guión network se haya podido ejecutar;
por lo que el demonio-cliente de dhcp se mata cuando se ejecuta aquél.
No sé si lo que voy a contar es una buena idea o no, pero funciona con
lo poco que tengo en mi sistema. A mí me parece que muchos de los
servicios de red que hayan sido instalados serán demonios, por lo que
sendsignals debería ejecutarse después de que la red se halla
desactivado apropiadamente. Apreciaría cualquier respuesta que alguien
pudiese dar a esta afirmación. Ejecuta los siguientes comandos para
eliminar este problema como yo lo he hecho.
------------------------------------------------------------------------------
mv /etc/rc.d/rc0.d/K80network /etc/rc.d/rc0.d/K45network
mv /etc/rc.d/rc6.d/K80network /etc/rc.d/rc6.d/K45network
______________________________________________________________________________

Como puedes ver, esto ejecutará el guión network como K45, antes de
sendsignals (K50), eliminando el problema. Pueden aflorar otros
problemas si no mueves los guiones de apagado que dependan de la red
antes del K45 en algunos sistemas. Puede que esta no sea la solución
ideal para todos los sistemas. Es tu propio sistema LFS, compruébalo.
También se ha sugerido que sendsignals debería moverse hasta K70
(moviendo, además, todo lo que existe actualmente detrás de él para
permitir más espacio entre el K40 y el K50). De nuevo, ésto es cosa
tuya, es tu sistema LFS, ¡haz lo que quieras!

6.  Cambios en /etc/sysconfig/network
Nota:  El cliente dhcpcd maneja internamente la configuración de ruta si
el servidor DHCP provee una pasarela por defecto. Si el servidor DHCP
provee una pasarela por defecto a una tarjeta configurada a través de
DHCP entonces esa tarjeta se configura automáticamente como ruta por
defecto en la tabla de enrutado. Si necesitases deshabilitar esta
característica, lee las páginas del manual (man) de dhcpcd y route (man
dhcpcd o man route).

Si la ruta por defecto se configura ahora mediante DHCP, necesitarás
cambiar el fichero /etc/sysconfig/network, comentando (con el carácter
#) las variables "GATEWAY" y "GATEWAY_IF". Haz una copia de seguridad y
realiza el cambio con los siguientes comandos:
_______________________________________________________________________________
cd /etc/sysconfig
cp network network.bak
sed 's/GATEWAY/# GATEWAY/' network.bak > network
_______________________________________________________________________________

7.  Antes de reiniciar, necesitas comprobar el sistema. Comienza
ejecutando ifconfig sin ninguna opción, para ver qué dispositivos están
activados. Deshabilita todos los dispositivos excepto lo, ejecutando:
_______________________________________________________________________________
ifconfig <device name> down
_______________________________________________________________________________

Ahora inicia la red utilizando el siguiente comando:
_____________________________________________________________________________
/etc/rc.d/init.d/network start
_____________________________________________________________________________
Busca cualquier tipo de fallo e intenta localizarlo. Si no obtienes
ningún error, ejecuta ifconfig y asegúrate de que todo parece correcto.
Comprueba también que el enrutado está configurado correctamente
ejecutando route sin argumentos. Si todo parece correcto, entonces
desactiva la red.
_____________________________________________________________________________
/etc/rc.d/init.d/network stop
_____________________________________________________________________________

Atento de nuevo a los errores, e intenta localizarlo. Utiliza otra vez
route e ifconfig, y busca cualquier interfaz que no deba estar ahí. Si
ifconfig no devuelve ninguna interfaz además de lo y las tarjetas
configuradas estáticamente y no hay ninguna ruta configurada,
enhorabuena. Reinicia tu sistema y continúa tu camino con LFS.

Si obtienes errores que no puedes localizar, por favor, no dudes en
escribirme <dj_me@swbell.net>. Asegúrate de incluir una descripción
completa del problema (hasta donde hayas entendido), el mensaje exacto
de error y el texto de todos tus ficheros de configuración. Si tienes
problemas, has hecho copias de seguridad de todo, así que pon esas
copias donde las obtuviste.

8.  Conclusión:  "Espero que esto ayude a alguien ahí fuera ;)" --
Thinus Pollard

Me gustaría agradecer a Thinus Pollard y a Simon Perreault sus versiones
de esta receta... que consiguieron tener a mi sistema activo y
ejecutándose en menos de una hora. También me gustaría agradecer a los
siguientes abnegados usuarios de LFS que se tomaron el tiempo de
localizar los problemas en la primera versión de esta receta.

Agradecimientos especiales: Robert Smol, Rich Jones, Phil Gendreau, Cli
- corrección de dhcpcd -k $Device, Markku Tikkanen, Tijmen Stam -
información sobre módems de cable, Steve Hayashi, Wolfgang Scheicher -
información sobre pasarelas por defecto y enrutado , Carl Spelkens -
corregidos los niveles de ejecución antes, incluso, de que yo escribiese
esta receta y Oliver Brakmann - parche para corregir la localización de
los ficheros de estado, caché e identificador de proceso (pid).

Los nuevos guiones de las versiones 3.3+ han disuelto una buena parte de
las cuestiones encontradas en mi anterior receta. Por ello, !eternamente
agradecido a Gerard! Como siempre, envía, por favor, cualquier consejo,
sugerencia, crítica, etc... a <dj_me@swbell.net> o, simplemente, edita
esa receta por ti mismo.

-- D.J. Lucas <dj_me@swbell.net>