Logo de AulaDigital

Redes En Linux Como 7

Redes en Linux Como (Previamente Net-3 Como): Uso de hardware común en los PC Página siguiente Página anterior Índice general

7. Uso de hardware común en los PC

7.1 RDSI

La Red Digital de Servicios Integrados (RDSI) es una serie de estándares que especifican una red digital conmutada de propósito general. Una llamada RDSI crea un servicio de datos asíncrono punto a punto hacia el destino. RDSI suele distribuirse con un enlace de gran velocidad que se divide en varios canales discretos. Hay dos tipos de canales diferentes, los Canales B que son los que realmente transportan los datos del usuario y un sólo canal llamado canal D que se usa para enviar información de control a la RDSI para establecer llamadas y otras funciones. En Australia, por ejemplo, RDSI se distribuye con un enlace de 2Mbps que se divide en 30 canales discretos B de 64kbps con un canal D de 64kbps. Se pueden usar cualquier número de canales en cualquier momento y en cualquier combinación. Usted podría, por ejemplo, establecer 30 llamadas separadas a 30 destinos diferentes a 64kbps cada uno, o 15 llamadas a 15 destinos diferentes a 128kbps cada uno (dos canales por llamada), o sencillamente un pequeño número de llamadas y dejar el resto de los canales sin usar. Se puede usar un canal tanto para llamadas entrantes como salientes. La intención original de la RDSI fue permitir a las compañías de telecomunicaciones proporcionar un sólo servicio de datos que pudiera transmitir tanto teléfono (mediante voz digitalizada) como servicios de datos a su casa o negocio sin que tuviera que hacer ningún cambio especial de configuración.

Hay unas pocas maneras diferentes de conectar su ordenador a un servicio RDSI. Una manera es usar un dispositivo llamado Adaptador Terminal que se enchufa a la Unidad Terminadora de Red que su compañía local de telecomunicaciones tuvo que instalar al proporcionarle el servicio RDSI y que presenta unas cuantas interfaces serie. Uno de estos interfaces se usa para introducir instrucciones de establecimiento de llamadas y la configuración y los otros son los que realmente se conectan a los dispositivos de red que usarán los circuitos de datos cuando se hayan establecido. Linux trabajará con este tipo de configuración sin modificación alguna, simplemente tiene que tratar el puerto del Adaptador Terminal como trataría cualquier otro dispositivo serie. Otra manera, que es para la que está diseñado el soporte de RDSI del núcleo permite instalar una tarjeta RDSI en su máquina Linux y dejar entonces que sea el propio Linux quien maneje los protocolos y haga las llamadas.

Opciones de Compilación del Núcleo:

    ISDN subsystem  --->
        <*> ISDN support
        [ ] Support synchronous PPP
        [ ] Support audio via ISDN
        < > ICN 2B and 4B support
        < > PCBIT-D support
        < > Teles/NICCY1016PC/Creatix support
 

La implementación del núcleo de Linux de la RDSI soporta varios tipos diferentes de tarjetas RDSI. Son las que vienen listadas en las opciones de configuración del núcleo.

  • ICN 2B and 4B
  • Octal PCBIT-D
  • Tarjetas Teles ISDN y compatibles

Algunas de estas tarjetas requieren que se les carguen ciertos programas antes de funcionar. Hay una utilidad aparte que hace esto.

Hay disponibles más detalles de cómo configurar el soporte RDSI de Linux en el directorio /usr/src/linux/Documentation/isdn/ y también un listado PUF (Pregutas de Uso Frecuente) dedicado a isdn4linux en http://www.lrz-muenchen.de/~ui161ab/www/isdn. (Puede pulsar sobre la bandera inglesa para la versión en inglés).

Una nota al respecto de PPP. El conjunto de protocolos PPP operará tanto sobre lineas serie síncronas como asíncronas. El demonio PPP (pppd) que se suele distribuir para Linux sólo soporta el modo asíncrono. Si desea ejecutar los protocolos PPP sobre el servicio RDSI, necesitará una versión especial modificada. En la documentación anteriormente mencionada encontrará detalles de cómo encontrarlo.

En http://www.insflug.org/documentos/RDSI-Como/ tiene a su disposición un documento con detalles específicos de la configuración en España.

7.2 PLIP en Linux-2.0

Los nombres de los dispositivos PLIP son `plip0', `plip1' y `plip2'.

Opciones de Compilación del Núcleo:

    Network device support  --->
        <*> PLIP (parallel port) support

plip (Parallel Line IP), se parece a SLIP en que se usa para proporcionar conexiones punto a punto entre dos máquinas, excepto en que está diseñado para usar los puertos paralelos de impresora de la máquina en lugar de los puertos serie (se incluye un diagrama de cableado en la sección de diagramas de cableado más adelante). Como es posible transmitir más de un bit a la vez con un puerto paralelo, es posible obtener mayores velocidades con la interfaz plip que con los dispositivos serie estándar. Además, puede aprovecharse incluso el más sencillo de los puertos paralelos, el puerto de impresora, en lugar de tener que comprar una UART 16550AFN, comparativamente más cara, para los puertos serie. PLIP usa mucha CPU si lo comparamos con un enlace serie y casi seguro que no será una buena opción si puede obtener algunas tarjetas Ethernet baratas, pero funcionará cuando no esté disponible nada más y además lo hará bastante bien. Se puede esperar una tasa de transferencia de alrededor de 20 kilobytes por segundo cuando el enlace está funcionando correctamente.

Los controladores de dispositivo de PLIP compiten con el controlador de dispositivo paralelo por el hardware del puerto paralelo. Si desea usar ambos controladores deberá compilar los dos como módulos para asegurarse de que es capaz de elegir qué puerto quiere que use PLIP y qué puertos usará como dispositivos para la impresora. Lea el Modules mini-Howto para obtener más información sobre la configuración de los módulos en el núcleo.

Por favor tenga en cuenta que algunos portátiles usan circuitería que no funcionará con PLIP porque no permiten algunas combinaciones de señales en las que se basa PLIP, que las impresoras no usan.

El interfaz plip de Linux es compatible con el Crynwyr Packet Driver PLIP y esto significa que puede conectar su máquina Linux a una máquina DOS que esté ejecutando cualquier clase de programas tcp/ip mediante plip.

En la serie de núcleos 2.0.* los dispositivos PLIP están asignados a puertos e IRQ como sigue

    dispositivo  i/o    IRQ
    ----------- -----   ---
    plip0       0x3bc   5
    plip1       0x378   7
    plip2       0x278   2

Si sus puertos paralelos no se ajustan a alguna de las combinaciones de encima entonces tendrá que cambiar la IRQ de un puerto usando el parámetro irq de la orden ifconfig. Asegúrese de que activa las IRQ de los puertos de impresora en la ROM BIOS antes, si es que dispone de esa opción. Como alternativa, puede especificar las opciones io= e irq= como argumentos a insmod, si usa módulos. Por ejemplo:

root# insmod plip.o io=0x288 irq=5

La operación PLIP se controla con dos retardos, cuyos valores por defecto suelen ser correctos. Posiblemente necesite incrementarlos si tiene una máquina un tanto lenta, en cuyo caso los temporizadores a incrementar están en la otra máquina. Hay un programa llamado plipconfig que permite cambiar la configuración de los temporizadores sin recompilar el núcleo. Viene con muchas distribuciones Linux.

Para configurar una interfaz plip, necesitará invocar las siguientes órdenes (o añadirlas a su guión de iniciación del sistema):

root# /sbin/ifconfig plip1 pliplocal pointopoint plipremota
root# /sbin/route add plipremota plip1

Aquí, el puerto usado es el que está en la dirección E/S 0x378; pliplocal y plipremota son los nombres o direcciones IP usadas para los extremos del cable PLIP. Personalmente, prefiero tenerlas en mi base de datos /etc/hosts:

# entradas plip
192.168.3.1   pliplocal
192.168.3.2   plipremota

El parámetro pointopoint tiene el mismo significado que para SLIP, en el que especifica la dirección de la máquina en el otro extremo del enlace.

En casi todos los aspectos, se puede tratar una interfaz plip como si fuese una interfaz SLIP, excepto que no se puede (ni se necesita) usar dip ni slattach.

Para obtener más información al respecto de PLIP, acuda al PLIP mini-Howto.

7.3 PLIP en Linux-2.2

Durante el desarrollo de las versiones 2.1 del núcleo, se cambió la implementación del puerto paralelo, hacia una configuración mejor.

Opciones de compilación del núcleo:

    General setup  --->
        [*] Parallel port support
    Network device support  --->
        <*> PLIP (parallel port) support

El nuevo código de PLIP se comporta como el anterior (se usan las mismas órdenes ifconfig y route que en la sección anterior, pero la iniciación del dispositivo es diferente debido a la avanzada implementación del manejo del puerto paralelo).

El «primer» dispositivo PLIP siempre es denominado plip0, siendo éste el que primero detecta el sistema, de manera similar a lo que ocurre con los dispositivos Ethernet. El verdadero puerto paralelo que se va a usar es uno de los que estén disponibles, tal como se muestra en /proc/parport. Por ejemplo, si sólo tiene un puerto paralelo, sólo tendrá un directorio llamado /proc/parport/0.

Si el núcleo no detecta la IRQ usada por el puerto, insmod plip fallará; en este caso simplemente tendrá que escribir el número correcto en /proc/parport/0/irq y reinvocar insmod.

Hay disponible información completa al respecto del puerto paralelo en el archivo Documentation/parport.txt, parte de las fuentes de su núcleo.

7.4 PPP

Los nombres de los dispositivos PPP son ppp0, ppp1, etc. Los dispositivos están numerados de forma secuencial de manera que el primer dispositivo configurado recibe el 0.

Opciones de compilación del Núcleo:

    Networking options  --->
        <*> PPP (point-to-point) support

La configuración del PPP está cubierta en detalle en el PPP-Como, http://www.insflug.org/documentos/PPP-Como/.

Mantener una conexión permanente a la red usando pppd.

Si es tan afortunado como para tener una conexión semi-permanente a la red y quiere hacer que su máquina establezca automáticamente la conexión PPP si se pierde, existe un truco sencillo para hacerlo.

Configure el PPP de tal manera que pueda ser iniciado por el usuario root ejecutando la orden:

# pppd

Asegúrese de que tiene configurada la opción -detach en el fichero /etc/ppp/options. Entonces, inserte la siguiente línea en el fichero /etc/inittab, bajo las definiciones de getty.

pd:23:respawn:/usr/sbin/pppd

Esto hará que el programa init ejecute y monitorice el programa pppd y que lo reinicie automáticamente si muere.

7.5 Cliente SLIP

Los nombres de los dispositivos SLIP son sl0, sl1, etc. siendo asignado el 0 al primer dispositivo configurado y el resto incrementando secuencialmente según van siendo configurados.

Opciones de compilación del núcleo:

    Network device support  --->
        [*] Network device support
        <*> SLIP (serial line) support
        [ ]  CSLIP compressed headers
        [ ]  Keepalive and linefill
        [ ]  Six bit SLIP encapsulation

El SLIP (Serial Line Internet Protocol) le permite usar tcp/ip sobre una línea serie, sea una línea de teléfono con un módem, o una línea dedicada. Por supuesto para usar SLIP necesitará tener acceso a un servidor SLIP de algún tipo. Muchas universidades y empresas de todo el mundo proporcionan acceso mediante SLIP.

Slip usa los puertos serie de su máquina para transportar datagramas IP. Para hacerlo debe tomar el control del dispositivo serie. Los dispositivos SLIP se denominan sl0, sl1, etc. ¿Cómo se corresponden a sus dispositivos serie? El código de red usa lo que denominados una llamada ioctl (i/o control - control de e/s) para convertir los dispositivos serie en dispositivos SLIP. Se le proporcionan dos programas que pueden hacer esto, y se llaman dip y slattach.

dip

dip (Dialup IP) es un sofisticado programa capaz de programar la velocidad del dispositivo serie, ordenar a su módem que llame al otro extremo del enlace, identificarle automáticamente en el servidor remoto, examinar los mensajes que le envía el servidor y obtener información tal como su dirección IP y ejecutar las ioctl necesarias para conmutar su puerto serie al modo SLIP. dip tiene una gran capacidad para ejecutar guiones (scripts) y esto lo puede explotar para automatizar el procedimiento de autenticación.

Puede encontrarlo en: ftp://metalab.unc.edu/pub/Linux/system/Network/serial/dip/dip337o-uri.tgz.

Para instalarlo, intente lo siguiente:

    usuario% cd /usr/src
    usuario% gzip -dc dip337o-uri.tgz | tar xvf -
    usuario% cd dip-3.3.7o
    root# make install

El Makefile asume la existencia de un grupo denominado uucp, pero puede que usted quiera cambiarlo a dip o SLIP dependiendo de su configuración.

slattach

slattach es un programa muy sencillo comparado con dip, muy fácil de usar, pero no tiene la sofisticación de dip. No tiene capacidad para ejecutar guiones, todo lo que hace es configurar su dispositivo serie como dispositivo SLIP. Asume que tiene toda la información que necesita y la línea serie se establece antes de que lo invoque. slattach es ideal para usarlo donde necesite una conexión permanente al servidor, como un cable físico o una línea dedicada.

¿Cuándo usar cada uno?

Debería usar dip cuando su enlace a la máquina servidora de SLIP es un módem, o algún otro enlace temporal. Debería usar slattach cuando disponga de una línea dedicada, quizá un cable, entre su máquina y el servidor, y no se necesita ejecutar ninguna acción especial para hacer que el enlace funcione. Mire la sección Conexión Permanente con Slip para más información.

configurar SLIP se parece mucho a configurar una interfaz Ethernet (lea la sección Configuración de un dispositivo Ethernet más atrás). Sin embargo, hay unas pocas diferencias clave.

Antes que nada, los enlaces SLIP son diferentes a las redes Ethernet en que sólo hay dos máquinas en la red, una en cada extremo del enlace. Al contrario que con Ethernet que está disponible para su uso nada más que termine de cablear, con SLIP, dependiendo del tipo de enlace que tenga, puede que tenga que iniciar la conexión de red de alguna manera especial.

Si está usando dip entonces esto no debería hacerlo en el momento de arrancar, sino algo más adelante, cuando esté preparado para usar el enlace. Es posible automatizar este procedimiento. Si está usando slattach entonces probablemente quieras añadir una sección a su fichero rc.* correspondiente. Esto lo describiremos pronto.

Hay dos tipos principales e servidores SLIP: servidores de direcciones IP dinámicas y servidores de direcciones IP estáticas. Casi cualquier servidor SLIP le pedirá al conectar una identificación y una contraseña. dip puede proporcionar estos datos automáticamente.

Servidor SLIP estático con línea por llamada y DIP.

Un servidor estático de SLIP es aquél en el que se le ha dado una dirección IP que es exclusivamente suya. Cada vez que conecte al servidor, tendrá que configurar su puerto SLIP con esa dirección. El servidor estático de SLIP contestará a la llamada del módem, posiblemente le pregunte su nombre de usuario y contraseña, y entonces encaminará cualquier datagrama destinado a su dirección mediante esa conexión. Si tiene un servidor estático, entonces puede que quiera añadir una entrada con su dirección IP y el nombre de su máquina (ya que sabe cuales serán) en /etc/hosts. También debería configurar algunos otros ficheros como: rc.*, host.conf, resolv.conf, /etc/HOSTNAME y rc.local. Recuerde que cuando configure rc.*, no necesita añadir ninguna orden especial para la conexión SLIP ya que es dip el que hace todo el trabajo duro al configurar la interfaz. Necesitará proporcionarle a dip la información apropiada de manera que configure la interfaz por usted después de ordenarle al módem que establezca la llamada y de darle de alta en el servidor SLIP.

Si esta es la manera de trabajar de su servidor SLIP entonces puede pasar a la sección Uso de Dip para aprender a configurar dip de forma apropiada.

Servidor SLIP dinámico con línea por llamada y DIP.

Un servidor dinámico de SLIP es aquél que le asigna una dirección IP al azar, a partir de una reserva de direcciones, cada vez que se registra. Eso significa que no hay garantías de que tenga una dirección en particular cada vez, y esa dirección puede ser usada por otra persona después de que usted haya desconectado. El administrador de red que configuró el servidor SLIP habrá asignado un rango de direcciones para que el servidor SLIP las use, cuando el servidor recibe una nueva llamada entrante, localiza la primera dirección sin asignar, guía a quien llama a través del procedimiento de registro y entonces imprime un mensaje de bienvenida que contiene la dirección IP que se le ha asignado, para entonces proceder a usar esa dirección IP durante toda la llamada.

La configuración para este tipo de servidor es similar a la configuración para un servidor estático, excepto en que debe añadir un paso en el que obtiene la dirección IP que el servidor le ha asignado y configura su dispositivo SLIP con ella.

De nuevo, dip hace el trabajo duro y las nuevas versiones son suficientemente sofisticadas no sólo como para registrarle, sino también como para leer automáticamente la dirección IP impresa en el mensaje de bienvenida y almacenarla de manera que pueda configurar el dispositivo SLIP con ella.

Si esta es la manera de trabajar de su servidor SLIP, entonces puede pasar a la sección Uso de Dip para aprender a configurar dip de forma apropiada.

Uso de Dip.

Como se explicó anteriormente, dip es un programa potente que puede simplificar y automatizar el proceso de llamada a el servidor SLIP, registro, inicio de la conexión y configuración de tus dispositivos SLIP con las órdenes ifconfig y route apropiadas.

Esencialmente, para usar dip escribiremos un «guión dip», que es básicamente una lista de órdenes que dip comprende y que le dicen cómo debe realizar cada una de las acciones que usted quiere que haga. Eche un vistazo al fichero sample.dip que viene con dip para hacerse una idea de cómo funciona. dip es un programa bastante potente, con muchas opciones. No las va a encontrar todas aquí, y tendrá que mirar la correspondiente página man, el README y los ficheros de ejemplo que vendrán con su versión de dip.

Fíjese en que el guión sample.dip asume que está accediendo a un servidor SLIP estático, por lo que su IP ya se conoce de antemano. Las nuevas versiones de dip incluyen, para los servidores SLIP dinámicos, una orden que puede usarse para leer y configurar automáticamente el dispositivo SLIP con la dirección IP que el servidor dinámico le asigna. El ejemplo siguiente es una versión modificada y traducida del sample.dip que viene con dip337j-uri.tgz y probablemente sea un buen punto de partida. Puede que quiera grabarlo como /etc/guiondip y editarlo para que se ajuste a su configuración.

#
# sample.dip    Programa de soporte de conexión para Dialup IP
#
#               Este fichero (debería mostrar) muestra el uso de DIP
#       Este fichero debería funcionar para los servidores dinámicos
#       de tipo Annex, si usted usa un servidor estático entonces utilice
#       el fichero sample.dip que viene en el paquete dip337-uri.tgz
#
#
# Versión:      @(#)sample.dip  1.40    20/07/93
#
# Autor:        Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
#

main:
# Lo siguiente es configurar el nombre y dirección del otro extremo
# La máquina a la que llamo se llama 'xs4all.hacktic.nl'
# (== 193.78.33.42)
get $remote xs4all.hacktic.nl
# Asignar 255.255.255.0 como máscara de red de sl0
netmask 255.255.255.0
# Asignar el puerto serie y velocidad deseados
port cua02
speed 38400

# Reiniciar el módem y la línea terminal
# ¡Esto parece darle problemas a algunas personas!
reset

# ¡Nota! Valores "estándar" predefinidos de "errlevel"
#  0 - OK
#  1 - CONNECT
#  2 - ERROR
#
# Puede cambiarlos buscando "addchat()" en *.c...

# Nos preparamos para llamar.
send ATQ0V1E1X4\r
wait OK 2
if $errlvl != 0 goto problema_con_modem
dial 555-1234567
if $errlvl != 1 goto problema_con_modem

# Estamos conectados. Registrarse en el sistema.
login:
sleep 2
wait ogin: 20
if $errlvl != 0 goto problema_al_registrarse
send MILOGIN\n
wait ord: 20
if $errlvl != 0 goto clave_erronea
send MIPASSWD\n
loggedin:

# Ahora estamos registrados.
wait SOMEPROMPT 30
if $errlvl != 0 goto error_de_prompt

# Ordenamos al servidor que entre en modo SLIP
send SLIP\n
wait SLIP 30
if $errlvl != 0 goto error_de_prompt

# Obtenemos nuestra dirección IP del servidor y la asignamos
#   Aquí asumiremos que tras ordenar al servidor SLIP que entre
#   en modo SLIP, nos imprime nuestra dirección IP.
get $local remote 30
if $errlvl != 0 goto prompt_error

# Configurar los parámetros operativos de SLIP
get $mtu 296
# Aseguramos que se ejecuta "route add -net default xs4all.hacktic.nl"
default

# ¡Decimos hola y arrancamos!
done:
print CONNECTED $local ---> $rmtip
mode CSLIP
goto salir

error_de_prompt:
print Se produjo un TIME-OUT esperando a que arrancara sliplogin
goto error

problema_al_registrarse:
print Hubo un problema esperando por el mensaje Login:...
goto error

clave_erronea:
print Hubo un problema esperando por el mensaje Password:...
goto error

problema_con_modem:
print Hubo un problema con el módem...
error:
print FALLÓ LA CONEXIÓN a $remote
quit

salir:
exit

El ejemplo anterior asume que estamos llamando a un servidor SLIP dinámico. Si está llamando a un servidor SLIP estático, entonces debería funcionarle el fichero sample.dip que viene con dip-337-uri.tgz.

Cuando se le da a dip la orden get $local, busca en el texto que viene del otro extremo una cadena que se parezca a una dirección IP, osea una cadena de números separados por caracteres «.». Esta modificación se hizo específicamente pensando en los servidores SLIP dinámicos, para que el proceso de leer la dirección IP pudiera ser automatizado.

El ejemplo anterior creará automáticamente una ruta por defecto a través del enlace SLIP. Si no es lo que deseaba, a lo mejor porque tiene una conexión Ethernet que debería ser la ruta por defecto, entonces elimine la orden default del guión. Después de que haya acabado de ejecutarse el guión, si ejecuta la orden ifconfig, verá que hay un dispositivo sl0. Este es el dispositivo SLIP. Si fuese necesario, podría modificar su configuración a mano, después de que la orden dip haya acabado, usando las órdenes ifconfig y route.

Por favor, observe que dip le permite elegir varios protocolos diferentes en la orden mode. El ejemplo más común es cSLIP que es SLIP con compresión. Por favor, tenga en cuenta que ambos extremos del enlace deben concordar, por lo que debe asegurarse de que elija lo que elija, sea la mismo que lo que tenga el servidor.

El ejemplo anterior es bastante robusto y debería copar con la mayoría de los errores. Para obtener más información, haga el favor de dirigirse a las páginas man de dip. Naturalmente podría, por ejemplo, codificar un guión para que haga cosas como llamar de nuevo al servidor si no consigue conectarse tras un periodo de tiempo determinado, o incluso hacer intentos con varios servidores si tiene acceso a más de uno.

Conexión SLIP permanente usando una línea dedicada y slattach

Si lo que tiene es un cable entre dos máquinas, o es tan afortunado como para tener una línea dedicada, o algún otro tipo de conexión en serie permanente entre su máquina y otra, entonces no necesita la complejidad de usar dip para establecer un enlace serie. slattach es una utilidad muy sencilla de usar, que le permite suficiente funcionalidad como para configurar una conexión.

Como la conexión será permanente, querrá añadir algunas órdenes al fichero rc pertinente. En esencia, todo lo que necesita hacer para tener una conexión permanente es asegurarse de que configura el dispositivo serie a la velocidad correcta y que lo pasa a modo SLIP. slattach permite hacer esto con una sola orden. Añade lo siguiente al fichero rc pertinente:

#
# Activar una conexión SLIP estática por línea dedicada
#
#  configuramos /dev/cua0 para 19.2kbps y cslip
/sbin/slattach -p cslip -s 19200 /dev/cua0 &
/sbin/ifconfig sl0 IPA.IPA.IPA.IPA pointopoint IPR.IPR.IPR.IPR up
#
# Fin de SLIP estático

Nota del traductor: A fecha de la traducción, la serie estable del núcleo era la 2.2. En la serie 2.2, los dispositivos /dev/cuaX han sido completamente eliminados, unificándolos a los /dev/ttySX.

Donde:

IPA.IPA.IPA.IPA

representa su dirección IP.

IPR.IPR.IPR.IPR

representa la dirección IP del extremo remoto.

slattach asigna el primer dispositivo SLIP sin asignar al dispositivo serie especificado. slattach comienza por sl0. Por lo tanto la primera orden slattach asocia el dispositivo SLIP sl0 al dispositivo serie especificado y sl1 la siguiente vez, etc.

slattach le permite configurar varios protocolos diferentes con el argumento -p. En su caso podrá usar tanto SLIP como cSLIP dependiendo de si quiere o no usar compresión. Nota: ambos extremos deben estar de acuerdo sobre si usar compresión o no.

7.6 Servidor SLIP.

Si tiene una máquina, quizá conectada a una red, a la que le gustaría que otra máquina pudiese llamar y proporcionar servicios de red, entonces necesita configurarla como servidor. Si quiere usar SLIP como protocolo de línea serie, entonces tiene tres opciones para configurar su máquina Linux como servidor SLIP. Yo preferiría usar la primera presentada, sliplogin, ya que parece la más sencilla de configurar y entender, pero presentaré un sumario de cada una, para que pueda tomar su propia decisión.

Servidor slip usando sliplogin.

sliplogin es un programa, que puede asignar a los usuarios de SLIP en lugar de un «shell» normal, que convierte una línea terminal en una línea SLIP. Esto le permite configurar una máquina Linux tanto como servidor de direcciones estáticas, obteniendo los usuarios la misma dirección cada vez que llaman, o como servidor de direcciones dinámicas, donde los usuarios obtienen una dirección que no tiene que ser necesariamente la misma que la última vez que llamaron.

El que llama se registrará igual que en un proceso estándar de login, introduciendo su nombre de usuario y contraseña, pero en lugar de presentarle un intérprete de órdenes normal tras el registro, se ejecuta sliplogin, el cual busca en su fichero de configuración (/etc/slip.hosts) una entrada con el nombre de usuario que corresponda a la persona que llamó. Si lo encuentra, entonces configura la línea como «clean» y de 8 bit, y hace una llamada ioctl para convertir la disciplina de la línea a SLIP. Cuando se completa este proceso, toma lugar la última parte de la configuración, en la cual sliplogin invoca un guión de intérprete de órdenes que configura la interfaz SLIP con la dirección ip y máscara de red relevantes, y asigna las rutas apropiadas. Este guión suele llamarse /etc/slip.login pero, de forma parecida a getty, si ciertos usuarios requieren una iniciación especial, entonces puede crear guiones de configuración llamados /etc/slip.login.nombreusuario que serán ejecutados específicamente para ellos en lugar del que hay por defecto.

También hay tres o cuatro ficheros que necesitará configurar para tener sliplogin en funcionamiento. Detallaré cómo y dónde obtener los programas y cómo se configura cada uno. Los ficheros son:

  • /etc/passwd, para las cuentas de los usuarios que llaman.
  • /etc/slip.hosts, para almacenar la información única a cada usuario que llama.
  • /etc/slip.login, que lleva la configuración del encaminamiento que necesite hacerse para el usuario.
  • /etc/slip.tty, que será necesario sólo si está configurando el servidor para asignar direcciones dinámicas y contiene una tabla de direcciones a asignar.
  • /etc/slip.logout, que contiene las órdenes necesarias para dejar las cosas a punto una vez el usuario cuelgue o cierre la conexión.

Dónde obtener sliplogin

Puede que ya tenga el paquete sliplogin instalado como parte de su distribución; si no es así entonces podrá obtenerlo de: ftp://metalab.unc.edu/pub/linux/system/Network/serial/sliplogin-2.1.1.tar.gz. El fichero tar contiene tanto las fuentes, como los programas ya compilados y una página man.

para asegurar que sólo son capaces de ejecutar sliplogin los usuarios autorizados, debería añadir una entrada al fichero /etc/group similar a la siguiente:

 ..
slip::13:radio,fred
 ..

Cuando instale el paquete sliplogin, el Makefile cambiará el grupo al que pertenece el programa sliplogin por slip, y esto significa que sólo los usuarios que pertenezcan a ese grupo serán capaces de ejecutarlo. El ejemplo anterior autorizará ejecutar sliplogin sólo a los usuarios radio y fred.

Para instalar los ejecutables en el directorio /sbin y la página de man en la sección 8, haga lo siguiente:

# cd /usr/src
# gzip -dc .../sliplogin-2.1.1.tar.gz | tar xvf -
# cd sliplogin-2.1.1
# <..edite el Makefile si no usa shadow password..>
# make install

Si quiere recompilar los ejecutables tras la instalación, añada un make clean antes de make install. Si quiere instalar los ejecutables en cualquier otro lado, necesitará editar la regla install en el Makefile.

Por favor, lea los ficheros README que vienen con el paquete si quiere obtener más información.

Configuración de /etc/passwd para máquinas que usan Slip.

Lo normal es que cree algunos login especiales en el fichero /etc/passwd para la gente que llama con Slip. Una convención comúnmente aceptada es usar el nombre de la máquina que llaman prefijándole una letra «S» mayúscula. Por tanto, por ejemplo, si la máquina que llama se denomina radio, entonces podrías crear una entrada en /etc/passwd que se pareciese a:

Sradio:FvKurok73:1427:1:radio SLIP login:/tmp:/sbin/sliplogin

Realmente no importa cómo se llame la cuenta, siempre y cuando tenga algún significado para usted.

Nota: el que llama no necesita ningún directorio personal, ya que no se le presentará ningún intérprete de órdenes, por tanto /tmp es una buena elección. Observe también que se usa sliplogin en lugar de un intérprete de órdenes normal.

Configuración de /etc/slip.hosts

El fichero /etc/slip.hosts es el fichero en el que sliplogin busca las entradas que se correspondan al nombre de login que de las que obtiene los detalles de configuración para esa persona. Es aquí donde se especifica la dirección ip y la máscara de red que se le asignará al que llama y que serán configuradas para su uso. Las entradas para dos máquinas, una con configuración estática para radio y otra, con configuración dinámica, para la máquina albert, deberían parecerse a lo siguiente:

#
Sradio   44.136.8.99   44.136.8.100  255.255.255.0  normal      -1
Salbert  44.136.8.99   DYNAMIC       255.255.255.0  compressed  60
#

Las entradas del fichero /etc/slip.hosts son

  1. el nombre de login del que llama.
  2. la dirección ip de la máquina servidor, osea esta máquina.
  3. la dirección IP que se asignará al que llama. Si este campo se rellena con DYNAMIC entonces se asignará una dirección ip basada en la información contenida en el fichero /etc/slip.tty del que se habló antes. Nota: deberá usar al menos la versión 1.3 de sliplogin para que esto funcione.
  4. la máscara de red asignada a la máquina que llama en notación decimal punteada, por ejemplo 255.255.255.0 para una máscara de red para una clase C.
  5. las opciones del modo slip, que le permiten activar o desactivar la compresión y otras características de slip. Los valores permitidos aquí son normal y compressed.
  6. un parámetro de timeout que especifica cuánto tiempo puede estar ociosa la línea (sin recibir datagramas) antes de que se desconecte la línea. Un valor negativo desactivará esta característica.
  7. argumentos opcionales.

Nota: Para los campos 2 y 3 puede usar tanto el nombre de la máquina como su dirección IP en notación decimal. Si usted usa nombres entonces tendrán que ser resueltos, esto es, su máquina deberá ser capaz de localizar la dirección ip de esos nombres o en caso contrario el guión fallará cuando sea ejecutado. Puede probarlo intentando hacer telnet hacia esos nombres, y si obtiene el mensaje Trying nnn.nnn.nnn... entonces es que su máquina ha sido capaz de encontrar una dirección ip para ese nombre. Si obtiene el mensaje Unknown host, entonces no lo consiguió. En este caso, use una dirección ip en notación decimal o ponga a punto la configuración de su resolutor de nombres. (Ver sección Resolución de Nombres).

Los modos slip más comunes son:

normal

para habilitar el SLIP normal sin compresión.

compressed

para habilitar la compresión de cabeceras de van Jacobsen (cSLIP)

Por supuesto, son mutuamente exclusivos. Puede usar uno o el otro, pero no ambos. Para obtener más información sobre las otras opciones disponibles, ve a las páginas de man.

Configuración del fichero /etc/slip.login.

Después de que sliplogin haya examinado el /etc/slip.hosts y encontrado una entrada que concuerde, intentará ejecutar el fichero /etc/slip.login para configurar la interfaz SLIP con su dirección ip y su máscara.

El fichero de ejemplo /etc/slip.login proporcionado con el paquete sliplogin se parece a esto:

#!/bin/sh -
#
#       @(#)slip.login  5.1 (Berkeley) 7/1/90
#
# fichero de login genérico para una línea SLIP. sliplogin
# lo invoca con los parámetros:
#     $1       $2       $3    $4, $5, $6 ...
# unidadSLIP veloctty   pid   los argumentos de la entrada en slip.host
#
/sbin/ifconfig $1 $5 pointopoint $6 mtu 1500 -trailers up
/sbin/route add $6
arp -s $6 <hw_addr> pub
exit 0
#

Podrá comprobar que este guión se limita a usar las órdenes ifconfig y route para configurar el dispositivo SLIP con su dirección ip, dirección ip remota y máscara de red y crea una ruta hasta la dirección remota a través del dispositivo SLIP. Exactamente lo mismo que haría si estuviera usando la orden slattach.

Advierta también el uso de Proxy ARP para asegurar que otras máquinas en la misma Ethernet que la máquina servidora sabrán cómo llegar a la máquina que llama. El campo <hw_addr> (dirección hardware) debería ser la dirección hardware de la tarjeta Ethernet de la máquina. Si su máquina servidora no está en una red Ethernet, entonces puede eliminar completamente esa línea.

Configuración del fichero /etc/slip.logout.

Cuando la llamada se corta, querrá asegurarse de que se restaura el estado normal del dispositivo serie para que otras personas sean capaces más adelante de registrarse correctamente. Esto se lleva a cabo mediante el uso del fichero /etc/slip.logout. Es de formato bastante sencillo y se le llama con los mismos argumentos que al fichero /etc/slip.login.

#!/bin/sh -
#
#               slip.logout
#
/sbin/ifconfig $1 down
arp -d $6
exit 0
#

Todo lo que hace es desactivar (down) la interfaz, lo que borrará la ruta que se creó anteriormente. También usa la orden arp para borrar cualquier proxy que se estableciese. De nuevo, no necesita la orden arp en el guión si su máquina servidora no tiene un puerto ethernet.

Configuración del fichero /etc/slip.tty.

Si está usando asignación dinámica de direcciones ip (tiene configurada cualquier máquina con la palabra clave DYNAMIC en el fichero /etc/slip.hosts, entonces deberá configurar el fichero etc/slip.tty para que tenga una lista de las direcciones que se asignarán a qué puerto. Sólo necesita este fichero si desea que su servidor asigne de manera dinámica las direcciones a los usuarios.

El fichero es una tabla que lista los dispositivos tty que darán soporte a las conexiones SLIP y las direcciones ip que deberían asignarse a los usuarios que llaman a ese puerto.

Su formato es como sigue:

# slip.tty    tty -> correspondencias IP para SLIP dinámico
# formato: /dev/tty?? xxx.xxx.xxx.xxx
#
/dev/ttyS0      192.168.0.100
/dev/ttyS1      192.168.0.101
#

Lo que dice esta tabla es que a la gente que llame al puerto /dev/ttyS0 y que tengan la palabra DYNAMIC en su campo de dirección remota en el fichero /etc/slip.hosts les será asignada una dirección de 192.168.0.100.

De esta manera sólo necesita asignar una dirección por puerto para todos los usuarios que no requieran una dirección dedicada para ellos. Esto le ayuda a mantener bajo mínimos los números de dirección para evitar su escasez.

Servidor Slip usando dip.

Déjeme empezar diciendo que parte de la información que sigue viene de las páginas de manual de dip, donde se documenta brevemente la manera de usar Linux como servidor SLIP. por favor, preste atención, puesto que lo siguiente está basado en el paquete dip337o-uri.tgz y probablemente no ses aplicable a otrs versiones de dip.

dip tiene un modo de operación de entrada, en el cual asigna automáticamente una entrada para el usuario que lo invoque y configura la línea serie como enlace SLIP de acuerdo con la información que encuentre en el fichero /etc/dipshosts. Este modo de operación de entrada se activa invocando a dip como diplogin. Es así por tanto la manera de usar dip como servidor SLIP, creando cuentas especiales donde se usa diplogin como login shell.

Lo primero que necesita hacer es un enlace simbólico como sigue:

# ln -sf /usr/sbin/dip /usr/sbin/diplogin

Después necesitará añadir entradas tanto al fichero /etc/passwd como al /etc/diphosts. Las entradas que necesita hacer tienen el formato que sigue:

Para configurar Linux como servidor SLIP con dip, se necesita crear algunas cuentas SLIP especiales para los usuarios, en las que se usa dip (en modo entrada) como login shell. Se sugiere la convención de comenzar los nombres de las cuentas SLIP con una S mayúscula, como por ejemplo Sfredm.

Una entrada en /etc/passwd para un usuario SLIP se parece a:

Sfredm:ij/SMxiTlGVCo:1004:10:Fred:/tmp:/usr/sbin/diplogin
^^         ^^        ^^  ^^   ^^   ^^   ^^
|          |         |   |    |    |    \__ diplogin como login shell
|          |         |   |    |    \_______ Directorio `home'
|          |         |   |    \____________ Nombre completo del usuario
|          |         |   \_________________ ID de grupo del usuario
|          |         \_____________________ ID del usuario
|          \_______________________________ Contraseña cifrada
\__________________________________________ Nombre de Login del Usuario SLIP

Después de que el usuario se registre, el programa login, si encuentra y autentica al usuario, ejecutará la orden diplogin. dip, cuando es invocado como diplogin, sabe que debe asumir automáticamente que va a ser usado como intérprete de órdenes de login. Cuando comienza como diplogin, la primera cosa que hace es usar la función getuid() para tomar el userid de quien fuera que lo invocó. Entonces busca en el fichero /etc/diphosts la primera entrada que se corresponda bien con el userid, bien con el dispositivo tty por el que entró la llamada y se configura apropiadamente. Por razones de sentido común, para que se pueda dar a un usuario una entrada en el fichero diphosts, o bien para que se le dé la configuración por defecto, es posible montar el servidor de tal manera que se pueda tener una mezcla de usuarios a los que se asigne la dirección de forma estática o dinámica.

dip añadirá automáticamente una entrada Proxy-ARP si se le invoca en modo entrada, por lo que no tendrá que preocuparse de hacerlo manualmente.

Configuración del fichero /etc/diphosts

/etc/diphosts lo usa dip para buscar configuraciones ya establecidas para máquinas remotas. Estas máquinas remotas pueden ser usuarios que llaman a la máquina Linux, o pueden ser máquinas a las que usted llamas desde su máquina.

El formato general para /etc/diphosts es como sigue:

 ..
Suwalt::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:CSLIP,1006
ttyS1::145.71.34.3:145.71.34.2:255.255.255.0:Dynamic ttyS1:CSLIP,296
 ..

Los campos son:

  1. nombre de login: el que devuelve getpwuid(getuid()) o el nombre de la tty.
  2. sin uso: para compatibilidad con passwd
  3. Dirección Remota: dirección IP de la máquina que llama, puede ser tanto la numérica como el nombre.
  4. Dirección Local: dirección IP de esta máquina, en número o por nombre.
  5. Máscara de red: en notación decimal puntuada.
  6. Campo de comentario: ponga aquí lo que quiera.
  7. protocolo: Slip, cSLIP, etc.
  8. MTU: número decimal.

Un ejemplo de entrada en /etc/net/diphosts para un usuario SLIP remoto podría ser:

Sfredm::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:SLIP,296

lo que especifica un enlace SLIP con dirección remota 145.71.34.1 y MTU de 296, o:

Sfredm::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:CSLIP,1006

que especifica un enlace capaz de usar cSLIP con dirección remota 145.71.34.1 y MTU de 1006.

Por tanto, todos los usuarios que desee que tengan asignado un acceso de llamada con IP estática deberían tener una entrada en /etc/diphosts. Si quiere que los usuarios que llaman a un puerto en particular y, que los detalles sean asignados dinámicamente, deberá tener entonces una entrada para el dispositivo tty y no una basada en el usuario. Debería configurar al menos una entrada para cada dispositivo tty que usen los usuarios para asegurar que hay disponible para ellos una configuración adecuada independientemente al módem al que llamen.

Cuando un usuario se registra recibirá las preguntas normales sobre su cuenta y contraseña en las que debería introducir su userid o contraseña de SLIP-login. Si se verifican, entonces el usuario no verá mensajes especiales y sólo tendrá que cambiar el modo SLIP en su extremo. El usuario debería ser capaz de conectar y quedar configurado con los parámetros relevantes del fichero diphosts.

Servidor SLIP usando el paquete dSLIP.

Matt Dillon, dillon@apollo.west.oic.com ha escrito un paquete que no sólo hace llamadas SLIP entrantes sino también llamadas salientes. El paquete de Matt es una combinación de pequeños programas y guiones que coordinan las conexiones por usted. Necesitará tener instalado tcsh ya que al menos uno de los guiones lo necesita. Matt proporciona una copia ejecutable de la utilidad expect ya que la necesita otro de los guiones. Además necesitará tener algo de experiencia con expect para hacer que este paquete funcione a su gusto, pero no deje que eso le desanime.

Matt ha escrito unas instrucciones de instalación muy buenas en el fichero README, por lo que no pienso repetirlas.

Puede obtener el paquete dSLIP de su sitio de origen:

ftp://apollo.west.oic.com/pub/linux/dillon_src/dSLIP203.tgz

o desde:

ftp://metalab.unc.edu/pub/Linux/system/Network/serial/dSLIP203.tgz

Léase el fichero README y cree las entradas en /etc/passwd y /etc/group antes de hacer make install.


Página siguiente Página anterior Índice general