6 Redes con TCP/IP



¡¡¡EN OBRAS!!!

Linux soporta una implementación completa de los protocolos de red TCP/IP (Transport Control Protocol/Internet Protocol). TCP/IP ha resultado ser hasta ahora el mejor mecanismo de comunicación entre ordenadores de todo el mundo. Con Linux y una tarjeta Ethernet podrá introducir su maquina en una red local o (si se tienen las conexiones apropiadas) a la Internet, la red TCP/IP de ámbito mundial.

Poner en marcha una pequeña red local de maquinas UNIX es fácil. Solo requiere una tarjeta Ethernet en cada maquina y los cables adecuados así como hardware accesorio (terminadores, etc).
Y si su universidad o empresa tiene acceso a la Internet, podrá insertar su maquina Linux en esta red. La implementación actual de TCP/IP y los protocolos relacionados para Linux se llama NET-2. No tiene que ver con la version NET-2 para BSD. En realidad, se refiere a que es la segunda implementacion que se hace para Linux.

NET-2 de Linux soporta también SLIP (Serial Line Internet Protocol). SLIP le permitirá acceder a la Internet con un módem. Si su universidad o empresa proporciona accesos por SLIP, podrá llamar desde su casa al servidor SLIP y conectarse así a la Red. Recíprocamente, si posee en Linux una tarjeta de Red y un módem podrá configurar un servidor SLIP en el.

6.1 Hardware requerido

Puede utilizar el TCP/IP para Linux sin hardware de red. Así podrá usar el dispositivo "loopback" para conectarse con usted mismo. Aunque parezca poco serio, hay algunos programas que necesitan conexiones de red "loopback" para funcionar.

Sin embargo, si quiere usar Linux en una red TCP/IP Ethernet, necesitará una de las tarjetas soportadas: 3com 3c503, 3c503/16; Novell NE1000, NE2000; Western Digital WD8003, WD8013; Hewlett Packard HP27245, HP27247, HP27250...
Se ha comprobado que también funcionan las siguientes tarjetas clonicas: Clonicas de WD-80x3: LANNET LEC-45; clonicas de NE2000: Alta Combo, Artisoft LANtastic AE-2, Asante Etherpak 2001/2003, D-Link Ethernet II, LTC E-NET/16 P/N 8300-200-002, Network Solutions HE-203, SVEC 4 Dimension Ethernet, 4-Dimension FD0490 EtherBoard 16, D-Link DE-600 y SMC Elite 16.
Sobre este tema encontrará mas información en el documento Ethernet HOWTO.
Linux también funciona con SLIP, que permite acceder a la red Internet por teléfono. En este caso, necesitará un módem compatible con el servidor SLIP. Muchos servidores requieren modems de alta velocidad, a 14400 bits por segundo (norma V.32bis).

6.2 Configuración de TCP/IP

En esta sección intentaremos explicar como configurar una conexion TCP/IP con Ethernet. Nótese que este método funcionara en muchos sistemas, pero no siempre. Nuestra explicación debería ser suficiente para aclararle el camino en la configuración de red en su maquina, pero hay además otros detalles que no mencionaremos aqui por su extensión. Le aconsejamos que consulte los documentos Linux Network Administrators' Guide y NET-2 HOWTO para mas informacion.3 En primer lugar, vamos a asumir que su sistema Linux ha sido instalado con el software TCP/IP. Esto incluye clientes como telnet y ftp, comandos de administracion como ifconfig y route (que suelen estar en /etc) y ficheros de configuración de red, como /etc/hosts. Los documentos adicionales que hemos mencionado explican como instalar todo ese software si aun no lo ha hecho. También vamos a suponer que el nucleo esta compilado con el soporte TCP/IP. Vea la sección 4.7 para informarse de como recompilar el nucleo. Para incluir el soporte de red, tendrá que contestar afirmativamente a la pregunta correspondiente que se le hará durante el comando make config. Una vez hecho esto, se deben modificar los ficheros de configuración que usa NET-2. Esta parte suele ser bastante simple, pero suele haber bastante desacuerdo entre las diferentes distribuciones de Linux. Los ficheros pueden estar en /etc o en /usr/etc o incluso /usr/etc/inet. En el peor caso puede usar el comando find para localizar los ficheros. A veces los ficheros están también repartidos por varios directorios y no en uno solo. Lo siguiente es fundamentalmente aplicable a conexiones Ethernet. Si lo que va a usar es SLIP,léase esta sección para ir entendiendo los conceptos y luego vea las instrucciones especificas para SLIP.

6.3 La configuración de red

Antes de configurar su sistema con TCP/IP necesita conocer cierta información sobre la red. En muchos casos, el administrador local se la proporcionará.

- Dirección IP. Es la dirección única de cada maquina, formada por números separados por puntos. Por ejemplo, 128.253.153.54. El administrador de red le dará este numero. Si está configurando el modo "loopback" únicamente (esto es, no tiene conexión a la red mediante SLIP o Ethernet) su dirección IP será la 127.0.0.1.

- Mascara de red ("netmask"). Es un numero similar a la dirección IP, que determina que parte de la dirección IP determina el numero de sub-red, y que parte especifica el host en la sub-red (si todo esto no lo comprende bien, le sugerimos que lea documentos sobre administracion de red).
La mascara de red es un patrón de bits, que al ser superpuesto a una dirección de la red, le dirá en que sub-red se encuentra esa dirección. Esto es muy importante para el rutado y, si usted nota que puede comunicar con gente de redes externas pero no con gente de su misma red, es un buen motivo para pensar que tiene mal puesta la mascara. Los administradores de la sub-red habrán seleccionado las mascaras en tiempo de diseño de la red, y serán quienes deban darle esa información. Muchas sub-redes son de "clase C" y usan la mascara 255.255.255.0. Otras sub-redes de "clase B" usan la 255.255.0.0. El código de NET-2 seleccionará automáticamente una mascara que asume que no hay sub-red.
Todo esto debe aplicarse también a la configuración "loopback". Dado que la dirección "loopback" es siempre la 127.0.0.1, las mascara será la 255.0.0.0. Puede especificarla de forma explícita o dejar que el sistema la ponga por defecto.

- Dirección de red. Es el resultado de la operación lógica AND entre su dirección IP y la mascara. Por ejemplo, si su dirección IP es la 128.253.154.32 y la máscara es 255.255.255.0, su dirección de red será la 128.253.154.0. Con una mascara 255.255.0.0, la dirección seria 128.253.0.0.

- Dirección de "broadcast". Se utiliza para lanzar paquetes que deben recibir todas las máquinas de la sub-red. Así pues, si el número de host de la sub-red se obtiene mediante el último octeto de la dirección IP (o sea, la máscara es la 255.255.255.0), su dirección de "broadcast" será su dirección de red operado en OR con 0.0.0.255. Por ejemplo, si su numero IP es el 128.253.154.32, y la mascara es la 255.255.255.0, la dirección de "broadcast" sería la 128.253.154.255.
En muchos casos, bastara con copiar la configuración que tengan otras maquinas de la sub-red y cambiar únicamente el valor IP, por supuesto.

- Dirección de pasarela.(router) Se trata de la dirección de la máquina que va a ser su pasarela a otras maquinas que no estén en su misma sub-red. Muchas veces es una dirección IP como la suya, sólo que terminada en ".1". Por ejemplo, si su dirección IP es la 128.253.154.32, la de la pasarela podría ser la 128.253.154.1. El administrador se la dirá en cualquier caso.
En ocasiones puede tener varias pasarelas. Una pasarela o gateway es simplemente una máquina que se encuentra a la vez en dos sub-redes (tiene una dirección IP por cada una), y reparte los paquetes entre ellas. En muchas sub-redes existe una sola pasarela para comunicarse con las redes externas, pero en otras hay varias, una para cada sub-red adicional.
Si su red esta aislada de otras, o su máquina se encuentra en configuración "loopback", no necesitará dirección de pasarela.

- Dirección del servidor de nombres. Suele existir un servidor que traduce nombres de máquinas a direcciones IP. El administrador le facilitará su dirección. Puede usted mismo ejecutar en su máquina un servidor de nombres, el programa named, en cuyo caso su dirección será la 127.0.0.1. A menos que realmente lo necesite, le recomendamos que procure siempre usar otra maquina distinta. La configuración de named es otro tema; y lo primordial aquí es que comunique con la red. Puede tratar estos asuntos mas tarde. En una configuración "loopback" no es necesario este dato.
Nota para usuarios de SLIP: La información anterior puede necesitarla o no. Cuando use SLIP su dirección IP será determinada de dos formas: bien "estática", lo que significa que será siempre la misma, o bien "dinámica", lo que indica que le será asignada una de las disponibles cada vez que conecte con el servidor SLIP. En la sección sobre SLIP ampliaremos el tema.
NET-2 implementa rutado completo, múltiples rutas, sub-redes... Lo anterior describe las configuraciones mas básicas. Pero la suya puede ser diferente: cuando tenga alguna duda, consulte al administrador de la red, y eche un vistazo a las páginas del manual para route e ifconfig.

6.4 Los ficheros de inicio rc para trabajo en redes

Los ficheros rc son shell scripts que se ejecutan durante el arranque del sistema para configurarlo. Son ejecutados por el proceso init, y ponen en marcha los demonios basicos como sendmail o cron y además configuran parámetros de la red como la dirección IP y el nombre del host. Estos scripts se suelen encontrar en /etc/rc.d o en /etc.

Lo que vamos a hacer aquí es describir los ficheros rc que configuran TCP/IP. En Linux son dos: rc.inet1 y rc.inet2. El primero configura parámetros basicos como direcciones IP e información de rutado. El segundo lanza los demonios TCP/IP, principalmente inetd, quien se encargará de lanzar cuando haga falta los telnetd y demás.En muchos sistemas se juntan los dos ficheros en uno, el rc.inet o rc.net. No tiene importancia el nombre, siempre que se ejecuten en el momento adecuado durante el arranque. Para conseguirlo, init tiene que saberlo, y para ello existen entradas especificas en el fichero /etc/inittab. En el peor caso tendría usted que crear las entradas para rc.inet1 y rc.inet2 en dicho fichero.

Como hemos dicho, rc.inet1 configura los parámetros basicos de red. Esto incluye el número IP y dirección de red, y la tabla de rutado. Estas tablas se usan para rutar los datagramas entrantes y salientes de otras máquinas. Lo más simple es tener tres rutas: una para enviar paquetes a su propia maquina, otra para enviarlos a otra maquina de la sub-red y una tercera para enviarlos a máquinas de otras sub-redes (a traves de una pasarela). Para configurar esto se usan los programas ifconfig y route.

- ifconfig se utiliza para configurar el dispositivo interfaz de red con los parámetros que necesita, como la dirección IP, la máscara, dirección de broadcast y otros.

- route, por su lado, se utiliza para crear o modificar entradas de la tabla de rutado.Para muchas configuraciones, el siguiente rc.inet1 puede valer, aunque, por supuesto, necesitará poner sus propias direcciones IP y demás.

#!/bin/bash
# /etc/rc.d/rc.inet1 -- Configuración de TCP/IP
# Configuración del dispositivo 'loopback'

HOSTNAME=`hostname`

/etc/ifconfig lo 127.0.0.1 # utiliza por defecto la mascara 255.0.0.0
/etc/route add 127.0.0.1 # una ruta apunta al dispositivo 'loopback'

# Configuración del dispositivo ethernet. Si solo se usa el 'loopback',
# comentar las lineas siguientes.

# EDITELO con sus propios datos.
IPADDR="128.253.154.32" # PONGA aqui su dirección IP
NETMASK="255.255.255.0" # PONGA aqui su mascara de red
NETWORK="128.253.154.0" # PONGA aqui su dirección de red
BROADCAST="128.253.154.255" # PONGA aqui su dirección 'broadcast' si
# la tiene. Si no, elimine la linea.
GATEWAY="128.253.154.1" # PONGA aqui su dirección de pasarela
/etc/ifconfig eth0 ${IPADDR} netmask ${NETMASK} broadcast ${BROADCAST}

# Si no tiene dirección de 'broadcast', ponga la anterior linea así:
# /etc/ifconfig eth0 ${IPADDR} netmask ${NETMASK}

/etc/route add ${NETWORK}

# Lo que sigue solo hace falta si hay pasarela, o sea, si su sub-red esta
# conectada a otra red.
/etc/route add default gw ${GATEWAY} metric 1
# Fin de la configuración de ethernet
Quizás tenga que estudiarse un poco más el tema para su instalación particular, aunque en la mayor parte de los casos el fichero anterior será suficiente. rc.inet2 arranca servidores usados por TCP/IP. El más importante es inetd, que queda en segundo plano y escucha por varios puertos de la red. Cuando una máquina intenta conectarse por uno de ellos (por ejemplo, por el de telnet), inetd envía una copia del servidor correspondiente (en este caso, in.telnetd) para que controle el puerto afectado. Esto es mejor que mantener en ejecución todos los servidores de red necesarios (múltiples copias de in.telnetd, in.ftpd y demás). inetd los arranca conforme se van necesitando. Pero en rc.inet2 se arrancan también otros demonios. syslogd se ocupa de acumular los mensajes generados por el núcleo y diversas aplicaciones y tratarlos según diga el fichero /etc/syslogd.conf (guardarlos en ficheros, sacarlos por consola,... ). routed se ocupa de la información de rutado dinámica. Cuando su sistema intenta enviar paquetes a otra red, puede requerir nuevas entradas en las tablas de rutado, que routed trata sin necesidad de intervención del usuario.

El ejemplo siguiente solo arranca un numero mínimo de servidores. Existen otros que pueden interesarle, como el NFS. Cuando instale TCP/IP en su sistema, es mejor empezar con una configuración sencilla y luego complicarla según sus necesidades.

Observe que en el fichero siguiente se asume que los servidores de red se encuentran en /etc, pero pueden estar en otro sitio (en /sbin, por ejemplo).
#! /bin/sh # Ejemplo de /etc/rc.d/rc.inet2 # Arrancar syslogd if [ -f /etc/syslogd ] then /etc/syslogd fi # Arrancar inetd if [ -f /etc/inetd ] then /etc/inetd fi # Arrancar routed if [ -f /etc/routed ] then /etc/routed -q fi # Hecho! Otro servidor que puede interesarle es named, servidor de nombres, que traducira nombres (lo- cales) a direcciones IP y viceversa. Si no hay servidor de nombres en su sub-red o quiere proporcionar nombres nuevos a la misma, necesitara arrancar named. Su configuración es mas compleja y requiere cierto cuidado y planificación, por lo que le recomendamos consultar bibliografía especifica. Sin embargo, no es habitual tener que instalar un servidor de nombres en su sistema.

6.5 /etc/hosts

/etc/hosts lleva una lista de direcciones IP y nombres de maquinas que les corresponden. En general, /etc/hosts solo contiene entradas para su máquina y quizás alguna otra "importante", como servidores de nombres o pasarelas. Su servidor de nombres local proporciona a otras maquinas traducción automática del nombre de su host a su dirección IP.

Por ejemplo, si su maquina es platon.seroestar.com con la dirección IP 128.253.154.32, su /etc/hosts sería como este:
127.0.0.1 localhost
128.253.154.32 platon.seroestar.com platon Si solo usa el "loopback", la única linea necesaria es la que tiene el numero 127.0.0.1, añadiendo tras localhost el nombre de su maquina.

6.6 /etc/networks

El fichero /etc/networks tiene direcciones de su red y otras, y es usado por el comando route. Permite dar nombre a las redes. Cada sub-red que quiera añadir a route debe aparecer en /etc/networks. Por ejemplo, default 0.0.0.0 # rutado por defecto - obligatorio loopnet 127.0.0.0 # red de 'loopback' - obligatorio mynet 128.253.154.0 # Ponga aqui su dirección de red

6.7 /etc/host.conf

Este fichero dice a su sistema como resolver los nombres de los hosts. Debe contener dos líneas: order hosts,bind multi on Estas líneas indican a los mecanismos de resolución que empiecen buscando en el fichero /etc/hosts y luego pregunten al servidor de nombres, si existe. La entrada multi permite que para un nombre de maquina haya varias direcciones IP en /etc/hosts.

6.8 /etc/resolv.conf

En este fichero se configura el mecanismo de resolución, especificando la dirección del servidor de nombres y el nombre del dominio de su maquina. El dominio es como un nombre de host "mutilado". Por ejemplo, si su maquina se llama loomer.vpizza.com, el dominio será vpizza.com. de ejemplo, veremos el caso de la maquina goober.norelco.com cuyo servidor de nombres es el 127.253.154.5: domain norelco.com nameserver 127.253.154.5 Con líneas nameserver adicionales podrá especificar la existencia de varios servidores de nombres.

6.9 Ajuste del nombre de su host

Para activar el nombre de su host debe usar el comando hostname. Esto suele hacerse en un fichero como /etc/rc.local. Busque en sus ficheros rc y busque una llamada a hostname como la siguiente: /bin/hostname loomer.vpizza.com Vea que hay que especificar el nombre completo (dominio incluido).