Todos los hosts deberían tener configurado el TCP/IP. Por tanto, vamos a explicar qué pasos serían los que daríamos en el caso de que esto no fuera así.
En primer lugar, saber que sólo el súper-usuario (root) puede modificar los parámetros del TCP/IP. Sin embargo, como en realidad no necesitamos modificar ningún fichero, todo el proceso que a continuación se expone debería poderse realizar como usuario sin privilegios de administración.
Para conocer si el núcleo (kernel) del sistema operativo reconoce el adaptador de red que estamos utilizando podemos realizar diferentes pruebas. La primera consiste en ver si el TCP/IP ya está configurado, con lo que sabremos que el kernel necesariamente lo reconoce. Esto se puede hacer escribiendo en un shell:
root# ifconfig
|
La salida es una lista de interfaces, junto con algunos parámetros de configuración. Lo importante es que veamos que aparece el interface eth0, esto es, el primer interface de red Ethernet.
Si esto no fuera así, hay dos opciones:
Como se ha indicado en la sección anterior, puede ocurrir que el kernel sí que reconozca el hardware de red, pero éste no ha sido activado. La forma estándar de configurar temporalmente un interfaz de red consiste en usar las utilidades /sbin/ifconfig y /sbin/route desde la línea de comandos. Ejemplo:
# Establecemos la dir IP
root# ifconfig eth0 192.168.213.128 # Establecemos la máscara de red root# ifconfig eth0 netmask 255.255.255.0 # Levantamos el interfaz. Sustituir "up" por "down" para desactivarlo. root# ifconfig eth0 up # Establecemos el gateway (router de nuestra red) root# route --inet add -net 0.0.0.0/0 gw 192.168.213.2 eth0 # Definimos el servidor de nombres root# echo "nameserver 150.214.156.2" > /etc/resolv.conf |
La configuración permanente se consigue haciendo que los scripts de arranque de la computadora ejecuten en algún instante los comandos especificados durante la configuración temporal. El problema al que nos enfrentamos ahora es localizar los ficheros de configuración que estos scripts utilizan para realizar dicha tarea. Por desgracia, estos scrips suelen tener diferentes localizaciones y contenidos dependiendo de la distribución de Linux utilizada. A continuación se explicará cómo localizar dichos ficheros.§
Bien. Antes de comenzar, un poco de nomenclatura; en adelante hablaremos de los programas ejecutables como procesos. En Unix (y por tanto en Linux) los procesos son tareas que pueden invocar a otros procesos y que el sistema operativo ejecuta durante un cierto intervalo de tiempo. Cuando los procesos resuelven tareas útiles se habla de demonios (daemons en inglés.)
Para encontrar el o los ficheros que contienen la configuración del TCP/IP en una máquina con Linux los pasos a realizar deberían ser los siguientes:
usuario$ ps ax -H
|
si::sysinit:/etc/init.d/rcS
|
El primer campo¶ (si) es un identificativo del runlevel (nivel de ejecución) en el que se lanza cada proceso y significa system initialization.∥ El segundo campo es una lista de niveles de ejecución en los que se va a ejecutar el proceso especificado por el cuarto campo (/etc/init.d/rcS) y debe estar vacío si el tercer campo, que especifica la acción a llevar a cabo en ese runlevel vale sysinit. El script /etc/init.d/rcS se encarga de levantar el sistema y sería el equivalente al fichero AUTOEXEC.BAT en MS-DOS.
Tras la inicialización especificada en /etc/init.d/rcS, /sbin/init lleva la computadora al estado normal de funcionamiento. Para ello debe lanzar un montón de demonios que hacen cosas como leer el teclado y el ratón, mandar los trabajos de impresión a las impresoras, recibir los correos electrónicos, etc. Todos estos procesos son especificados en las entradas:
l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1 l2:2:wait:/etc/init.d/rc 2 l3:3:wait:/etc/init.d/rc 3 l4:4:wait:/etc/init.d/rc 4 l5:5:wait:/etc/init.d/rc 5 l6:6:wait:/etc/init.d/rc 6 |
Escribir
usuario$ man inittab
|
para conocer la sintaxis exacta de /etc/inittab.
Como podemos apreciar, estas entradas tienen un elemento extra que es un parámetro al script /etc/init.d/rc. Cuando ejecutamos:
/etc/init.d/rc 0
|
Todos los procesos que en el directorio /etc/rc0.d comiencen por una S van a ser lanzados en el runlevel 0, en orden alfabético. Los procesos que comienzan por K son killed (matados) cuando abandonamos ese runlevel. Como podemos ver, todos estos procesos son enlaces simbólicos a otros procesos localizados en el directorio:
/etc/init.d/
|
/etc/init.d/networking
|
que es el encargado de configurar el TCP/IP. Este proceso debe invocarse escribiendo:
root# /etc/init.d/networking start
|
para configurar por primera vez la red** . Si lo editamos y buscamos en la sección start veremos que el proceso que configura el interface de red se llama /sbin/ifup.
usuario$ man ifup
|
Revisando dicha documentación descubriremos que ifup y ifdown (el programa que se utiliza para deshabilitar los interfaces de red) leen los datos para configurar el TCP/IP del fichero:
/etc/network/interfaces
|
Bien. Si hemos realizado correctamente el proceso de rastreo anterior llegaremos a que los ficheros de configuración del TCP/IP son, dependiendo de la distribución de Linux:
Como acabamos de ver, el fichero que contiene los parámetros son:
/etc/network/interfaces
|
Su sintaxis es:
root# cat /etc/network/interfaces
### etherconf DEBCONF AREA. DO NOT EDIT THIS AREA OR INSERT TEXT BEFORE IT. auto lo eth0 iface lo inet loopback iface eth0 inet static address 193.147.118.57 netmask 255.255.255.0 gateway 193.147.118.1 ### END OF DEBCONF AREA. PLACE YOUR EDITS BELOW; THEY WILL BE PRESERVED. |
En él podemos leer que este fichero ha sido creado de forma automática por la utilidad debconf cuando instaló el paquete etherconf. Por tanto, si quisiéramos modificar este fichero deberíamos escribir:
root# dpkg-reconfigure etherconf
|
Para aprender más acerca de la utilidad dpkg acceder a la Guía de Referencia Debian (http://www.debian.org/doc/user-manuals#quick-reference).
El fichero que configura el interfaz eth0 es /etc/sysconfig/network-scripts/ifcfg-eth0 cuya sintaxis es:
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0 ONBOOT=yes BOOTPROTO=none NETMASK=255.255.255.0 IPADDR=193.147.118.57 GATEWAY=193.147.118.1 TYPE=Ethernet USERCTL=no IPV6INIT=no PEERDNS=no |
Este fichero sólo debería modificarse utilizando un programa que lo edite. Por ejemplo, en X-window podemos utilizar system-config-network.
El fichero que configura a todos los interfaces de red es:
/etc/conf.d/net
|
Su sintaxis es:
root# cat /etc/conf.d/net
# This blank configuration will automatically use DHCP for any net.* # scripts in /etc/init.d. To create a more complete configuration, # please review /etc/conf.d/net.example and save your configuration # in /etc/conf.d/net (this file :]!). config_eth0=( "193.147.118.57 netmask 255.255.255.0 brd 193.147.118.255" ) routes_eth0=( "default gw 193.147.118.1" ) |
En Gentoo este fichero se modifica usando un editor de ficheros ASCII.
La modificación de los ficheros de configuración del TCP/IP no basta para que probemos los cambios. Hay que inicializar los scripts que utilizan dichos ficheros. Esto se hace así:
root# /etc/init.d/networking restart
|
root# /etc/init.d/network restart
|
root# /etc/init.d/net.eth0 restart
|
El nombre y dominio del host se encuentran en el fichero /etc/hostname:
gogh.ace.ual.es
|
El nombre y dominio del host se encuentran en el fichero /etc/sysconfig/network:
NETWORKING=yes
NETWORKING_IPV6=yes HOSTNAME=gogh.ace.ual.es |
El nombre del host aparece en el fichero /etc/conf.d/hostname:
root# cat /etc/conf.d/hostname
# /etc/conf.d/hostname # Set to the hostname of this machine HOSTNAME="gogh" |
El dominio del host aparece en el fichero /etc/conf.d/domainname:
# /etc/conf.d/domainname
# When setting up resolv.conf, what should take precedence? # 0 = let dhcp/whatever override DNSDOMAIN # 1 = override dhcp/whatever with DNSDOMAIN OVERRIDE=1 # To have a proper FQDN, you need to setup /etc/hosts and /etc/resolv.conf # (domain entry in /etc/resolv.conf and FQDN in /etc/hosts). # # DNSDOMAIN merely sets the domain entry in /etc/resolv.conf, see # the resolv.conf(5) manpage for more info. DNSDOMAIN="ace.ual.es" # For information on setting up NIS, please see: # http://www.linux-nis.org/nis-howto/HOWTO/ NISDOMAIN="" |
Aunque parezca mentira, la configuración del servidor de nombres es independiente de la distribución de Linux. El fichero que contiene la dirección IP del servidor DNS es siempre /etc/resolv.conf que, para todos los hosts de la Universidad de Almería, debería tener al menos la entrada:
nameserver 150.214.156.2
|
Si existen servidores alternativos, aparecen más entradas pero con otra dirección IP claro.
Otro aspecto importante a considerar es el papel del fichero /etc/hosts. Este fichero se utiliza siempre (aunque el servidor DNS haya sido especificado,) y contiene una lista de resoluciones estáticas de nombres. En este fichero se incluyen las resoluciones más frecuentes (por ejemplo, para hosts a los que nos conectamos todos los días) y descargamos así al DNS. Por otra parte, si este servicio cae, la resolución para estos hosts sigue funcionando. El contenido típico de este fichero es:
root# cat /etc/hosts
# /etc/hosts # # This file describes a number of hostname-to-address # mappings for the TCP/IP subsystem. It is mostly # used at boot time, when no name servers are running. # On small systems, this file can be used instead of a # "named" name server. Just add the names, addresses # and any aliases to this file... # 127.0.0.1 localhost 193.147.118.57 gogh.ace.ual.es gogh 150.214.156.2 filabres.ual.es filabres alias_filabres # IPV6 versions of localhost and co ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts |