conexiones de Packet

12. Configurando Linux para aceptar conexiones de Packet.

Linux es un Sistema Operativo poderosísimo y ofrece una gran dosis de flexibilidad para su configuración. Esta flexibilidad trae aparejado el costo en la configuración para que hagas lo que quieras. Es necesario que se te hagas una serie de preguntas antes de configurar Linux para que acepte conexiones AX.25, NetRom y Rose. La más importante es: “Que quiero que vean mis usuarios cuando se conecten?”. La gente está produciendo una cantidad de aplicaciones que pueden usarse para suministrar servicios a los usuarios; por ejemplo el sencillo programa pms que incluyen las utilidades AX.25, otro más complejo es el programa para nodo también incluido en las utilidades AX.25. A lo mejor tu quieres darles a tus usuarios la oportunidad de logeo para usar una cuenta en tu máquina, o has escrito un programa de base de datos o un juego que quieres ofrecer a tus usuarios. Elijas lo que elijas, debes decirle al AX.25 tu elección para que este sepa que software correr cuando acepte una conección entrante de AX.25.

El programa ax25d es similar al inetd usado normalmente para aceptar conexiones TCP/IP en máquinas unix. El escucha las conexiones entrantes, y cuando detecta una, va y verifica en el archivo de configuración para determinar a que programa conectar dicha conección entrante. Ya que ésta es la herramienta estándar para aceptar conexiones AX.25, NetRom y Rose, describiré como configurarla.

12.1 Creando el fichero /etc/ax25/ax25d.conf

Este es el fichero de configuración del demonio de AX.25 llamado ax25d, que maneja conexiones entrantes de AX.25, NetRom y Rose.

Este archivo parece complicado a primera vista, pero rápidamente descubrirás que es muy sencillo y práctico, con una pequeña trampa para ti que debes tener muy en cuenta.

El formato general de ax25d.conf es el siguiente:

    # This is a comment and is ignored by the ax25d program.
[port_name] || <port_name> || {port_name}
<peer1>    window T1 T2 T3 idle N2 <mode> <uid> <cmd> <cmd-name> <arguments>
<peer2>    window T1 T2 T3 idle N2 <mode> <uid> <cmd> <cmd-name> <arguments>
parameters window T1 T2 T3 idle N2 <mode>
<peer3>    window T1 T2 T3 idle N2 <mode> <uid> <cmd> <cmd-name> <arguments>
   ...
default    window T1 T2 T3 idle N2 <mode> <uid> <cmd> <cmd-name> <arguments>

Donde:

al principio, marca una línea de comentarios ignorada por ax25d.

<port_name>
es el nombre del puerto AX.25, NetRom o Rose especificado en los ficheros /etc/ax25/axports, /etc/ax25/nrports y /etc/ax25/rsports. El nombre es encerrado entre [] si es un puerto AX.25, entre <> si es NetRom y {} si es Rose. Hay una forma alternativa para este campo, y es preceder el nombre del puerto con “indicativo/ssid” para indicar que aceptará llamadas a ese “indicativo/ssid” a través de esa interface. El ejemplo del final nos sacará de dudas.

<peer>
es el distintivo de este lado del nodo a la que se aplica en esta configuración. Si aquí no especifica SSID, cualquier SSID coincidirá.

window
el parámetro Window de AX.25 o el MAXFRAME para esta configuración.

T1
Timer de retransmisión de paquetes en unidades de 1/2 segundo.

T2
Es el tiempo que el software AX.25 espera por otro paquete entrante antes de preparar una respuesta. Unidades: 1 segundo.

T3
Tiempo máximo de inactividad antes de que el soft AX.25 desconecte esta sección. Unidades: 1 segundo.

idle
Timer de ocio o idle. Unidades: 1 segundo.

N2
Numero de retransmisiones consecutivas que ocurrirán antes de cerrar la conección.

<mode>
provee el mecanismo para determinar cierto tipo de permisos. Los modos son habilitados o deshabilitados con una combinación de caracteres, cada uno representando un permiso. Estos caracteres pueden ser tanto en mayúsculas como en minúsculas y deben estar en un mismo bloque sin espacios.

U/u
UTMP – actualmente no soportado.

V/v
Indicativo válido – actualmente no soportado.

Q/q
Quiet (quieto) – no se logean las conexiones.

N/n
Chequea vecinos NetRom – actualmente no soportado.

D/d
Deshabilita digipeaters – conexiones directas exclusivamente.

L/l
Bloqueo – no permite conexiones.

*/0
marcador – ubica un marcador, ningún modo

<uid>
Es el userid que usarás con el programa a ejecutar para soportar la conección.

<cmd>
Camino entero del comando a ejecutar sin argumentos.

<cmd-name>
nombre en texto del programa ejecutado que aparecerá en un ps. Normalmente igual a <cmd> sin los directorios.

<arguments>
argumentos de línea que serán pasados al comando <cmd> cuando se ejecute. Tu pasas información valiosa a través de estos argumentos usando los tokens siguientes:

        %d Nombre del puerto donde se recibió la conexión.

        %U Distintivo AX.25 sin ssid de la estación conectada, en mayúsc.

        %u Distintivo AX.25 sin ssid de la estación conectada, en minúsc.

        %S Distintivo AX.25 con ssid de la estación conectada, en mayúsc.

        %s Distintivo AX.25 con ssid de la estación conectada, en minúsc.

        %P Distintivo AX.25 sin ssid del nodo remoto desde donde viene la
        conección, en mayúsc.
                
        %p Distintivo AX.25 sin ssid del nodo remoto desde donde viene la
        conección, en minúsc.

        %R Distintivo AX.25 con ssid del nodo remoto desde donde viene la
        conección, en mayúsc.

        %r Distintivo AX.25 con ssid del nodo remoto desde donde viene la
        conección, en minúsc.

Se necesita una sección como la de arriba para cada interface AX.25, NetRom o Rose que quieras que acepte conexiones entrantes AX.25, NetRom o Rose.

Hay dos líneas especiales en el párrafo, una comienza con “parameters” y la otra con “default”. Estas líneas son diferentes y cumplen funciones especiales.

La línea “default” actúa, como es obvio, como acepta_todo, de manera que cualquier conexión sobre la interface <interface_call> que no tiene una regla específica, coincide con la regla “default”. Si no estuviera una regla por omisión, cualquier conexión que no cumpliera una regla específica sería desconectada inmediatamente sin aviso.

La línea “parameters” es un poco más sutil, y aquí está la trampa mencionada anteriormente. En cualquier campo para cualquier definición para un par determinado puedes usar “*” para decir ´use los valores por omisión´. La línea “parameters” es la que pone estos valores por omisión. El mismo kernel tiene algunos valores por omisión que se usarán si no pones ninguna entrada “parameters”. La trampa está en que estos parámetros por omisión solo se aplican a las reglas debajo de la línea “parameters”, y no a las superiores. Puedes tener más de una línea “parameters” para cada definición de interface, de manera que puede crear grupos de configuraciones por omisión. Es importante destacar que la regla “parameters” no te permite poner los campos “uid” y “command”.

12.2 Un simple ejemplo de un archivo ax25d.conf

# ax25d.conf for VK2KTJ - 02/03/97
# This configuration uses the AX.25 port defined earlier.

# <peer> Win T1  T2  T3  idl N2 <mode> <uid> <exec> <argv[0]>[<args....>]

[VK2KTJ-0 via radio]
parameters 1    10  *  *  *   *   *
VK2XLZ     *     *  *  *  *   *   *    root  /usr/sbin/axspawn axspawn %u +
VK2DAY     *     *  *  *  *   *   *    root  /usr/sbin/axspawn axspawn %u +
NOCALL     *     *  *  *  *   *   L
default    1    10  5 100 180 5   *    root  /usr/sbin/pms pms -a -o vk2ktj

[VK2KTJ-1 via radio]
default    *     *    *   *   *   0    root /usr/sbin/node node

<netrom>
parameters 1    10  *  *  *   *   *
NOCALL     *     *  *  *  *   *   L
default    *     *  *  *  *   *   0        root /usr/sbin/node node

{VK2KTJ-0 via rose}
parameters 1    10  *  *  *   *   *
VK2XLZ     *     *  *  *  *   *   *    root  /usr/sbin/axspawn axspawn %u +
VK2DAY     *     *  *  *  *   *   *    root  /usr/sbin/axspawn axspawn %u +
NOCALL     *     *  *  *  *   *   L
default    1    10  5 100 180 5   *    root  /usr/sbin/pms pms -a -o vk2ktj

{VK2KTJ-1 via rose}
default    *     *    *   *   *   0    root /usr/sbin/node node radio

Este ejemplo dice que cualquiera que intente conectar con el distintivo VK2KTJ-0 escuchado en el puerto AX.25 llamado ´radio´ se le aplicarán las siguientes reglas:

Cualquiera que tenga el distintivo ´NOCALL´será desconectado, (uso del mode ´L´)

La línea parameters cambia dos valores de los por omisión del kernel (Window y T1) y corre el programa /usr/sbin/axspawn para ellos. Cualquier copia del programa /usr/sbin/axspawn que corra de esta manera aparecerá como axspawn en un lista ps. Las dos líneas siguientes dan permiso para dos estaciones.

La última línea es la regla acepta-todo que todo el mundo obtendrá, inclusive VK2XLZ y VK2DAY usando cualquier ssid diferente de -1. Esta definición pone todos los parámetros implícitamente y causa que el programa pms se ejecute con una línea de argumentos indicando que ha sido ejecutado por una conexión AX.25 y que el dueño es VK2KTJ. (ver “Configurando el pms” para más detalles).

La próxima configuración acepta llamadas a VK2KTJ-1 a través del puerto radio y corre el programa node para todo el que se conecta a ese distintivo.

La próxima es una configuración de un NetRom, note los paréntesis angulares usados en ves de los cuadrados. Esto anuncia una configuración NetRom. Esta es muy simple y dice que cualquiera que se conecte a nuestro puerto NetRom llamado netrom, tendrá al programa node corriendo para él, excepto que tenga distintivo NOCALL en cuyo caso es desconectado.

Las últimas dos son para conexiones Rose. La primera para aquella gente que fijó a ´vk2ktj-0´ y la segunda para ´VK2KTJ-1´ en su dirección de nodo Rose. Trabajan de igual manera. Note las llaves para distinguir que es un puerto Rose.

Creo que este ejemplo demuestra de forma clara, la importancia de la sintaxis en el archivo de configuración. Este archivo es explicado profundamente en la página man ax25d.conf. Más detalles muy útiles también son incluidos en el paquete ax25-utils.

12.3 Arrancando ax25d

Cuando tienes los dos archivos de configuración completos arrancas ax25d con el siguiente comando:

    # /usr/sbin/ax25d

Cuando has hecho esto, la gente debería poder hacer conexiones AX.25 a tu máquina Linux. Para que arranque automáticamente cada ves que rebote, acuerdate de poner el comando ax25d en los archivos rc.

Anuncios