15.5. Configurando un Encaminador IPX

Recordará de nuestra breve descripción de los protocolos utilizados en un entorno IPX que IPX es un protocolo encaminable y que el Protocolo de Información de Encaminamiento (Routing Information Protocol, RIP) se utiliza para propagar la información de encaminamiento. La versión IPX de RIP es bastante parecida a la versión IP. Funcionan esencialmente de la misma manera; los encaminadores difunden periódicamente los contenidos de sus tablas de encaminamiento y otros encaminadores los recogen escuchando e integrando la información que reciben. Los nodos sólo necesitan saber cuál es su red local y asegurarse de enviar datagramas al resto de destinos a través de su encaminador local. El encaminador es responsable de recoger estos datagramas y redirigirlos al siguiente salto de la ruta.

En un entorno IPX, hace falta propagar por la red una segunda clase de información. El Protocolo de Anuncio de Servicio (Service Advertisement Protocol, SAP) transporta información sobre qué servicios están disponibles en qué nodos de la red. Por ejemplo, es el protocolo SAP el que permite a los usuarios obtener listas de servidores de ficheros o de impresión de la red. El protocolo SAP trabaja haciendo que los nodos que proporcionan servicios difundan periódicamente la lista de servicios que ofrecen. Los encaminadores de la red IPX recogen esta información y la propagan por toda la red junto con la información de encaminamiento de la red. Para ser un encaminador IPX compatible, hay que propagar tanto la información RIP como la SAP.

Al igual que IP, el soporte de IPX en Linux proporciona un demonio de encaminamiento llamado ipxd que realiza las tareas asociadas al tratamiento del encaminamiento. De nuevo, igual que en el IP, es en realidad el núcleo el que administra el redireccionamiento de los datagramas entre las interfaces de red IPX, pero lleva a cabo esto de acuerdo con un conjunto de reglas recogidas en la tabla de encaminamiento IPX. El demonio ipxd mantiene actualizado ese conjunto de reglas escuchando a todas las interfaces de red activas y analizando cuándo es necesario un cambio de encaminamiento. El demonio ipxd también responde a las peticiones de los nodos de una red conectada directamente que piden información de encaminamiento.

El programa ipxd está disponible preempaquetado en algunas distribuciones, y en forma de código fuente mediante FTP anónimo a http://metalab.unc.edu/ en el fichero /pub/Linux/system/filesystems/ncpfs/ipxripd-x.xx.tgz.

No es necesario configurar el demonio ipxd. Cuando es lanzado, él automáticamente administra el encaminamiento de los dispositivos IPX que han sido configurados. La clave está en asegurarse de que todos los dispositivos IPX están configurados correctamente utilizando la orden ipx_interfaces antes de lanzar ipxd. Aunque la autodetección puede funcionar, cuando esté haciendo funciones de encaminamiento es mejor no correr riesgos, así que configure manualmente las interfaces y ahórrese problemas de encaminamiento molestos. Cada 30 segundos, ipxd reinspecciona todas las redes IPX enganchadas y las administra automáticamente. Esto proporciona una manera de administrar redes en interfaces que pueden no estar activas todo el tiempo, como las interfaces PPP.

Normalmente ipxd es lanzado en tiempo de inicio desde un script de inicio rc como éste:
    # /usr/sbin/ipxd
No se necesita un carácter & porque ipxd se pone por defecto en segundo plano. Aunque el demonio ipxd es útil sobre todo en máquinas que actúan como encaminadores IPX, también es útil a los nodos en segmentos donde existen múltiples encaminadores. Cuando se especifica el argumanto –p, ipxd actuará pasivamente, escuchando la información de encaminamiento del segmento y actualizando las tablas de encaminamiento, pero no transmitirá ninguna información de encaminamiento. De esta manera, un nodo puede mantener actualizadas sus tablas de encaminamiento sin tener que solicitar las rutas cada vez que quiera contactar con un nodo remoto.

15.5.1. Encaminamiento IPX Estático Utilizando la orden ipx_route

En ocasiones puede que queramos especificar a mano una ruta IPX. Igual que en IP, podemos hacer esto en IPX. la orden ipx_route escribe una ruta en la tabla de encaminamiento IPX sin necesidad de que tenga que haberla obtenido mediante el demonio de encaminamiento ipxd. La sintaxis de encaminamiento es muy sencilla (ya que IPX no soporta subredes) y se parece a esto:
    # ipx_route add 203a41bc 31a10103 00002a02b102
Este orden añadiría una ruta a la red IPX remota 203a41bc a través del encaminador de nuestra red local 31a10103 con una dirección de nodo 00002a02b102.

Puede encontrar la dirección de nodo de un encaminador haciendo un uso juicioso dla orden tcpdump con el argumento –e, para mostrar las cabeceras de la capa de enlace y observar el tráfico del encaminador. Si el encaminador es una máquina Linux, es más sencillo usar la orden ifconfig para mostrarla.

Puede eliminar una ruta usando la orden ipx_route:
    # ipx_route del 203a41bc

Puede listar las rutas activas en el núcleo echándole un vistazo al fichero /proc/net/ipx_route. Nuestra actual tabla de encaminamiento sería así:
    # cat ipx_route
    Network    Router_Net   Router_Node
    203A41BC   31A10103     00002a02b102
    31A10103   Directly     Connected
La ruta a la red 31A10103 fue creada automáticamente cuando configuramos la interfaz IPX. Cada una de nuestras redes locales estará representada por una entrada en /proc/net/ipx_route como ésta. Naturalmente, si nuestra máquina va a actuar como un encaminador, necesitará al menos una interfaz más.

15.5.2. Redes IPX Internas y Encaminamiento

Los nodos IPX con más de una interfaz IPX tienen una combinación de dirección de red/nodo única para cada una de sus interfaces. Para conectarse a un nodo así, se puede utilizar cualquiera de estas combinaciones de dirección de red/nodo. Cuando SAP anuncia servicios, proporciona la dirección de red/nodo asociada al servicio ofrecodo. En los nodos con múltiples interfaces, esto significa que se debe elegir una de las interfaces como la que va a propagar; ésta es la función de la bandera de interfaz primaria de la que hablamos anteriormente. Pero esto presenta un problema: la ruta a esta interfaz puede no ser siempre la más óptima, y si se da un fallo en la red que la aísle del resto de la red, el nodo quedará inaccesible aunque haya otras rutas posibles al resto de interfaces. Los otros nodos no conocen el resto de las rutas porque nunca son propagadas, y el núcleo no tiene manera de saber que tendría que escoger otra interfaz primaria. Para evitar este problema, ha sido desarrollado un dispositivo que permite que un nodo IPX sea conocido mediante una dirección de red/nodo individual independiente de la ruta, para los propósitos de la propagación de SAP. Esto resuelve nuestro problema, porque esta dirección de red/nodo nueva es accesible a través de todas las interfaces del nodo, y es la que SAP anuncia.

Para ilustrar el problema y su solución, Figura 15-1 muestra un servidor enganchado a dos redes IPX. La primera red no tiene red interna, pero la segunda sí. El nodo en el diagrama Figura 15-1 escogería una de sus interfaces como interfaz primaria, supongamos que la 0000001a:0800000010aa, y es lo que sería anunciado como su punto de acceso al servicio. Esto funciona bien para los nodos de la red 0000001a, pero significa que los usuarios de la red 0000002c serían encaminados a través de la red para alcanzar ese puerto, a pesar de que el servidor tiene un puerto directamente en esa red, si han sabido de este servidor a partir de las difusiones de SAP.

Permitiendo a estos nodos que tengan una red virtual con direcciones de nodo virtuales, que son una construcción enteramente por software, se resuelve el problema. Esta red virtual puede imaginarse mejor como una red dentro del nodo IPX. Sólo necesita propagarse la información SAP para esta combinación de dirección de red/nodo virtual. A esta red virtual se la conoce como red interna. Pero ¿cómo saben los otros nodos cómo acceder a esta red interna? Los nodos remotos son encaminados a la red interna a través de las redes del nodo conectadas directamente. Esto significa que se verán entradas de encaminamiento que se refieren a la red interna de los nodos que soportan múltiples interfaces IPX. Esas rutas escogerán la ruta óptima disponible en el momento, y si una falla, el encaminamiento se actualiza automáticamente a la siguiente interfaz y ruta mejores. En Figura 15-1, hemos configurado una red IPX interna de dirección 0x10000010 y hemos usado una dirección de nodo 00:00:00:00:00:01. Ésta será la dirección de nuestra interfaz primaria y la que erá anunciada via SAP. Nuestro encaminamiento reflejará que esta red es accesible a través de cualquiera de nuestro puertos de red reales, así que los nodos siempre usarán la mejor ruta de red para conectarse a nuestro servidor.

Para crear esta red interna, use la orden ipx_internal_net incluído en el paquete de herramientas IPX de Greg Page. De nuevo, un ejemplo sencillo demuestra su uso:
    # ipx_internal_net add 10000010 000000000001
Este orden crearía una red IPX interna con dirección 10000010 y dirección de nodo 000000000001. La dirección de red, como cualquier otra dirección de red IPX, debe ser única en su red. La dirección de nodo es completamente arbitraria, ya que normalmente sólo habrá un nodo en la red. Todo nodo debe tener sólo una red IPX interna, y siempre será la red primaria.

Para eliminar una red IPX interna, use:
    # ipx_internal_net del

Una red IPX interna no le servirá absolutamente para nada a menos que su nodo proporcione un servicio y además tenga más de una interfaz IPX activa.