Conexión de red local por puerto paralelo, PLIP, y puerto serie, SLIP


Introducción

El cable paralelo con el que me ha funcionado esto es un PLIP tipo 0 (4 bits, conocido también en Windows como "LapLink"). Aún no he logrado que funcione con el PLIP tipo 1 (8 bits).

En cuanto al cable serie, es uno corriente de los llamados "módem nulo".

En este ejemplo, vamos a llamar "desktop" a la máquina que está conectada al mismo tiempo a una red y al cable PLIP ó SLIP, y "notebook" a la que sólo está conectada a "desktop", mediante el cable.

Tienen las siguientes características:

Estos nombres no tienen por qué coincidir con los de los ordenadores respectivos: en realidad, son los nombres que les daremos a la interfase PLIP/SLIP (u otra conexión de red) desde cada lado, y conviene que sean distintos del nombre de cada ordenador para evitar conflictos.

En mi caso, ninguno de los nombres coincide, y así funciona bien.

Necesitamos recompilar el núcleo.

Opciones necesarias para núcleos 2.0.x:


        Loadable module support ---->
           [*] Enable loadable module support
           [*] Kernel daemon support (e.g. autoload of modules)

        General setup:
           <M> Parallel port support
           <M>    PC-style hardware
           [ ]    Support foreign hardware

        Networking options ---->
           [*] Network firewalls
           [*] TCP/IP networking
           [*] IP: forwarding/gatewaying

           [*] IP: firewalling
           [*] IP: masquerading
           [*] IP: ICMP masquerading
           [*] IP: always defragment

        Network device support ---->
           [*] Network device support
              <m> PLIP (parallel port) support
              <m> PPP (point-to-point) support
              <m> SLIP (serial line) support
              [*]  CSLIP compressed headers
        - Si quieres poner soporte para impresora, debe estar como módulo:
        Character devices ---->
           <M> Parallel printer support

Opciones para núcleos 2.2.x:


        Loadable module support ---->
           [*] Enable loadable module support
           [*] Kernel module loader

        General setup:
           <M> Parallel port support
           <M>    PC-style hardware
           [ ]    Support foreign hardware

        Networking options ---->
           [*] Network firewalls
           [*] TCP/IP networking
           no existe ---- [*] IP: forwarding/gatewaying
                Se activa con: echo "1" > /proc/sys/net/ipv4/ip_forward

           [*] Network firewalls
           [*] IP: firewalling
           [*] IP: alway defragment (required for masquerading) (NEW)
           [*] IP: masqueraing (NEW)
           [*] IP: ICMP masquerading (NEW)
           [*] IP: masquerading special modules support (NEW)

        Network device support ---->
           [*] Network device support
              <m> PLIP (parallel port) support
              <m> PPP (point-to-point) support
              <m> SLIP (serial line) support
              [*]  CSLIP compressed headers
        - Si quieres poner soporte para impresora, debe estar como módulo:
        Character devices ---->
           <M> Parallel printer support

Ahora creamos el paquete del núcleo:

Shell: root,

debian/rules kernel_image

Y lo instalamos con dpkg -i.

Ahora hay que configurar los módulos. Aunque el archivo para ésto es "/etc/conf.modules", no vamos a modificarlo directamente. Debian proporcina unas herramientas, las modutils, que permiten que la configuración resulte más clara y ordenada. De esta forma, añadiremos la siguientes líneas a "/etc/modutils/aliases":

Editor: root,

alias plip0 plip
alias plip1 plip
alias slip0 slip
alias slip1 slip

A "/etc/modutils/modconf":

Editor: root,

options parport_pc io=0x378 irq=7

Y construiremos el archivo "/etc/conf.modules" con:

Shell: root,

update-modules

Luego abrimos "/etc/modules" para eliminar las entradas repetidas que pudiera haber. Cada módulo sólo necesita aparecer una vez.

A partir de aquí, el manejo es igual para ambos módulos. Los ejemplos se muestran con plip.

Cargamos el módulo, con:

Shell: root,

insmod plip

y comprobamos que se cargado con:

Shell: root,

lsmod

Deberá aparecer una línea que menciona el módulo plip.

Para ver en qué puerto exacto utiliza plip, buscamos la línea correspondiente en syslog con:

Shell: root,

grep -i "plip" /var/log/syslog

En mi caso, la máquina "desktop" usa el plip1, puerto 0x378, IRQ 7, y la máquina "notebook", el plip0, puerto 0x378, IRQ7.

Elegimos direcciones IP para cada uno de los ordenadores. Conviene usar unas que pertenezcan a los márgenes dedicados a redes privadas:

10.0.0.0 - 10.255.255.255

172.16.0.0 - 172.31.255.255

192.168.0.0 - 192.168.255.255

Por ejemplo, podemos usar 192.168.168.1 y 192.168.168.2.

Las añadimos en el archivo "/etc/hosts" en las dos máquinas:

Editor: root,

192.168.0.1      desktop
192.168.0.2      notebook

Activamos la interfase PLIP.

En "desktop":

Shell: root@desktop,

ifconfig plip1 desktop pointopoint notebook up

En "notebook":

Shell: root@notebook,

ifconfig plip0 notebook pointopoint desktop up

Cuidado, es "pointopoint", no "pointtopoint". Esto me causó un montón de problemas al principio, hasta que me dí cuenta 3 horas más tarde.

Añadimos la ruta correspondiente. Si no hemos configurado el encaminamiento de red anteriormente, no tendremos las variables NETWORK ni NETMASK. Miramos si las tenemos con:

Shell: root@notebook,

echo $NETWORK
echo $NETMASK

Si no están ya definidas, podemos usar éstas de momento:

Shell: root@notebook,

export NETWORK="192.168.0.0"
export NETMASK="255.255.255.0"

En "desktop":

Shell: root@desktop,

/sbin/route add -net ${NETWORK} netmask ${NETMASK} dev plip1

En "notebook":

Shell: root@notebook,

/sbin/route add -net ${NETWORK} netmask ${NETMASK} dev plip0
route add default gw desktop

Probamos desde cada máquina, con ping a la otra. Desde "desktop":

Shell: root@desktop,

ping notebook

Y desde "notebook":

Shell: root@notebook,

ping desktop



Configuración wwwoffle en 'desktop' para acceder desde 'notebook'.

Sección "LocalHost":

Editor: root@desktop,

LocalHost
{
 desktop
 192.168.0.1
 localhost
 127.0.0.1
}

Sección "AllowedConnect":

Editor: root@desktop,

AllowedConnect
{
 192.168
}

Para activar los cambios:

Shell: root@desktop,

wwwoffle -config

Por ejemplo, para acceder desde netscape al proxy en "desktop", pondremos como proxy http y ftp "desktop", con el puerto "8080".


Configuración de INN para acceder desde 'notebook'

Modificamos el archivo "/etc/news/nnrp.access". Añadimos esta línea al final:

Editor: news@desktop,

192.168.*:Read Post:::*

Y ya está.



Configuración de INN para sincronizar 'notebook' y 'desktop'

Primero, necesitamos que se comuniquen, y para eso hacemos lo del punto aterior.

Ahora, configuramos newsx e INN de forma que "notebook" obtenga sus news de "desktop", y le envíe los mensajes que haya pendientes en el servidor local.

Añadimos la siguiente línea a "/etc/news/newsfeeds":

Editor: news@notebook,

desktop/news.desktop:*,!junk,!control,!local.*:Tf,Wf:

El nombre "news.desktop" debe corresponderse con el que el servidor INN de desktop usa para identificarse en el campo path de los mensajes.

Creamos el archivo "/var/spool/news/in.hosts/desktop", y ponemos en él todos los grupos que queramos mantener sincronizados, seguidos cada uno por un "0", y finalizado todo con ":stop":

Editor: news@notebook,

es.comp.os.linux.instalacion 0
es.comp.os.linux.misc 0
es.comp.os.linux.redes 0
es.comp.os.linux.programacion 0
:stop

Creamos un archivo vacío para salida de mensajes:

Shell: news@notebook,

touch /var/spool/news/out.going/desktop

Sólo nos falta el script que realice la sincronización. Lo pondremos, por ejemplo, en "/var/spool/news/syncnews":

Editor: news@notebook,

#!/bin/bash
BOBINA=desktop
SERVIDOR=desktop
/usr/lib/news/bin/newsx --inn -dd -e stop --window 10 --rnews $BOBINA $SERVIDOR

Le ponemos los permisos:

Shell: news@notebook,

chmod 750 /var/spool/news/syncnews

Y decimos a INN que relea los archivos de configuración:

Shell: news@notebook,

ctlinnd reload "" ""

Listo. Sólo tenemos que entrar como usuario news, y ejecutar ./syncnews desde su directorio.


Configuración de ip-forwarding

En "desktop", si usamos un Kernel 2.2.x:

Shell: root@desktop,

echo "1" > /proc/sys/net/ipv4/ip_forward

y luego, tanto en kernels 2.0.x como 2.2.x:

Shell: root@desktop,

ipfwadm -F -p deny
ipfwadm -F -a m -S 192.168.0.0/24 -D 0.0.0.0/0



Activación de PLIP en el arranque

Vamos a hacer que el ordenador que actúa como servidor ("desktop") tenga activada la interfase PLIP desde el arranque.

Creamos el archivo "/etc/rc.boot/plip":

Editor: root,

#!/bin/bash
insmod plip
# Activamos la interfase plip0 con la dirección 192.168.0.2
ifconfig plip0 notebook pointopoint desktop up
ifconfig
export NETWORK="192.168.0.0"
export NETMASK="255.255.255.0"
route add -net ${NETWORK} netmask ${NETMASK} dev plip0
echo "1" > /proc/sys/net/ipv4/ip_forward
ipfwadm -F -p deny
ipfwadm -F -a m -S 192.168.0.0/24 -D 0.0.0.0/0
/root/setplip_server
/root/setipmasq

Y le damos los permisos adecuados:

Shell: root,

chmod 755 /etc/rc.boot/plip