Page suivante Page précédente Table des matières

21. Quelques configurations-types

Ci-suivent des exemples de configurations parmi les plus typiques. Il ne s'agit que d'un guide dans la mesure où il y a autant de façons de configurer un réseau qu'il y a de réseaux disponibles mais il peut vous servir de point de départ.

21.1 Un petit réseau Ethernet local avec un routeur Linux vers un réseau radio local

Nombre d'entre vous disposent de petits réseaux locaux chez eux et désirent connecter les stations de ce réseau à un réseau radio local. J'ai ce type de configuration chez moi. J'ai réussi à obtenir un bloc d'adresses contiguës que je gère par une route unique sur mon Ethernet local. Votre coordinateur IP local vous aidera si vous souhaitez procéder ainsi. Les adresses du réseau Ethernet local forment un sous-ensemble des adresses radio. Voici ma configuration personnelle avec le routeur Linux :

                                          .      .   .    .    . .
  -+-                                .
   | Reseau        /---------\     .    Reseau 
   | 44.136.8.96/29|         |    .     44.136.8/24        \ | /
   |               | Routeur |   .                          \|/
   |               |         |  .                            |
   |          eth0 |    &    |  .  /-----\    /----------\   |
   +---------------+         +-----| TNC |----| Radio    |---/
   |   44.136.8.97 | serveur |  .  \-----/    \----------/
   |               |         | sl0
   |               |  Linux  | 44.136.8.5
   |               |         |    .
   |               |         |     .
   |               \_________/       .
  -+-                                     .      .   .    .    . .
#!/bin/sh
# /etc/rc.net
# Configuration d'un port AX.25 de type KISS et d'une interface Ethernet

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 "    Netrom: "
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

21.2 Passerelle d'encapsulation IP dans IP

L'emploi de Linux comme passerelle d'encapsulation IP est maintenant courant à travers le monde. Le nouveau gestionnaire de tunnel IP accepte les routes multiples encapsulées et rend obsolète l'ancien démon ipip.

Un schéma classique :

                                          .      .   .    .    . .
  ---                                .
   | Reseau        /----------\     .    Reseau 
   | 154.27.3/24   |          |    .     44.136.16/24       \ | /
   |               |  Linux   |   .                          \|/
   |               |          |  .                            |
   |          eth0 |          |  .  /-----\    /----------\   |
   +---------------+Passerelle+-----| TNC |----| Radio    |---/
   |   154.27.3.20 |          |  .  \-----/    \----------/
   |               |  IPIP    | sl0
   |               |          | 44.136.16.1
   |               |          |    .
   |               |          |     .
   |               \__________/       .
  ---                                     .      .   .    .    . .

Voici les fichiers de configuration intéressants :

# /etc/rc.net
# This file is a simple configuration that provides one KISS AX.25
# radio port, one Ethernet device, and utilises the kernel tunnel driver
# to perform the IPIP encapsulation/decapsulation
#
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 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 "    tunnel:"
/sbin/ifconfig tunl0 44.136.16.1 mtu 512 up
#
echo done.
#
echo -n "Routing ... "
source /etc/ipip.routes
echo done.
#
# end.

et :

# /etc/ipip.routes
# This file is generated using the munge script
#
/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

# name  callsign        speed   paclen  window  description
4800    VK2KTJ-0        4800    256     2       144.800 MHz

Quelques points à noter :

Le nouveau script tunnel-munge :

#!/bin/sh
#
# From: Ron Atkinson <n8fow@hamgate.cc.wayne.edu>
#
#  This script is basically the 'munge' script written by Bdale N3EUA
#  for the IPIP daemon and is modified by Ron Atkinson N8FOW. It's 
#  purpose is to convert a KA9Q NOS format gateways route file 
#  (usually called 'encap.txt') into a Linux routing table format
#  for the IP tunnel driver.               
#
#        Usage: Gateway file on stdin, Linux route format file on stdout.
#               eg.  tunnel-munge < encap.txt > ampr-routes
#
# NOTE: Before you use this script be sure to check or change the 
#       following items:
#
#     1) Change the 'Local routes' and 'Misc user routes' sections
#        to routes that apply to your own area (remove mine please!)
#     2) On the fgrep line be sure to change the IP address to YOUR
#        gateway Internet address. Failure to do so will cause serious
#        routing loops.
#     3) The default interface name is 'tunl0'. Make sure this is
#        correct for your system.

echo "#"
echo "# IP tunnel route table built by $LOGNAME on `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 "# default the rest of amprnet via 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"

21.3 Configuration d'une passerelle d'encapsulation AXIP

Nombre de passerelles Radio Amateur avec l'Internet encapsulent AX.25, NetRom et Rose dans IP. Le cas des trames AX.25 relève du RFC 1226 écrit par Brian Kantor. Mike Westerhof a réalisé un démon d'encapsulation AX.25 sous Unix en 1991. Le paquetage des utilitaires ax25-utils en contient une version légèrement améliorée.

Un programme d'encapsulation AXIP reçoit des trames AX.25 d'un côté, examine la destination AX.25 afin d'en déduire l'adresse IP à laquelle les envoyer et les encapsule dans un datagramme TCP/IP avant de les émettre. Il accepte également les datagrammes TCP/IP qui contiennent des trames AX.25, extrait ces dernières et les traite comme s'il s'agissait de trames AX.25 reçues depuis un port AX.25. La distinction des trames IP contenant de l'AX.25 se fait par l'intermédiaire d'un identifiant de protocole égal à 4 (la valeur 94 est possible quoique désuète). Le RFC 1226 décrit tout ça en détail.

L'outil ax25ipd inclus dans le paquetage ax25-utils se présente comme un programme gérant une interface KISS, au travers de laquelle passeront des trames AX.25, et une interface d'adaptation TCP/IP. Il se configure par l'intermédiaire du fichier /etc/ax25/ax25ipd.conf.

Options de configuration d'AXIP

ax25ipd opère dans deux modes : "digipeater" et "tnc". En mode "tnc", le démon agit comme un TNC kiss. Vous lui fournissez des trames d'encapsulation KISS et il les transmet comme dans la configuration normale. En mode "digipeater", le démon agit comme un noeud de transmission AX.25. Les différences entre ces deux modes sont subtiles.

Vous configurez dans le fichier à cet effet les "routes" ou correspondances entre les identifiants AX.25 et les adresses IP des machines auxquelles vous désirez également transmettre des paquets AX.25. Chaque route dispose d'options qui seront expliquées un peu plus tard.

Voici les autres options à configurer :

  • le tty du démon ax25ipd ainsi que sa vitesse (en général l'extrémité d'un tuyau)
  • l'identifiant souhaité pour le mode "digipeat"
  • l'intervalle beacon
  • le choix entre une encapsulation AX.25 dans des datagrammes IP ou bien dans des datagrammes UDP/IP. L'essentiel des passerelles AXIP emploie une encapsulation IP mais certaines sont situées derrière des filtres qui ne laisseront passer que les datagrammes UDP/IP. Le choix doit coïncider avec ce qui est attendu à l'autre extrémité.
  • Un fichier de configuration /etc/ax25/ax25ipd.conftypique

    #
    # fichier de configuration ax25ipd pour la station floyd.vk5xxx.ampr.org
    #
    # Transport axip. 'ip' garantit la compatibilite avec la plupart des
    # autres passerelles.
    #
    socket ip
    #
    # Mode d'operation de ax25ipd (digi ou tnc)
    #
    mode tnc
    #
    # Si digi est selectionne, vous devez definir un identifiant. Si vous avez
    # choisi tnc, l'identifiant est optionnel mais cela pourrait changer dans le
    # futur (2 identifiants pour une kiss double port).
    #
    #mycall vk5xxx-4
    #mycall2 vk5xxx-5
    #
    # En mode digi, on peut definir un alias (2 etc.).
    #
    #myalias svwdns
    #myalias2 svwdn2
    #
    # ident toutes les 540 secondes ...
    #
    #beacon after 540
    #btext ax25ip -- tncmode rob/vk5xxx -- Experimental AXIP gateway
    #
    # Port serie (ou tuyau connecte a kissattach dans mon cas)
    #
    device /dev/ttyq0
    #
    # Vitesse du peripherique
    #
    speed 9600
    #
    # niveau de log 0 - pas de sortie
    # niveau de log 1 - informations de configuration
    # niveau de log 2 - evenements majeurs et erreurs
    # niveau de log 3 - evenements majeurs, erreurs et suivi des trames AX.25
    # niveau de log 4 - tout 
    # niveau de log 0 pour le moment
    #
    loglevel 2
    #
    # En mode digi, on peut avoir un veritable tnc. param permet de passer les
    # parametres tnc.
    #
    #param 1 20
    #
    # Adresses de broadcast. Chaque adresse figurant dans la liste sera relayee
    # vers une des routes munies de l'indicateur idoine.
    #
    broadcast QST-0 NODES-0
    #
    # Definition des routes AX.25. Autant que necessaires
    # Format :
    # route <id destination> <ip destination> [indicateur]
    #
    # Indicateurs valides :
    #         b  - broadcast
    #         d  - route par defaut
    #
    route vk2sut-0 44.136.8.68 b
    route vk5xxx 44.136.188.221 b
    route vk2abc 44.1.1.1
    #
    #
    

    Exécuter ax25ipd

    Commencez par mettre en palce le fichier /etc/ax25/axports

    # /etc/ax25/axports
    #
    axip    VK2KTJ-13       9600    256     AXIP port
    #
        
    
    Exécutez kissattach pour créer le port :

    /usr/sbin/kissattach /dev/ptyq0 axip
        
    
    Lancez ax25ipd :

    /usr/sbin/ax25ipd &
        
    
    Testez la liaison AXIP :

    call axip vk5xxx
        
    

    Remarques concernant certains indicateurs des routes

    "route" met en place les destinations d'envoi de vos trames AX.25 encapsulées. Lorsque le démon ax25ipd reçoit un paquet sur son interface, il compare l'identifiant de destination avec chacun de ceux présents dans sa table de routage. S'il trouve une correspondance, le paquet est alors encapsulé dans un datagramme IP et transmis à l'hôte spécifié.

    Deux indicateurs peuvent être ajoutés à n'importe quelle route du fichier ax25ipd.conf :

    b

    tout trafic à destination d'une adresse repérée par le mot-clef "broadcast" doit transiter par cette route.

    d

    tout paquet ne correspondant à aucune autre route doit suivre ce chemin.

    L'indicateur de broadcast est très utile puisqu'il permet l'envoi d'informations à destination de toutes les stations vers des stations AXIP : les routes axip fonctionnent normalement en point-à-point et sont incapables de gérer des paquets de diffusion générale.

    21.4 Lier NOS à Linux au moyen d'un pipe

    De nombreuses personnes aiment se servir de NOS sous Linux en raison de la richesse fonctionnelle et de la facilité d'emploi auxquelles il les a habituées. La plupart d'entre eux souhaitent que leur version de NOS puisse dialoguer avec le noyau Linux de façon à offrir certaines des possibilités de Linux aux radio-utilisateurs de NOS.

    Brandon S. Allbery, alias KF8NH, a fourni les informations qui suivent relatives à l'interconnexion de NOS avec le noyau Linux par l'intermédiaire de tuyaux (pipe).

    Linux et NOS gérant tous deux le protocole SLIP, il est possible de les relier au moyen d'une liaison slip. Vous pourriez le faire grâce à deux ports série et à un câble null-modem mais ce serait aussi coûteux qu'inefficace. Comme d'autres systèmes de type Unix, Linux dispose de tuyaux dits `pipes' (prononcer paillepeu). Il s'agit de pseudo-périphériques qui émulent le comportement de tty usuels du point de vue des logiciels en redirigeant le flux vers d'autres tuyaux. Pour les utiliser, un programme doit d'abord ouvrir l'extrémité maître d'un tuyau après quoi un second programme peut ouvrir la terminaison esclave. Lorsque les deux bouts sont ouverts, les programmes peuvent communiquer l'un avec l'autre en écrivant des caractères dans les tuyaux comme s'il s'agissait de terminaux usuels.

    Pour employer les tuyaux entre NOS et Linux, vous devez d'abord choisir un tuyau. Le répertoire /dev en regorge : les extrémités maîtres se nomment ptyq[1-f] et celles esclaves ttyq[1-f]. Gardez à l'esprit qu'elles fonctionnent par paires et que si vous utilisez /dev/ptyqf à un bout, vous devrez employer /dev/ttyqf à l'autre.

    Une fois le tuyau choisi, vous allouez la terminaison maître à Linux et l'esclave à NOS (le noyau démarre le premier et l'extrémité maître doit être la première ouverte). N'oubliez pas que le noyau Linux doit être muni d'une adresse IP différente de celle de NOS. A mettre en place si ce n'est pas déjà le cas.

    Le tuyau se configure comme un périphérique série. Pour une liaison slip, les commandes à exécuter seront donc du type :

    # /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
    

    Dans cet exemple, le noyau Linux dispose de l'adresse 44.70.4.88 et NOS de l'adresse 44.70.248.67. La commande route de la dernière ligne indique simplement au noyau Linux qu'il doit router tous les datagrammes à destination d'amprnet via le lien slip créé par la commande slattach. Vous pouvez par exemple copier ces commandes dans le fichier /etc/rc.d/rc.inet2 (selon votre installation) après toutes les autres commandes de configuration réseau afin que la liaison slip apparaisse automatiquement à la réinitialisation du système. Remarque : on ne gagne rien à utiliser cslip au lieu de slip. Au contraire, les performances diminuent de par la nature purement virtuelle du lien (on passe plus de temps à compresser les en-têtes qu'à transmettre toutes les données).

    Essayez les commandes suivantes pour configurer la terminaison du côté NOS :

    # 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
    

    Ces commandes créent un port slip nommé `linux' sur l'extrémité esclave du tuyau et ajoutent une route qui y pointe. Une fois NOS démarré, vous devriez pouvoir exécuter des ping et des telnet de NOS vers Linux et vice-versa. Si ce n'est pas le cas, vérifiez encore une fois que vous ne vous êtes trompé nulle part, surtout au niveau des adresses et des tuyaux.


    Page suivante Page précédente Table des matières