% Linux Installation and Getting Started    -*- TeX -*-
% tcpip.tex
% Copyright (c) 1992, 1993 by Matt Welsh <mdw@sunsite.unc.edu>
%
% This file is freely redistributable, but you must preserve this copyright 
% notice on all copies, and it must be distributed only as part of "Linux 
% Installation and Getting Started". This file's use is covered by the 
% copyright for the entire document, in the file "copyright.tex".

% Traduccion realizada por Juan Jose Amor. Envie sus comentarios a:
%            Juan Jose Amor, 2:341/12.19 (FidoNet)
%            jjamor@gedeon.ls.fi.upm.es (InterNet)
% $Log: tcpip.tex,v $
% Revision 0.5.0.1  1996/02/10 23:45:06  rcamus
% Primera beta publica
%
%

\section{Redes con TCP/IP}\label{sec-tcpip}
\index{networking!TCP/IP|(}
\index{TCP/IP|(}

Linux soporta una implementaci\'on 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\'on entre
ordenadores de todo el mundo. Con Linux y una tarjeta Ethernet podr\'a
introducir su m\'aquina en una red local o (si se tienen las conexiones
apropiadas) a la InterNet, la red TCP/IP de \'ambito mundial.

Poner en marcha una peque\~na red local de m\'aquinas Unix es f\'acil. S\'olo
requiere una tarjeta Ethernet en cada m\'aquina y los cables adecuados
as\'{\i} como hardware accesorio (terminadores, etc). Y si su universidad o
empresa tiene acceso a la InterNet, podr\'a insertar su m\'aquina Linux en
esta red.

\index{TCP/IP!NET-2 implementation of}
\index{NET-2}
\index{networking!NET-2}
La implementaci\'on actual de TCP/IP y los protocolos relacionados para
Linux se llama ``NET-2''. No tiene que ver con la versi\'on NET-2 para
BSD. En realidad, se refiere a que es la segunda implementaci\'on que se
hace para Linux.

\index{NET-2!support for serial line Internet protocol (SLIP)}
\index{SLIP}
\index{networking!SLIP}
\index{serial line Internet protocol}
NET-2 de Linux soporta tambi\'en SLIP ({\it Serial Line Internet
Protocol}). SLIP le permitir\'a acceder a la InterNet con un m\'odem. Si
su universidad o empresa proporciona accesos por SLIP, podr\'a llamar
desde su casa al servidor SLIP y conectarse as\'{\i} a la
Red. Rec\'{\i}procamente, si posee en Linux una tarjeta de Red y un m\'odem
podr\'a configurar un servidor SLIP en \'el.

Para obtener m\'as informaci\'on de configuraci\'on de TCP/IP en Linux, le
animamos a que lea el documento {\it NET-2 HOWTO}, disponible mediante
FTP an\'onimo en {\tt sunsite.unc.edu}. Se trata de una gu\'{\i}a completa de
configuraci\'on, que incluye conexiones mediante Ethernet y SLIP. Otro
documento relacionado es el {\it Ethernet HOWTO}, que se centra en
c\'omo configurar diversos modelos de tarjetas Ethernet. Adem\'as, en el
Proyecto de Documentaci\'on de Linux, al que pertenece este libro, se ha
desarrollado otro sobre este tema, {\em Linux Network Administrator's
Guide}. Vea, para m\'as informaci\'on el ap\'endice~\ref{app-sources-num}.

Encontrar\'a m\'as ayuda en el libro {\em TCP/IP Network Administration},
de Craig Hunt. Contiene informaci\'on completa acerca del uso y la
configuraci\'on de TCP/IP en m\'aquinas Unix.

\subsection{Hardware requerido}
\index{TCP/IP!hardware requirements for}
Puede utilizar el TCP/IP para Linux sin hardware de red. As\'{\i} podr\'a
usar el dispositivo ``loopback'' para conectarse con usted
mismo. Aunque parezca poco serio, hay algunos programas que necesitan
conexiones de red ``loopback'' para funcionar.

\index{ethernet!supported cards}
\index{hardware support!ethernet cards}
\index{networking!ethernet cards, supported}
Sin embargo, si quiere usar Linux en una red TCP/IP Ethernet,
necesitar\'a 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\'en funcionan las siguientes tarjetas
cl\'onicas: Cl\'onicas de WD-80x3: LANNET LEC-45; cl\'onicas 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\'a m\'as informaci\'on en el documento {\it
Ethernet HOWTO}.

Linux tambi\'en funciona con SLIP, que permite acceder a la red InterNet
por tel\'efono. En este caso, necesitar\'a un m\'odem compatible con el
servidor SLIP. Muchos servidores requieren modems de alta velocidad, a
14400 bits por segundo (norma V.32bis).

\subsection{Configuraci\'on de TCP/IP}

\index{TCP/IP!configuring}
En esta secci\'on intentaremos explicar c\'omo configurar una conexi\'on
TCP/IP con Ethernet. Notese que este m\'etodo funcionar\'a en muchos
sistemas, pero no siempre. Nuestra explicaci\'on deber\'{\i}a ser suficiente
para aclararle el camino en la configuraci\'on de red en su m\'aquina,
pero hay adem\'as otros detalles que no mencionaremos aqu\'{\i} por su
extensi\'on. Le aconsejamos que consulte los documentos {\em Linux
Network Administrators' Guide\/} y {\em NET-2 HOWTO} para m\'as
informaci\'on.\footnote{Algunas de las cosas que aqu\'{\i} se exponen
proceden del documento {\em NET-2 HOWTO} de Terry Dawson y Matt Welsh.} 

En primer lugar, vamos a asumir que su sistema Linux ha sido instalado
con el software TCP/IP. Esto incluye clientes como {\tt telnet} y {\tt
ftp}, comandos de administraci\'on como {\tt ifconfig} y {\tt route}
(que suelen estar en {\tt /etc}) y ficheros de configuraci\'on de red,
como {\tt /etc/hosts}. Los documentos adicionales que hemos mencionado
explican c\'omo instalar todo ese software si aun no lo ha hecho.

Tambi\'en vamos a suponer que el n\'ucleo est\'a compilado con el soporte
TCP/IP. Vea la secci\'on~\ref{sec-sysadm-upgrade} para informarse de
c\'omo recompilar el n\'ucleo. Para incluir el soporte de red, tendr\'a que
contestar afirmativamente a la pregunta correspondiente que se le har\'a
durante el comando {\tt make config}.

Una vez hecho esto, se deben modificar los ficheros de configuraci\'on
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 {\tt /etc} o en {\tt /usr/etc} o incluso {\tt
/usr/etc/inet}. En el peor caso puede usar el comando {\tt find} para
localizar los ficheros. A veces los ficheros est\'an tambi\'en 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\'ease esta secci\'on para ir entendiendo los
conceptos y luego vea las instrucciones espec\'{\i}ficas para SLIP.

\subsubsection{La configuraci\'on de red}

\index{TCP/IP!configuring}
Antes de configurar su sistema con TCP/IP necesita conocer cierta
informaci\'on sobre la red. En muchos casos, el administrador local se
la proporcionar\'a.
\begin{itemize}
\index{TCP/IP!IP address}
\index{IP address!defined}
\item Direcci\'on IP. Es la direcci\'on \'unica de cada m\'aquina, formada por
n\'umeros separados por puntos. Por ejemplo, 128.253.153.54. El
administrador de red le dar\'a este n\'umero.

	Si est\'a configurando el modo ``loopback'' \'unicamente (esto es, no
tiene conexi\'on a la red mediante SLIP o Ethernet) su direcci\'on IP ser\'a
la 127.0.0.1.	  

\index{TCP/IP!network mask}
\index{network mask!defined}
\item M\'ascara de red (``netmask''). Es un n\'umero similar a la
direcci\'on IP, que determina qu\'e parte de la direcci\'on IP determina el
n\'umero de sub-red, y qu\'e parte especifica el {\it host} en la
sub-red (si todo esto no lo comprende bien, le sugerimos que lea
documentos sobre administraci\'on de red). 

	La m\'ascara de red es un
patr\'on de bits, que al ser superpuesto a una direcci\'on de la red, le
dir\'a en qu\'e sub-red se encuentra esa direcci\'on. 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 m\'ascara.

	Los administradores de la sub-red habr\'an seleccionado las m\'ascaras
en tiempo de dise\~no de la red, y ser\'an quienes deban darle esa
informaci\'on. Muchas sub-redes son de ``clase C'' y usan la m\'ascara
255.255.255.0. Otras sub-redes de ``clase B'' usan la 255.255.0.0. El
c\'odigo de NET-2 seleccionar\'a autom\'aticamente una m\'ascara que asume que
no hay subred.

	Todo esto debe aplicarse tambi\'en a la configuraci\'on
``loopback''. Dado que la direcci\'on ``loopback'' es siempre la
127.0.0.1, las m\'ascara ser\'a la 255.0.0.0. Puede especificarla de forma
expl\'{\i}cita o dejar que el sistema la ponga por defecto.

\index{TCP/IP!network address}
\index{network address!defined}
\item Direcci\'on de red. Es el resultado de la operaci\'on l\'ogica AND
entre su direcci\'on IP y la m\'ascara. Por ejemplo, si su direcci\'on IP es
la 128.253.154.32 y la m\'ascara es 255.255.255.0, su direcci\'on de red
ser\'a la 128.253.154.0. Con una m\'ascara 255.255.0.0, la direcci\'on ser\'{\i}a
128.253.0.0. Si utiliza solo la configuraci\'on en ``loopback'', la
direcci\'on de red no existe.

\index{TCP/IP!broadcast address}
\index{broadcast address!defined}
\item Direcci\'on de ``broadcast''. Se utiliza para lanzar paquetes que
deben recibir todas las m\'aquinas de la subred. As\'{\i} pues, si el n\'umero
de {\it host} de la subred se obtiene mediante el \'ultimo octeto de la
direcci\'on IP (o sea, la m\'ascara es la 255.255.255.0), su direcci\'on de
``broadcast'' ser\'a su direcci\'on de red operado en OR con 0.0.0.255.

	Por ejemplo, si su n\'umero IP es el 128.253.154.32, y la m\'ascara es
la 255.255.255.0, la direcci\'on de ``broadcast'' ser\'{\i}a la 128.253.154.255. 

	Observe que por motivos {\it hist\'oricos}, algunas subredes est\'an
configuradas para usar la direcci\'on de red como direcci\'on de
``broadcast''. Si tiene dudas, consulte con el administrador de la
red. En muchos casos, bastar\'a con copiar la configuraci\'on que tengan
otras m\'aquinas de la subred y cambiar \'unicamente el valor IP, por supuesto.

	La direcci\'on ``broadcast'' tampoco tiene utilidad en una
configuraci\'on en ``loopback''.

\index{TCP/IP!gateway address}
\index{gateway address!defined}
\item Direcci\'on de pasarela. Se trata de la direcci\'on de la m\'aquina
que va a ser su pasarela a otras m\'aquinas que no est\'en en su misma
subred. Muchas veces es una direcci\'on IP como la suya, solo que
terminada en ``.1''. Por ejemplo, si su direcci\'on IP es la
128.253.154.32, la de la pasarela podr\'{\i}a ser la 128.253.154.1. El
administrador se la dir\'a en cualquier caso.

	En ocasiones puede tener varias pasarelas. Una pasarela o {\em
gateway} es simplemente una m\'aquina que se encuentra a la vez en dos
subredes (tiene una direcci\'on IP por cada una), y reparte los paquetes
entre ellas. En muchas subredes existe una sola pasarela para
comunicarse con las redes externas, pero en otras hay varias, una para
cada subred adicional.

	Si su red est\'a aislada de otras, o su m\'aquina se encuentra en
configuraci\'on ``loopback'', no necesitar\'a direcci\'on de pasarela.
	
\index{TCP/IP!nameserver address}
\index{nameserver address!defined}
\item Direcci\'on del servidor de nombres. Suele existir un servidor que
traduce nombres de m\'aquinas a direcciones IP. El administrador le
facilitar\'a su direcci\'on. Puede usted mismo ejecutar en su m\'aquina un
servidor de nombres, el programa {\tt named}, en cuyo caso su
direcci\'on ser\'a la 127.0.0.1. A menos que realmente lo necesite, le
recomendamos que procure siempre usar otra m\'aquina distinta. La
configuraci\'on de {\tt named} es otro tema; y lo primordial aqu\'{\i} es que
comunique con la red. Puede tratar estos asuntos m\'as tarde.

	En una configuraci\'on ``loopback'' no es necesario este dato.
\end{itemize}

Nota para usuarios de SLIP: La informaci\'on anterior puede necesitarla
o no. Cuando use SLIP su direcci\'on IP ser\'a determinada de dos formas:
bien ``est\'atica'', lo que significa que ser\'a siempre la misma, o bien
``din\'amica'', lo que indica que le ser\'a asignada una de las
disponibles cada vez que conecte con el servidor SLIP. En la secci\'on
sobre SLIP ampliaremos el tema.

	NET-2 implementa rutado completo, m\'ultiples rutas, subredes... Lo
anterior describe las configuraciones m\'as b\'asicas. Pero la suya puede
ser diferente: cuando tenga alguna duda, consulte al administrador de
la red, y eche un vistazo a las p\'aginas del manual para {\tt route} e
{\tt ifconfig}. La configuraci\'on completa de redes TCP/IP supera
ampliamente las intenciones de este libro, y con lo anterior s\'olo
pretendemos posibilitar que todo el mundo pueda poner en marcha su
sistema en una red ya configurada.

\subsubsection{Los ficheros de inicio {\tt rc} para trabajo en redes}

\index{TCP/IP!configuration scripts for}
\index{configuration scripts!for TCP/IP}
\index{rc@{\tt rc}!files!defined}
Los ficheros {\tt rc} son {\it shell scripts} que se ejecutan durante
el arranque del sistema para configurarlo. Son ejecutados por el
proceso {\tt init}, y ponen en marcha los {\it demonios} b\'asicos como
{\tt sendmail} o {\tt cron} y adem\'as configuran par\'ametros de la red
como la direcci\'on IP y el nombre del {\it host}. Estos {\it scripts}
se suelen encontrar en {\tt /etc/rc.d} o en {\tt /etc}.

\index{rc@{\tt rc}!files!for TCP/IP}
\index{TCP/IP!rc.inet1@{\tt rc.inet1}}
\index{rc.inet1@{\tt rc.inet1}}
\index{TCP/IP!rc.inet2@{\tt rc.inet2}}
\index{rc.inet2@{\tt rc.inet2}}
Lo que vamos a hacer aqu\'{\i} es describir los ficheros {\tt rc} que
configuran TCP/IP. En Linux son dos: {\tt rc.inet1} y {\tt
rc.inet2}. El primero configura par\'ametros b\'asicos como direcciones IP
e informaci\'on de rutado. El segundo lanza los demonios TCP/IP,
principalmente {\tt inetd}, quien se encargar\'a de lanzar cuando haga
falta los {\tt telnetd} y dem\'as.

\index{TCP/IP!rc.inet@{\tt rc.inet}}
\index{rc.inet@{\tt rc.inet}}
\index{TCP/IP!rc.net@{\tt rc.net}}
\index{rc.net@{\tt rc.net}}
En muchos sistemas se juntan los dos ficheros en uno, el {\tt rc.inet}
o {\tt rc.net}. No tiene importancia el nombre, siempre que se
ejecuten en el momento adecuado durante el arranque. Para conseguirlo,
{\tt init} tiene que saberlo, y para ello existen entradas espec\'{\i}ficas
en el fichero {\tt inittab}. En el peor caso tendr\'{\i}a usted que crear
las entradas para {\tt rc.inet1} y {\tt rc.inet2} en dicho fichero.

Como hemos dicho, {\tt rc.inet1} configura los par\'ametros b\'asicos de
red. Esto incluye el n\'umero IP y direcci\'on de red, y la tabla de
rutado. Estas tablas se usan para rutar los datagramas entrantes y
salientes de otras m\'aquinas. Lo m\'as simple es tener tres rutas: una
para enviar paquetes a su propia m\'aquina, otra para enviarlos a otra
m\'aquina de la subred y una tercera para enviarlos a m\'aquinas de otras
subredes (a trav\'es de una pasarela). Para configurar esto se usan los
programas {\tt ifconfig} y {\tt route}, programas que suelen estar en
{\tt /etc}.

\index{TCP/IP!ifconfig@{\tt ifconfig}}
\index{ifconfig@{\tt ifconfig}}
\index{route@{\tt route}}
\index{TCP/IP!route@{\tt route}}
{\tt ifconfig} se utiliza para configurar el dispositivo interfaz de
red con los par\'ametros que necesita, como la direcci\'on IP, la m\'ascara,
direcci\'on de {\it broadcast} y otros. {\tt route}, por su lado, se utiliza para
crear o modificar entradas de la tabla de rutado.

\index{rc.inet1@{\tt rc.inet1}!sample}
\index{TCP/IP!rc.inet1@{\tt rc.inet1}!sample}
Para muchas configuraciones, el siguiente {\tt rc.inet1} puede valer,
aunque, por supuesto, necesitar\'a poner {\em sus propias\/} direcciones
IP y dem\'as.

\begin{tscreen}\begin{verbatim}
#!/bin/sh
# /etc/rc.d/rc.inet1 -- Configuracion de TCP/IP

# Configuracion 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'

# Configuracion 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 direccion IP
NETMASK="255.255.255.0"	        # PONGA aqui su mascara de red
NETWORK="128.253.154.0"         # PONGA aqui su direccion de red
BROADCAST="128.253.154.255"     # PONGA aqui su direccion 'broadcast' si
                                # la tiene. Si no, elimine la linea.
GATEWAY="128.253.154.1"         # PONGA aqui su direccion de pasarela

/etc/ifconfig eth0 ${IPADDR} netmask ${NETMASK} broadcast ${BROADCAST}

# Si no tiene direccion de 'broadcast', ponga la anterior linea asi:
# /etc/ifconfig eth0 ${IPADDR} netmask ${NETMASK} 

/etc/route add ${NETWORK}

# Lo que sigue solo hace falta si hay pasarela, o sea, si su subred esta
# conectada a otra red.
/etc/route add default gw ${GATEWAY} metric 1

# Fin de la configuracion de ethernet
\end{verbatim}\end{tscreen}

Quiz\'as tenga que estudiarse un poco m\'as el tema para su instalaci\'on
particular, aunque en la mayor parte de los casos el fichero anterior
ser\'a suficiente.

\index{rc.inet2@{\tt rc.inet2}}
\index{inetd@{\tt inetd}}
\index{TCP/IP!inetd@{\tt inetd}}
{\tt rc.inet2} arranca servidores usados por TCP/IP. El m\'as importante
es {\tt inetd}, que queda en segundo plano y escucha por varios
puertos de la red. Cuando una m\'aquina intenta conectarse por uno de
ellos (por ejemplo, por el de {\tt telnet}), {\tt inetd} env\'{\i}a una
copia del servidor correspondiente (en este caso, {\tt in.telnetd})
para que controle el puerto afectado. Esto es mejor que mantener en
ejecuci\'on todos los servidores de red necesarios (m\'ultiples copias de
{\tt in.telnetd}, {\tt in.ftpd} y dem\'as). {\tt inetd} los arranca
conforme se van necesitando.

\index{TCP/IP!syslogd@{\tt syslogd}}
\index{syslogd@{\tt syslogd}}
\index{routed@{\tt routed}}
\index{TCP/IP!routed@{\tt routed}}
Pero en {\tt rc.inet2} se arrancan tambi\'en otros {\it demonios}.
{\tt syslogd} se ocupa de acumular los mensajes generados por el
n\'ucleo y diversas aplicaciones y tratarlos seg\'un diga el fichero {\tt
/etc/syslogd.conf} (guardarlos en ficheros, sacarlos por consola,\dots).
{\tt routed} se ocupa de la informaci\'on de rutado din\'amica. Cuando su
sistema intenta enviar paquetes a otra red, puede requerir nuevas
entradas en las tablas de rutado, que {\tt routed} trata sin necesidad
de intervenci\'on del usuario.

\index{networking!NFS}
\index{NFS}
El ejemplo siguiente solo arranca un n\'umero m\'{\i}nimo de
servidores. Existen otros que pueden interesarle, como el NFS. Cuando
instale TCP/IP en su sistema, es mejor empezar con una configuraci\'on
sencilla y luego complicarla seg\'un sus necesidades.

Observe que en el fichero siguiente se asume que los servidores de red
se encuentran en {\tt /etc}, pero pueden estar en otro sitio (en
{\tt /sbin}, por ejemplo).

\index{rc.inet2@{\tt rc.inet2}!sample}
\index{TCP/IP!rc.inet2@{\tt rc.inet2}!sample}
\begin{tscreen}\begin{verbatim}
#! /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!
\end{verbatim}\end{tscreen}

\index{TCP/IP!named@{\tt named}}
\index{named@{\tt named}}
Otro servidor que puede interesarle es {\tt named}, servidor de
nombres, que traducir\'a nombres (locales) a direcciones IP y
viceversa. Si no hay servidor de nombres en su subred o quiere
proporcionar nombres nuevos a la misma, necesitar\'a arrancar {\tt
named}. Su configuraci\'on es m\'as compleja y requiere cierto cuidado y
planificaci\'on, por lo que le recomendamos consultar bibliograf\'{\i}a
espec\'{\i}fica. Sin embargo, no es habitual tener que instalar un servidor
de nombres en su sistema.

\subsubsection{{\tt /etc/hosts}}

\index{TCP/IP!/etc/hosts@{\tt /etc/hosts}}
\index{/etc/hosts@{\tt /etc/hosts}}
{\tt /etc/hosts} lleva una lista de direcciones IP y nombres de
m\'aquinas que les corresponden. En general, {\tt /etc/hosts} solo
contiene entradas para su m\'aquina y quiz\'as alguna otra ``importante'',
como servidores de nombres o pasarelas. Su servidor de nombres local
proporciona a otras m\'aquinas traducci\'on autom\'atica del nombre de su
{\it host} a su direcci\'on IP.

Por ejemplo, si su m\'aquina es {\tt loomer.vpizza.com} con la direcci\'on
IP 128.253.154.32, su {\tt /etc/hosts} ser\'{\i}a como este:
\begin{tscreen}\begin{verbatim}
127.0.0.1               localhost
128.253.154.32          loomer.vpizza.com loomer
\end{verbatim}\end{tscreen}
Si solo usa el ``loopback'', la \'unica l\'{\i}nea necesaria es la que tiene
el n\'umero 127.0.0.1, a\~nadiendo tras {\tt localhost} el nombre de su m\'aquina.
	
\subsubsection{{\tt /etc/networks}}

\index{TCP/IP!/etc/networks@{\tt /etc/networks}}
\index{/etc/networks@{\tt /etc/networks}}
El fichero {\tt /etc/networks} tiene direcciones de su red y otras, y
es usado por el comando {\tt route}. Permite dar nombre a las redes.

\index{route@{\tt route}!entry in /etc/networks required for@entry in {\tt /etc/networks} required for}
Cada subred que quiera a\~nadir a {\tt route} {\em debe aparecer\/} en
{\tt /etc/networks}.

Por ejemplo,
\begin{tscreen}\begin{verbatim}
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 direccion de red
\end{verbatim}\end{tscreen}
	
\subsubsection{{\tt /etc/host.conf}}

\index{TCP/IP!/etc/host.conf@{\tt /etc/host.conf}}
\index{/etc/host.conf@{\tt /etc/host.conf}}
Este fichero dice a su sistema c\'omo resolver los nombres de los {\it
hosts}. Debe contener dos l\'{\i}neas:
\begin{tscreen}\begin{verbatim}
order hosts,bind
multi on
\end{verbatim}\end{tscreen}
Estas l\'{\i}neas indican a los mecanismos de resoluci\'on que empiezen
buscando en el fichero {\tt /etc/hosts} y luego pregunten al servidor
de nombres, si existe. La entrada {\tt multi} permite que para un
nombre de m\'aquina haya varias direcciones IP en {\tt /etc/hosts}.

\subsubsection{{\tt /etc/resolv.conf}}
\index{TCP/IP!/etc/resolve.conf@{\tt /etc/resolve.conf}}
\index{/etc/resolve.conf@{\tt /etc/resolve.conf}}

En este fichero se configura el mecanismo de resoluci\'on, especificando
la direcci\'on del servidor de nombres y el nombre del dominio de su
m\'aquina. El dominio es como un nombre de {\it host} ``mutilado''. Por
ejemplo, si su m\'aquina se llama {\tt loomer.vpizza.com}, el dominio
ser\'a {\tt vpizza.com}.

Como fichero {\tt /etc/resolv.conf} de ejemplo, veremos el caso de la
m\'aquina {\tt goober.norelco.com} cuyo servidor de nombres es el 
127.253.154.5: 
\begin{tscreen}\begin{verbatim}
domain      norelco.com
nameserver  127.253.154.5
\end{verbatim}\end{tscreen}

Con l\'{\i}neas {\tt nameserver} adicionales podr\'a especificar la
existencia de varios servidores de nombres.

\subsubsection{Ajuste del nombre de su {\it host}}

\index{hostname!setting}
\index{hostname@{\tt hostname}}

Para activar el nombre de su {\it host} debe usar el comando {\tt
hostname}. Esto suele hacerse en un fichero como {\tt
/etc/rc.local}. Busque en sus ficheros {\tt rc} y busque una llamada a
{\tt hostname} como la siguiente:
\begin{tscreen}
/bin/hostname loomer.vpizza.com
\end{tscreen}

Vea que hay que especificar el nombre completo (dominio inclu\'{\i}do).

\subsubsection{Problemas con la configuraci\'on}

\index{TCP/IP!troubleshooting}
\index{TCP/IP!debugging}
Una vez que haya preparado los ficheros anteriores, habr\'a que
reiniciar Linux para que reconozca las nuevas configuraciones. Luego
tendr\'a que hacer pruebas, para las que lo m\'as indicado es probar
aspectos individuales de la red y no tratar de empezar, por ejemplo,
lanzando un proceso Mosaic con una conexi\'on X.

\index{netstat@{\tt netstat}}
\index{TCP/IP!displaying routing tables}
Con el comando {\tt netstat} puede ver las tablas de rutado. Esta
suele ser la principal fuente de problemas. En la p\'agina del manual
para este comando encontrar\'a la sintaxis adecuada. Para comprobar que
funciona su conexi\'on, le sugerimos probar un cliente como {\tt telnet}
para ver si puede conectarse a m\'aquinas de su subred y de otras
redes. Esto puede ponerle sobre la pista del problema. Por ejemplo, si
puede conectarse a m\'aquinas de otras subredes pero no de la suya
propia, puede tratarse de un problema con la m\'ascara de red o las
tablas de rutado. Ejecutando {\tt route} como {\tt root} podr\'a jugar
directamente con las entradas de la tabla.

Para hacer estas pruebas de conectividad, utilice direcciones IP y no
nombres. As\'{\i}, si tiene problemas para ejecutar
\begin{tscreen}
\$ {\em telnet shoop.vpizza.com}
\end{tscreen}
la causa puede ser una configuraci\'on incorrecta del servidor de
nombres. Si funciona usando la direcci\'on IP, se puede casi asegurar
que el resto de la configuraci\'on est\'a bien hecha. Solo falta que
funcione bien el servicio de nombres (probablemente haya que
especificar correctamente la direcci\'on del servidor de nombres).

La depuraci\'on de configuraciones de red puede ser tarea dif\'{\i}cil, y no
podemos tratarla aqu\'{\i}. Le sugerimos, si no consigue otra ayuda, que
consulte el libro {\em Linux Network Administrators' Guide} de esta
misma serie.

\subsection{Configuraci\'on de SLIP}

\index{TCP/IP!over serial line|(}
\index{serial line Internet protocol|(}
\index{SLIP|(}
\index{TCP/IP!SLIP|(}
Con SLIP (Serial Line Internet Protocol) usted puede conectarse a una
red TCP/IP mediante una l\'{\i}nea serie, como puede ser un m\'odem o una
l\'{\i}nea dedicada as\'{\i}ncrona. Por supuesto, para usar SLIP tiene que tener
acceso a un servidor SLIP. Muchas empresas y universidades
proporcionan acceso por poco dinero.

\index{dip@{\tt dip}}
\index{slattach@{\tt slattach}}
Podemos destacar dos programas relacionados con SLIP: {\tt dip} y {\tt
slattach}. Ambos se usan para iniciar una conexi\'on SLIP y por lo tanto
son necesarios. No es suficiente con llamar al servidor SLIP con
programas como {\tt kermit} y despu\'es usar los comandos {\tt ifconfig}
y {\tt route}. Esto se debe a que {\tt dip} y {\tt slattach} realizan
una llamada especial {\em ioctl()\/} para convertir el control de un
dispositivo serie a la interfaz de SLIP.

Con {\tt dip} puede llamarse a un servidor SLIP, hacer ciertas
negociaciones de entrada con el mismo (intercambio de usuario y
password, por ejemplo) y despu\'es iniciar la conexi\'on SLIP. Por su
lado, {\tt slattach} se limita pr\'acticamente a modificar la l\'{\i}nea
serie para SLIP, por lo que est\'a indicado para l\'{\i}neas dedicadas que no
requieren interacci\'on con el m\'odem o similar. Casi todo el mundo, sin
embargo, usa {\tt dip}.

Con {\tt dip} tambi\'en puede configurar su sistema como servidor SLIP,
permitiendo a otras m\'aquinas conectarse a la red a trav\'es de su m\'odem
y su conexi\'on Ethernet. Vea los manuales en l\'{\i}nea de {\tt dip} para
m\'as informaci\'on.

\index{TCP/IP!point-to-point connection}
\index{TCP/IP!PPP}
\index{networking!PPP}
\index{PPP}
A SLIP se le llama conexi\'on ``punto a punto'' (point-to-point) pues a
ambos lados de la l\'{\i}nea existen s\'olo las dos m\'aquinas involucradas (no
como sucede en una ethernet). Esta idea se generaliza y mejora con el
protocolo PPP (point-to-point protocol) que tambi\'en se ha portado a Linux.

Cuando inicia una conexi\'on al servidor SLIP, se le asignar\'a una
direcci\'on IP, bien de forma ``est\'atica'' (su direcci\'on IP es siempre
la misma) o ``din\'amica'' (su direcci\'on puede ser diferente de un d\'{\i}a
para otro). Por lo general, los valores de la direcci\'on y pasarela
asignados ser\'an impresos por el servidor SLIP al conectarse. El
programa {\tt dip} es capaz de capturar esos valores y configurar su
sistema para adaptarse a ellos.

Esencialmente, configurar una conexi\'on SLIP es como configurar la
conexi\'on en ``loopback'' o con ethernet. En las siguientes l\'{\i}neas
le mostramos las diferencias. Es importante que vea lo que hemos
explicado antes sobre configuraci\'on en general, y aplique ahora las
modificaciones que le vamos a contar.

\subsubsection{Conexiones SLIP con asignaci\'on de IP est\'atica usando
{\tt dip}}
\label{sec-adv-slip-dip}

\index{TCP/IP!SLIP!static IP address with dip@static IP address with {\tt dip}}
\index{SLIP!static IP address with dip@static IP address with {\tt dip}}
\index{dip@{\tt dip}!static IP address with}
Si su servidor SLIP le permite tener la direcci\'on IP est\'atica, lo m\'as
adecuado es insertar la direcci\'on y el nombre del {\it host} en el
fichero {\tt /etc/hosts}. Adem\'as, debe configurar los ficheros {\tt
rc.inet2}, {\tt hosts.conf} y {\tt resolv.conf} como se ha dicho antes.

En el fichero {\tt rc.inet1} tambi\'en tendr\'a que introducir cambios,
ejecutando {\tt ifconfig} y {\tt route} solo para el dispositivo
``loopback'', puesto que {\tt dip} har\'a lo propio con el dispositivo
SLIP. Pero si usa {\tt slattach} {\em s\'{\i} tendr\'a\/} que incluir
comandos {\tt ifconfig}/{\tt route} en {\tt rc.inet1} para el
dispositivo SLIP (en breve veremos c\'omo).

El programa {\tt dip} {\em deber\'{\i}a\/} configurar sus tablas de rutado
para la conexi\'on SLIP. Sin embargo, puede no hacerlo bien, y tendr\'a
que corregirlo ejecutando por su cuenta {\tt ifconfig} o {\tt route}
cuando se haya conectado. Quiz\'as le convenga entonces escribirse un
{\tt shell script} para hacerlo autom\'aticamente. En muchos casos, la
pasarela es el propio servidor SLIP. De todas formas, el comando {\tt
dip} puede deducirlo de la informaci\'on que env\'{\i}a el servidor al conectarse.

Puede que necesite el argumento {\tt pointopoint} en {\tt ifconfig} si
ve que {\tt dip} no lo configura bien. Por ejemplo, si la direcci\'on
del servidor SLIP es 128.253.154.2 y la suya es 128.253.154.32, el
comando a ejecutar (como {\tt root}) podr\'{\i}a ser:
\begin{tscreen}
ifconfig sl0 128.253.154.32 pointopoint 128.253.154.2
\end{tscreen}
tras conectar con {\tt dip}. La documentaci\'on en l\'{\i}nea de este comando
le ser\'a \'util.

\index{TCP/IP!SLIP!device names for}
\index{SLIP!device names for}
Observe que los dispositivos SLIP que se usan en {\tt ifconfig} y {\tt
route} son {\tt sl0}, {\tt sl1}, etc. (y no como en ethernet, que es
{\tt eth0}, {\tt eth1}, etc.)

En la secci\'on posterior~\ref{sec-adv-using-dip} le explicaremos c\'omo
configurar {\tt dip} para conectarse a un servidor SLIP.

\subsubsection{Conexiones SLIP con asignaci\'on de IP est\'atica usando
{\tt slattach}}

\index{TCP/IP!SLIP!static IP address with slattach@static IP address with {\tt slattach}}
\index{SLIP!static IP address with slattach@static IP address with {\tt slattach}}
\index{stattach@{\tt slattach}!static IP addresses with}
Si tiene una l\'{\i}nea dedicada o un cable conectado directamente al
servidor SLIP, no necesitar\'a usar {\tt dip} para iniciar la
conexi\'on. En su lugar puede usar {\tt slattach}.

En este caso, el fichero {\tt /etc/rc.inet1} puede quedar como sigue:
\begin{tscreen}\begin{verbatim}
#!/bin/sh
IPADDR="128.253.154.32"         # Ponga aqui su direccion IP
REMADDR="128.253.154.2"		# Ponga aqui la del servidor de SLIP

# Modifique lo siguiente para su dispositivo serie
slattach -p cslip -s 19200 /dev/ttyS0
/etc/ifconfig sl0 $IPADDR pointopoint $REMADDR up
/etc/route add default gw $REMADDR
\end{verbatim}\end{tscreen}

{\tt slattach} asigna el primer dispositivo SLIP disponible ({\tt
sl0}, etc.) a la l\'{\i}nea serie especificada.

Observe que el primer par\'ametro de {\tt slattach} es el protocolo SLIP
a utilizar. Actualmente solo valen {\tt slip} y {\tt cslip}. El
segundo es un SLIP que incluye compresi\'on de las cabeceras de los
datagramas. Por ello su elecci\'on habitual ser\'a cslip a menos que tenga
alg\'un problema con la conexi\'on.

Si hay m\'as de un dispositivo SLIP tendr\'a que considerar algunas cosas
respecto al rutado. Tiene que decidir qu\'e rutas a\~nadir, y esto debe
hacerse en funci\'on de la configuraci\'on de la red a la que se
conecte. Le ser\'an de ayuda los libros sobre configuraci\'on de TCP/IP,
la documentaci\'on en l\'{\i}nea del comando {\tt route}, etc.

\subsubsection{Conexiones SLIP con asignaci\'on de IP din\'amica usando
{\tt dip}}

\index{TCP/IP!SLIP!dynamic IP address with dip@dynamic IP address with {\tt dip}}
\index{SLIP!dynamic IP address with dip@dynamic IP address with {\tt dip}}
\index{dip@{\tt dip}!dynamic IP address with}
Si el servidor SLIP le asigna din\'amicamente las direcciones IP, no
sabr\'a, evidentemente, su direcci\'on IP antes de conectarse, con lo que
no puede incluir esa informaci\'on en {\tt /etc/hosts} (aunque s\'{\i}
incluir\'a la informaci\'on de ``loopback'', 127.0.0.1).

Muchos servidores SLIP env\'{\i}an al terminal la direcci\'on IP y la del
propio servidor. Por ejemplo, un servidor SLIP podr\'{\i}a decirle esto al
conectarse:
\begin{tscreen}
Your IP address is 128.253.154.44. \\
Server address is 128.253.154.2.
\end{tscreen}
{\tt dip} puede capturar ese texto y configurar as\'{\i} el sistema.

Vea la secci\'on~\ref{sec-adv-slip-dip} para informarse sobre la
configuraci\'on de los ficheros de TCP/IP con SLIP. Ahora le indicaremos
c\'omo se configura SLIP para conectarse al servidor SLIP.

\subsection{Utilizaci\'on de {\tt dip}}
\label{sec-adv-using-dip}

\index{dip@{\tt dip}!connecting to SLIP server with|(}
\index{SLIP!connecting to server with dip@connecting to servier with {\tt dip}}
{\tt dip} puede facilitar el proceso de conexi\'on a un servidor SLIP,
pues se ocupar\'a de entrar en el sistema remoto y configurar el
dispositivo SLIP seg\'un la informaci\'on recibida del servidor. Este
programa es el m\'as indicado a menos que su l\'{\i}nea sea dedicada.

\index{dip@{\tt dip}!chat script for|(}
Para utilizar {\tt dip} tendr\'a que escribir un ``script'' que
contendr\'a comandos para comunicar con el servidor SLIP durante la
entrada en el sistema remoto. Por ejemplo, incluir\'a env\'{\i}o autom\'atico
de usuario y password al servidor as\'{\i} como lo necesario para asignar
la direcci\'on IP.

Lo que sigue es un ejemplo de {\it script} para asignaci\'on din\'amica de
direcci\'on IP. Para asignaci\'on est\'atica puede poner al principio del
{\it script} los valores fijos a {\tt \$local} y {\tt \$remote}
(direcciones IP local y remota, respectivamente). Vea los manuales de
{\tt dip} para m\'as informaci\'on.

\begin{tscreen}\begin{verbatim}
main:
  # MTU es 'Maximum Transfer Unit' o tama~no maximo de los paquetes
  # transmitidos por el dispositivo SLIP. En muchos servidores este
  # valor debe ser 1500 o 1506. Hable con el administrador de la red
  # si no esta seguro.
  get $mtu 1500

  # Hacer que el rutado de SLIP sea el de su sistema por defecto.
  default

  # Elegir puerto serie y velocidad.
  port cua03
  speed 38400

  # Reiniciar el modem y la linea del terminal. Si le da problemas,
  # comente la linea.
  reset

  # Ponga aqui su cadena de inicio del modem.
  send ATT&C1&D2\\N3&Q5%M3%C1N1W1L1S48=7\r
  wait OK 2
  if $errlvl != 0 goto error
  # Llamar al servidor SLIP (ponga aqui el telefono).
  dial 2546000
  if $errlvl != 0 goto error
  wait CONNECT 60
  if $errlvl != 0 goto error

  # En este punto estaremos conectados. Entrar en el sistema.
login:
  sleep 3
  send \r\n\r\n
  # Esperar el 'prompt' de entrada (login).
  wait login: 10
  if $errlvl != 0 goto error

  # Enviar su nombre de usuario.
  send USERNAME\n

  # Esperar el 'prompt' de password.
  wait ord: 5
  if $errlvl != 0 goto error

  # Enviar su password.
  send PASSWORD\n

  # Esperar el 'prompt' del servidor que indica que esta preparado.
  wait annex: 30
  if $errlvl != 0 goto error

  # Enviar un comando al servidor para empezar la conexion.
  send slip\n
  wait Annex 30

  # Obtener la direccion IP desde el servidor. El comando 'get...remote'
  # lee un texto de la forma xxx.xxx.xxx.xxx y lo asigna a la variable
  # dada como segundo argumento (aqui es $remote).
  get $remote remote
  if $errlvl != 0 goto error
  wait Your 30

  # Obtener la direccion local IP desde el servidor y asignarla a $local.
  get $local remote
  if $errlvl != 0 goto error

  # Establecer la conexion SLIP.
done:
  print CONNECTED to $remote at $rmtip
  print GATEWAY address $rmtip
  print LOCAL address $local
  mode SLIP
  goto exit
error:
  print SLIP to $remote failed.

exit:
\end{verbatim}\end{tscreen}

{\tt dip} ejecuta autom\'aticamente los programas {\tt ifconfig} y {\tt
route} seg\'un los valores asignados a {\tt \$local} y {\tt
\$remote}. Aqu\'{\i}, esas variables son asignadas con el comando {\tt
get\ldots remote}, que obtiene el texto de la direcci\'on del servidor
SLIP y lo asigna a la variable.

Si los comandos {\tt ifconfig} y {\tt route} que {\tt dip} ejecuta no
funcionan, siempre puede llamarlos por su cuenta desde un {\it shell
script} tras ejecutar {\tt dip} o modificar las fuentes del propio
{\tt dip}. La opci\'on {\tt -v} de {\tt dip} le dar\'a informaci\'on para
depuraci\'on generada durante la conexi\'on y le ayudar\'a a averiguar la(s)
causa(s) del problema(s).

Ahora, para probar {\tt dip} y abrir la conexi\'on SLIP, escriba un
comando como:
\begin{tscreen}
\verb!/etc/dip/dip -v /etc/dip/mychat 2>&1!
\end{tscreen}
Estando los ficheros de {\tt dip}, incluyendo el {\it script} {\tt
mychat.dip} en {\tt /etc/dip}.
\index{dip@{\tt dip}!chat script for|)}
\index{dip@{\tt dip}!connecting to SLIP server with|)}

Las explicaciones de esta secci\'on le deber\'{\i}an haber permitido
conectarse a la red, bien sea por Ethernet o por SLIP. De nuevo le
volvemos a recomendar que consulte un libro sobre configuraci\'on de
redes TCP/IP, en especial si en la red hay configuraciones especiales
de rutado o similar.
\index{TCP/IP!over serial line|)}
\index{serial line Internet protocol|)}
\index{SLIP|)}
\index{TCP/IP!SLIP|)}
\index{networking!TCP/IP|)}
\index{TCP/IP|)}
