Siguiente Anterior Indice Linux AX.25-HOWTO, para Radioaficionados

22. Alguna configuración de ejemplo.

A continuación hay ejemplos de las configuraciones mas comunes. Solo son guías, ya que hay tantas configuraciones posibles como redes de trabajo haya, pero ellas te enseñaran algo para empezar.

22.1 Una pequeña red LAN ethernet con Linux como router a una red LAN de radio.

Algunos de nosotros, tenemos una pequeña red local en casa y querriamos conectarla a la red LAN de radio local. Esta es la configuración que uso en mi casa. Por conveniencia defini un grupo de direcciones que yo pueda capturar en una simple ruta, y uso estas en mi LAN ethernet. Si tu quieres hacer lo mismo, tu coordinador local de IP te ayudará. Las direcciones de la LAN ethernet forman un subset de las direcciones de la LAN radio. La siguiente configuración es la que tengo actualmente definida en el Router Linux de la red de mi casa:

                                         . . . . . .
  ___               _________         .
   | Network       /         \     .    Network
   | 44.136.8.96/29|         |    .     44.136.8/24        \ | /
   |               | Linux   |   .                          \|/
   |               |         |  .   _____      __________    |
   |          eth0 | Router  |  .  /     \    /          \   |
   |_______________|         |_____| TNC |____|  Radio   |__/
   |   44.136.8.97 |  and    |  .  \_____/    \__________/
   |               |         | sl0
   |               | Server  | 44.136.8.5
   |               |         |   .
   |               |         |     .
   |               \_________/        .
  _|_                                    . . . . . .

#!/bin/sh
# /etc/rc.net
# This configuration provides one KISS based AX.25 port and one
# Ethernet device.

echo "/etc/rc.net"
echo "  Configuring:"

echo -n "    loopback:"
/sbin/ifconfig lo 127.0.0.1
/sbin/route add 127.0.0.1
echo " done."

echo -n "    ethernet:"
/sbin/ifconfig eth0 44.136.8.97 netmask 255.255.255.248 \
		broadcast 44.136.8.103 up
/sbin/route add 44.136.8.97 eth0
/sbin/route add -net 44.136.8.96 netmask 255.255.255.248 eth0
echo " done."

echo -n "    AX.25: "
kissattach -i 44.136.8.5 -m 512 /dev/ttyS1 4800
ifconfig sl0 netmask 255.255.255.0 broadcast 44.136.8.255
route add -host 44.136.8.5 sl0
route add -net 44.136.8.0 window 1024 sl0

echo -n "    NET/ROM: "
nrattach -i 44.136.8.5 netrom

echo "  Routing:"
/sbin/route add default gw 44.136.8.68 window 1024 sl0
echo "    default route."
echo done.

# end

/etc/ax25/axports
# name  callsign        speed   paclen  window  description
4800    VK2KTJ-0        4800    256     2       144.800 MHz

/etc/ax25/nrports
# name  callsign        alias   paclen  description
netrom  VK2KTJ-9        LINUX   235     Linux Switch Port

/etc/ax25/nrbroadcast
# ax25_name     min_obs def_qual        worst_qual      verbose
4800            1       120             10              1

22.2 Configuración del gateway de encapsulado IPIP.

Alguna información sobre el entubado esta caducada. Ha cambiado el setup del kernel 2.0.x, ahora se usa el comando "ip" del paquete iproute2, puedes encontrar su descripción en el HOWTO Advanced Routing.

El Linux se usa mucho en el mundo para gateways de encapsulado para TCP/IP. El nuevo driver de entubado soporta múltiples rutas de encapsulado y hace obsoleto al viejo demonio ipip.

Una típica configuración sería así:
                                         . . . . . .
  ___               _________        .
   | Network       /         \     .    Network
   | 154.27.3/24   |         |    .     44.136.16/24       \ | /
   |               | Linux   |   .                          \|/
   |               |         |  .   _____      __________    |
   |          eth0 | IPIP    |  .  /     \    /          \   |
___|_______________|         |_____| TNC |____|  Radio   |___/
   |   154.27.3.20 | Gateway |  .  \_____/    \__________/
   |               |         | sl0
   |               |         | 44.136.16.1
   |               |         |    .
   |               |         |     .
   |               \_________/       .
  _|_                                    . . . . . .
  

Los archivos de configuración mas interesantes son:

# /etc/rc.net
# Este archivo es una simple configuración que provee un puerto de radio
# KISS AX.25, un dispositivo ethernet, y utiliza el manejador de entubado del
# kernel para hacer el encapsulado/desencapsulado IPIP
#
echo "/etc/rc.net"
echo "  Configurando:"
#
echo -n "    loopback:"
/sbin/ifconfig lo 127.0.0.1
/sbin/route add 127.0.0.1
echo " done."
#
echo -n "    ethernet:"
/sbin/ifconfig eth0 154.27.3.20 netmask 255.255.255.0 \
		broadcast 154.27.3.255 up
/sbin/route add 154.27.3.20 eth0
/sbin/route add -net 154.27.3.0 netmask 255.255.255.0 eth0
echo " done."
#
echo -n "    AX.25: "
kissattach -i 44.136.16.1 -m 512 /dev/ttyS1 4800
/sbin/ifconfig sl0 netmask 255.255.255.0 broadcast 44.136.16.255
/sbin/route add -host 44.136.16.1 sl0
/sbin/route add -net 44.136.16.0 netmask 255.255.255.0 window 1024 sl0
#
echo -n "    tunel:"
/sbin/ifconfig tunl0 44.136.16.1 mtu 512 up
#
echo Hecho.
#
echo -n "Routing ... "
source /etc/ipip.routes
echo done.
#
# end.

y:

# /etc/ipip.routes
# Este fichero ha sido generado usando el script munge 
#
/sbin/route add -net 44.134.8.0 netmask 255.255.255.0 tunl0 gw 134.43.26.1
/sbin/route add -net 44.34.9.0 netmask 255.255.255.0 tunl0 gw 174.84.6.17
/sbin/route add -net 44.13.28.0 netmask 255.255.255.0 tunl0 gw 212.37.126.3
   ...
   ...
   ...

/etc/ax25/axports
# nombre Indicativo      Baudios paclen  window  descripcion
4800     VK2KTJ-0        4800    256     2       144.800 MHz

Algunos puntos a tener en cuenta:

El nuevo script tunel-munge:

#!/bin/sh
#
# From: Ron Atkinson <n8fow@hamgate.cc.wayne.edu>
#
#
#  Este script es básicamente el script 'munge' escrito por Bdale N3EUA
#  para el demonio IPIP y esta modificado por Ron Atkinson N8FOW. Su propósito
#  es convertir el archivo de rutas de gateway con formato KA9Q NOS
#  <usualmente llamado "encap.txt") en el formato de tablas de ruteo Linux
#  para el manejador de entubado de IP.
#
#    Uso: archivo Gateway en stdin, archivo con formato de ruteos Linux en stdout.
#               eg.  tunnel-munge < encap.txt > ampr-routes
#
# NOTA: antes de usar este script verifica o cambia los
#       siguientes ítems:
#
#     1) Cambia la sección "Local routes" y "misc user routes" a rutas
#        que correspondan a tu propia área. <borre las mías, por favor!)
#     2) En la línea fgrep cambia la direccion IP por tu
#        direccion IP del gateway a Internet. Si falla causará serios
#        loops de rutas o lazos cerrados.
#     3) El nombre de la interface prefijada es 'tunl0'. Verifica que esto
#        es correcto para tu sistema.

echo "#"
echo "# Tabla de ruteos de entubado IP construido por $LOGNAME en `date`"
echo "# by tunnel-munge script v960307."
echo "#"
echo "# Local routes"
echo "route add -net 44.xxx.xxx.xxx netmask 255.mmm.mmm.mmm dev sl0"
echo "#"
echo "# Misc user routes"
echo "#"
echo "# remote routes"

fgrep encap | grep "^route" | grep -v " XXX.XXX.XXX.XXX" | \
awk '{
	split($3, s, "/")
	split(s[1], n,".")
	if	(n[1] == "")	n[1]="0"
	if	(n[2] == "")	n[2]="0"
	if	(n[3] == "")	n[3]="0"
	if	(n[4] == "")	n[4]="0"
	if	(s[2] == "1")	mask="128.0.0.0"
	else if	(s[2] == "2")	mask="192.0.0.0"
	else if	(s[2] == "3")	mask="224.0.0.0"
	else if	(s[2] == "4")	mask="240.0.0.0"
	else if	(s[2] == "5")	mask="248.0.0.0"
	else if	(s[2] == "6")	mask="252.0.0.0"
	else if	(s[2] == "7")	mask="254.0.0.0"
	else if	(s[2] == "8")	mask="255.0.0.0"
	else if	(s[2] == "9")	mask="255.128.0.0"
	else if	(s[2] == "10")	mask="255.192.0.0"
	else if	(s[2] == "11")	mask="255.224.0.0"
	else if	(s[2] == "12")	mask="255.240.0.0"
	else if	(s[2] == "13")	mask="255.248.0.0"
	else if	(s[2] == "14")	mask="255.252.0.0"
	else if	(s[2] == "15")	mask="255.254.0.0"
	else if	(s[2] == "16")	mask="255.255.0.0"
	else if	(s[2] == "17")	mask="255.255.128.0"
	else if	(s[2] == "18")	mask="255.255.192.0"
	else if	(s[2] == "19")	mask="255.255.224.0"
	else if	(s[2] == "20")	mask="255.255.240.0"
	else if	(s[2] == "21")	mask="255.255.248.0"
	else if	(s[2] == "22")	mask="255.255.252.0"
	else if	(s[2] == "23")	mask="255.255.254.0"
	else if	(s[2] == "24")	mask="255.255.255.0"
	else if	(s[2] == "25")	mask="255.255.255.128"
	else if	(s[2] == "26")	mask="255.255.255.192"
	else if	(s[2] == "27")	mask="255.255.255.224"
	else if	(s[2] == "28")	mask="255.255.255.240"
	else if	(s[2] == "29")	mask="255.255.255.248"
	else if	(s[2] == "30")	mask="255.255.255.252"
	else if	(s[2] == "31")	mask="255.255.255.254"
	else 			mask="255.255.255.255"

if (mask == "255.255.255.255")	
	printf "route add -host %s.%s.%s.%s gw %s dev tunl0\n"\
		,n[1],n[2],n[3],n[4],$5
else				
	printf "route add -net %s.%s.%s.%s gw %s netmask %s dev tunl0\n"\
		,n[1],n[2],n[3],n[4],$5,mask
 }'

echo "#"
echo "# prefijado al resto de amprnet vía mirrorshades.ucsd.edu"
echo "route add -net 44.0.0.0 gw 128.54.16.18 netmask 255.0.0.0 dev tunl0"
echo "#"
echo "# the end"

22.3 Configuración del gateway de encapsulado AXIP.

Muchos de los gateway de radioaficionados a Internet encapsulan AX.25, NetRom y Rose en adición a tcp/ip. El encapsulamiento de frames de AX.25 dentro de datagramas de IP está descripto en RFC-1226 por Brian Kantor. Mike Westerhof escribió una implementación de un demonio de encapsulamiento AX.25 para Unix en 1991. El paquete ax25-util incluye una versión marginalmente mejorada de esta versión para Linux.

Un programa de encapsulamiento AXIP acepta frames AX.25 por un lado, mira la dirección de destino AX.25 para determinar a que dirección IP mandarlo, los encapsula en datagramas TCP/IP y los transmite al destino remoto apropiado. También acepta datagramas TCP/IP que contienen frames AX.25, los desencapsula y los procesa como si hubieran sido recibidos directamente por el puerto AX.25. Para distinguir los datagramas IP con frames AX.25 de los otros, los datagramas AXIP son codificados con un id de protocolo de 4 (o 94 actualmente desaconsejado). Este proceso esta descrito en RFC-1226.

El programa ax25ipd incluido en en el paquete de utilidades del ax25 se presenta como un programa que soporta una interface KISS a través de la cual pasas frames AX.25, y una interface dentro del protocolo TCP/IP. Se configura con un simple fichero llamado /etc/ax25/ax25ipd.conf.

22.3.1.Opciones de configuración de AXIP.

Este programa tiene dos modos importantes de operación: modo "digipeater" y modo "tnc". En modo "tnc" el demonio es tratado como si fuera una tnc KISS, tu le pasas frames encapsuladas KISS y el los transmitirá, esta es la configuración usual. En modo "digipeater", tu tratas al demonio como si fuera un digipeater AX.25. Hay sustanciales diferencias entre estos modos.

En el archivo de configuración tu configuras rutas o mapeos entre indicativos AX.25 de destino y direcciones IP de los host a los cuales, quieres enviar los paquetes AX.25. Cada ruta tiene opciones que describiremos mas tarde. Otras opciones que son configuradas aquí son:

22.3.2.Un fichero típico /etc/ax25/ax25ipd.conf.

#
# archivo de configuración para la estación floyd.vk5xxx.ampr.org
#
# Selecciona transporte axip. "ip" es lo que quieres por la
# compatibilidad con la mayoría de los otros gateways
#
socket ip
#
# Fija el modo de operación del ax25ipd. (digi o tnc)
#
mode tnc
#
# Si seleccionaste digi, debes definir un indicativo. Si seleccionaste
# modo tnc, el indicativo es opcional, pero puede cambiar 
# en el futuro! (2 indicativos si usas un puerto kiss dual)
#
#mycall vk5xxx-4
#mycall2 vk5xxx-5
#
# En modo digi, puede usar un alias. (2 para puerto dual)
#
#myalias svwdns
#myalias2 svwdn2
#
# Manda una identificación cada 540 segundos ...
#
#beacon after 540
# 
# A continuación el texto de la baliza ...
# text ax25ip -- tncmode rob/vk5xxx -- Experimental AXIP gateway
#
# Puerto serial, o entubado conectado a un kissattach, en mi caso
#
device /dev/ttyq0
#
# Poner la velocidad, en baudios
#
speed 9600
#
# loglevel 0 - ninguna salida
# loglevel 1 - solamente información de configuración
# loglevel 2 - errores y eventos importantes
# loglevel 3 - errores y eventos importantes más seguimiento de frames AX.25
# loglevel 4 - todos los eventos
# log 0 por el momento, syslog no esta trabajando todavía ...
#
loglevel 2
#
# Si estamos en modo digi, aquí podemos tener una tnc real, por lo tanto
# usemos param para fijar los parámetros de la tnc ...
#
#param 1 20
#
# Definición de la dirección de broadcast. A todos las direcciones listadas, les
# serán forwardeadas todas las rutas marcadas como capaces de broadcast.
#
broadcast QST-0 NODES-0
#
# Definición de rutas AX.25, las que necesites.
# El formato es route (Indicativo/comodín) (ip del host de destino)
# ssid 0, rutea a todos los ssid´s.
#
# route <destcall> <destaddr> [flags]
#
# Banderas válidas :
#         b  - permite transmisión de broadcast por esta ruta
#         d  - Esta es la ruta prefijada.

#
route vk2sut-0 44.136.8.68 b
route vk5xxx 44.136.188.221 b
route vk2abc 44.1.1.1
#
#

22.3.3.Corriendo ax25ipd

Creando entradas en tu /etc/ax25/axports :

# /etc/ax25/axports
#
axip	VK2KTJ-13	9600	256	AXIP port
#

Corriendo el comando kissattach para crear ese puerto:

 /usr/sbin/kissattach /dev/ptyq0 axip 44.135.96.242
 

Corriendo el programa ax25ipd:

      /usr/sbin/ax25ipd &
      

Verificando el enlace AXIP:

      call axip vk5xxx
      

22.3.4.Algunas notas sobre rutas y banderas de rutas.

En el comando "route" es en donde especifica a donde quiere mandar los paquetes encapsulados AX.25. Cuando el demonio ax25id recibe un paquete desde su interface, compara el indicativo de destino con cada indicativo de su tabla de rutas. Si encuentra una igualdad, entonces el paquete AX.25 es encapsulado en un datagrama IP y transmitido al host de la dirección indicada.

Hay dos banderas que puede agregar a cualquier comando de ruta en el fichero ax25ipd.conf. Estas dos banderas son:

b

El tráfico con una dirección de destino que corresponda a cualquiera definida en la lista con la clave "broadcast", será transmitido por esta ruta.

d

Cualquier paquete que no coincida con ninguna ruta será transmitido por esta ruta. (default = prefijada)

La bandera "broadcast" es muy útil ya que habilita información destinada a todas las estaciones a un número de destinos AXIP. Normalmente las rutas axip son punto-a-punto, y no pueden manejar paquetes "broadcast".

22.4 Enlazando NOS con Linux usando un dispositivo de entubado.

A mucha gente le gusta correr alguna versión de NOS sobre Linux porque tiene todas las cosas que usan ellos. A la mayoría de esas personas también les gustaría tener al NOS corriendo en sus máquinas con capacidad de comunicarse con el kernel de manera de ofrecer las capacidades de Linux a los usuarios de radio a través de este NOS.

Brandon S. Allbery, KF8NH, a contribuido con la siguiente información para explicar como interconectar el NOS corriendo en una máquina Linux con el código kernel usando un dispositivo de entubado.

Ya que tanto Linux como NOS soportan el protocolo slip es posible conectar los dos creando un enlace slip. Tu lo puedes hacer usando dos puertos serie interconectados con un cable, pero esto sería costoso y lento. Linux prove un método que otros sistemas operativos tipo-UNIX proveen y llaman "entubados" o "pipes". Estos son pseudos dispositivo especiales que estan en el software como dispositivo tty estándares, pero que en realidad enlazan con otro dispositivo de entubado. Para usar estos entubados, el primer programa debe abrir la punta maestra del entubado, y entonces el segundo programa abrir la punta esclava del mismo entubado. Cuando ambas puntas están abiertas, los programas pueden comunicarse entre ellos simplemente escribiendo caracteres en el entubado de la misma manera que si fuera un dispositivo terminal.

Para usar esto para conectar el kernel Linux con NOS u otro programa, primero debes elegir un dispositivo de entubado a usar. Puedes encontrar uno si miras en el directorio /dev. La punta maestra es llamada: ptyq[1-f] y la esclava: ttyq[1-f]. Recuerda que vienen en pares, de manera que si seleccionas /dev/ptyqf como maestra, debes elegir /dev/ttyqf como esclava.

Una ves elegido el par de dispositivo de entubado, debes conectar la punta maestra al kernel de Linux y la esclava al programa NOS, ya que el Linux arranca primero y la punta maestra debe de estar abierta primero. Recuerda también que tu kernel Linux debe tener una dirección IP diferente hacia su NOS, de manera que necesitarás fijar una única dirección para ello si no lo tienes todavía.

Configuras el entubado como si fuera un dispositivo serie, de manera que para crear un enlace slip desde tu Linux, puedes usar los siguientes comandos:

# /sbin/slattach -s 38400 -p slip /dev/ptyqf &
# /sbin/ifconfig sl0 broadcast 44.255.255.255 pointopoint 44.70.248.67 /
	mtu 1536 44.70.4.88
# /sbin/route add 44.70.248.67 sl0
# /sbin/route add -net 44.0.0.0 netmask 255.0.0.0 gw 44.70.248.67

En este ejemplo al kernel Linux se le ha dado la dirección IP 44.70.4.88 y al programa NOS la IP 44.70.248.67. El comando de rutas en la última línea simplemente le dice al kernel Linux que rutee todos los datagramas para amprnet a través del enlace slip creado por el comando slattach. Normalmente tu pondrás este comando en su archivo /etc/rc.d/rc.inet2 tras completar todas las otras configuraciones de red, de manera que el enlace slip se cree cada ves que rebotas.

NOTA: no hay ninguna ventaja de usar cslip en cambio de slip porque el enlace es virtual y ocurre rápido transmitiendo los datagramas sin comprimir, y se empeora el rendimiento si se comprimen las cabeceras primero.

Para configurar la punta NOS del enlace puedes probar:

    # you can call the interface anything you want; I use "linux" for convenience.
attach asy ttyqf - slip linux 1024 1024 38400
route addprivate 44.70.4.88 linux

Estos comandos crean un puerto slip llamado "linux" a través de la punta esclava del par de dispositivo de entubamiento conectado al kernel Linux, y una ruta a el para hacerlo trabajar. Cuando arranques el NOS, podrías hacer un ping o telnet a tu NOS desde tu máquina Linux y viceversa. Si no lo haces, verifica que no hayas cometido ningún error, especialmente que tengas las direcciones bien configurados, y que tengas los dispositivos de entubado correctamente fijados.


Siguiente Anterior Arriba