7.4. Usando dip

Lo visto anteriormente es simple. Sin embargo, se pueden automatizar estas tareas. Es mucho más práctico tener solamente un orden que realice los pasos necesarios para activar la línea serie, que el módem llame al proveedor de Internet, comenzar la sesión, activar la disciplina de línea SLIP, y por último, configurar la interfaz de red. Para todo esto esta la orden dip.

dip significa Dialup IP (enlace IP telefónico). Fue escrito por Fred van Kempen y ha sufrido bastantes modificaciones de mucha gente. Es actualmente utilizado por todo el mundo. La versión dip337p-uri, se encuentra en casi todas las distribuciones de GNU/Linux actuales, o también a través de FTP en metalab.unc.edu.

dip provee un intérprete para un lenguaje de guiones simple que puede manejar el módem , convertir la línea a modo SLIP y configurar las interfaces. Este lenguaje de guiones es poderoso a la hora de manejar diferentes configuraciones.

Para poder configurar la interfaz SLIP, dip requiere privilegios de superusuario. Puede hacerse cambiando al programa dip el bit setuid como root para que todos los usuarios puedan conectarse a cualquier servidor SLIP sin tener privilegios de superusuario. Esto es muy peligroso, ya que una configuración incorrecta del encaminamiento de dip puede estropear el encaminamiento en su red. Aun peor, esto dará a los usuarios la posibilidad de conectarse a cualquier servidor SLIP y lanzar desde allí, peligrosos ataques a su red. Si desea que los usuarios puedan activar conexiones SLIP, escriba pequeños programas empaquetados por cada perspectiva de conexión a los diferentes servidores SLIP y que esos pequeños programas invoquen a dip con guiones (scripts) específicos para establecer las conexiones. Bien escritos, estos programas pueden ser fácilmente habilitados con el bit setuid de superusuario (root).[1] Una alternativa un poco más flexible, es darle a los usuarios, acceso verdadero a dip como superusuario, utilizando alguna herramienta como por ejemplo sudo.

7.4.1. Un guión de ejemplo

Asumiendo que el servidor al cual nos queremos conectar vía SLIP se llama cowslip, y que se ha escrito un guión para que dip lo interprete llamado cowslip.dip, el cual hará la conexión. Al programa dip, hay que pasarle como argumento, el nombre del guión:
    # dip cowslip.dip
    DIP: Dialup IP Protocol Driver version 3.3.7 (12/13/93)
    Written by Fred N. van Kempen, MicroWalt Corporation.
    connected to cowslip.moo.com with addr 192.168.5.74
    #

El codigo del guión es mostrado en el Ejemplo 7-1.

Una vez conectado a cowslip y activo el SLIP, dip pasará a ejecutarse en segundo plano. Ahora puede empezar a trabajar con sus los programas habituales de red a través del enlace SLIP. Para terminar la conexión, simplemente invoque a dip con el parámetro –k. Esto envía la señal de cortar (hangup) a dip, junto con el identificador de proceso que dip escribió en el fichero /etc/dip.pid al comenzar:
    # dip -k

En el lenguaje de guiones que dip interpreta, las palabras clave precedidas con el signo de dólar significan nombre de variables. dip tiene un conjunto de variables que están listadas a continuación. $remote y $local, por ejemplo, contienen los nombres de los computadores remoto y local involucrados en la conexión SLIP.

Las dos primeras declaraciones en el ejemplo, son órdenes get, que es la forma en que dip declara una variable. Aquí, los nombres de las computadoras local y remota son vlager y cowslip, respectivamente.

las cinco declaraciones siguientes preparan la terminal de línea y el módem . la orden reset envía la cadena de reinicio al módem. La siguiente sentencia limpia el búffer de salida del módem , para conseguir que el diálogo de registro (login) en las siguientes líneas trabaje correctamente. Este dialogo es extremadamente simple: simplemente marca 41988, el número telefónico de cowslip, y ae regiatra en la cuenta Svlager usando la contraseña knockknock. La orden wait hace que dip espere una cadena dada como primer argumento; el número dado como segundo argumento es el tiempo (en segundos) que se debe esperar por esa cadena. la orden if ,en el proceso de entrada, revisa que no se produzcan errores.

Las órdenes finales, tras un correcto registro, son default, que hace que el enlace SLIP sea la ruta predeterminada a todos los servidores, y mode, que activa el modo SLIP en la línea y configura la interfaz y la tabla de rutas.

7.4.2. Referencia de dip

En esta sección, se hará referencia a las órdenes de dip más usadas. usted puede obtener un vistazo de todos los órdenes reconocidos invocando a dip en modo prueba e introduciendo la orden help. Para conocer más sobre la sintaxis de una orden, se debe teclear sin argumentos. Recuerde que esto no funcionará con órdenes que no aceptan argumentos. El siguiente ejemplo ilustra el funcionamiento de la orden help:

    # dip -t
    DIP: Dialup IP Protocol Driver version 3.3.7p-uri (25 Dec 96)
    Written by Fred N. van Kempen, MicroWalt Corporation.
    Debian version 3.3.7p-2 (debian).
    
    DIP> help
    DIP knows about the following commands:
    
    	beep         bootp        break        chatkey      config       
    	databits     dec          default      dial         echo         
    	flush        get          goto         help         if           
    	inc          init         mode         modem        netmask      
    	onexit       parity       password     proxyarp     print        
    	psend        port         quit         reset        securidfixed 
    	securid      send         shell        skey         sleep        
    	speed        stopbits     term         timeout      wait         
    
    DIP> echo
    Usage: echo on|off
    DIP>

En los párrafos siguientes, los ejemplos que muestran el cursor DIP > indican como teclear un orden en modo prueba y cual será su respuesta. Los ejemplos mostrados sin el cursor, deben tomarse como trozos de guiones.

Notas

[1]

diplogin debe activarse con el bit setuid como root. Examine la sección al final de este capítulo.