This is an archive of past FreeBSD releases; it's part of the FreeBSD Documentation Archive.

Configurer un serveur SLIP

15.4. Configurer un serveur SLIP

Contribution de Guy Helmer . v1.0, 15 Mai 1995.

Ce document vous donne des indications pour mettre en oeuvre un serveur SLIP sur un système FreeBSD, ce qui signifie typiquement configurer votre système pour ouvrir une connexion à l'ouverture d'une session depuis une machine distante. L'auteur l'a rédigé en se basant sur sa propre expérience; néanmoins, comme votre système et vos besoins peuvent être différents, il ne répond peut-être pas à toutes vos questions, et l'auteur ne peut pas être tenu pour responsable des dégâts que vous causeriez à votre système ou des données que vous auriez perdues en essayant de suivre les indications données ici.

Ce guide a été à l'origine écrit pour le serveur SLIP de la version 1.x de FreeBSD. Il a été adapté pour prendre en compte les modifications de chemins d'accès et la suppression des indicateurs de compression de l'interface SLIP des premières versions 2.x de FreeBSD, qui sont apparemment les seuls différences importantes entre ces versions. Si vous trouvez des erreurs, envoyez s'il vous plaît à l'auteur un courrier électronique suffisamment détaillé pour qu'il puisse les corriger.

15.4.1. Prérequis

Ce document est très technique, il vous faut donc quelques connaissances de base. On suppose que vous connaissez le protocole réseau TCP/IP, et, en particulier, l'adressage des réseaux et des noeuds, les masques de réseau, les sous-réseaux, le routage et les protocoles de routage tels que RIP. Ce sont des choses que vous devez connaître pour configurer les services SLIP sur un serveur de connexions, et si ce n'est pas le cas, lisez s'il vous plaît TCP/IP Network Administration par Craig Hunt chez O'Reilly & Associates, Inc. (ISBN 0-937175-82-X)[1], ou le livre de Douglas Comer sur le protocole TCP/IP.

On suppose aussi que vous avez déjà installé vos modems et configuré les fichiers système appropriés pour permettre l'ouverture de session via vos modems. Si vous ne l'avez pas encore fait, reportez-vous au guide de configuration des connexions entrantes; si vous disposez d'un navigateur World Wide Web, parcourez la liste des guides sur http://www.freebsd.org/; sinon, regardez là où vous avez trouvé le présent document et cherchez un document appelé dialup.txt où quelque chose du même genre. Vous pouvez aussi consulter les pages de manuel de sio(4) pour plus d'informations sur le pilote de port série et de ttys(5), gettytab(5), getty(8) et init(8) en ce qui concerne la configuration du système pour qu'il autorise des connexions de l'extérieur par modem et peut-être aussi celles de stty(1) pour avoir des renseignements sur le paramètrage des ports série (comme clocal pour les interfaces série directement connectées).

15.4.2. Brève vue d'ensemble

Une configuration typique d'utilisation de FreeBSD comme serveur SLIP fonctionne de la façon suivante: un utilisateur SLIP appelle votre serveur SLIP FreeBSD et ouvre une session sous un IDentifiant utilisateur SLIP particulier qui lance /usr/sbin/sliplogin à la place de l'interpréteur de commandes. Le programme sliplogin consulte le fichier /etc/sliphome/slip.hosts pour trouver une ligne correspondant à cet utilisateur, et s'il la trouve, connecte la ligne série à une interface SLIP disponible et lance ensuite la procédure /etc/sliphome/slip.login pour configurer cette interface SLIP.

15.4.2.1. Un exemple d'ouverture de session sur un serveur SLIP

Par exemple, si Shelmerg est un IDentifiant utilisateur SLIP, l'entrée pour Shelmerg dans /etc/master.passwd ressemblera à ce qui suit (sinon que tout sera sur une seule ligne):

    Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:/usr/users/Shelmerg:/usr/sbin/sliplogin

Quand Shelmerg ouvre une session, sliplogin cherche dans /etc/sliphome/slip.hosts la ligne qui contient cet IDentifiant utilisateur; il peut, par exemple, y avoir dans /etc/sliphome/slip.hosts la ligne:

    Shelmerg        dc-slip sl-helmer       0xfffffc00       autocomp

sliplogin la trouvera alors, affectera la ligne série à la prochaine interface SLIP disponible et exécutera /etc/sliphome/slip.login avec les arguments suivants:

    /etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp

Si tout se passe bien, /etc/sliphome/slip.login exécutera un ifconfig sur l'interface SLIP que s'est attribuée sliplogin (l'interface slip 0, dans l'exemple ci-dessus, qui est le premier paramètre passé à slip.login) pour définir l'adresse IP locale (dc-slip), l'adresse IP de la machine éloignée (sl-helmer), le masque de sous-réseau de l'interface SLIP (0xfffffc00) et tout autre indicateur supplémentaire (autocomp). Si quelque chose se passe mal, sliplogin fournit en général des messages d'informations valables en utilisant la fonctionnalité de trace du ``démon'' syslog, qui les enregistre habituellement dans /var/log/messages (reportez-vous au pages de manuel de syslogd(8) et syslog.conf(5), et regardez peut-être aussi dans /etc/syslog.conf pour voir où syslogd enregistre les messages).

OK, assez d'exemples - attelons-nous maintenant à la configuration du système.

15.4.3. Configuration du noyau

Les noyaux par défaut de FreeBSD définissent habituellement deux interfaces SLIP (sl0 et sl1); vous pouvez vérifier avec netstat -i si ces interfaces sont définies dans votre noyau.

Exemple de résultats de la commande netstat -i:

    Name  Mtu   Network     Address            Ipkts Ierrs    Opkts Oerrs  Coll
    ed0   1500  <Link>0.0.c0.2c.5f.4a         291311     0   174209     0   133
    ed0   1500  138.247.224 ivory             291311     0   174209     0   133
    lo0   65535 <Link>                            79     0       79     0     0
    lo0   65535 loop        localhost             79     0       79     0     0
    sl0*  296   <Link>                             0     0        0     0     0
    sl1*  296   <Link>                             0     0        0     0     0

Les interfaces sl0 et sl1 apparaissent dans les sorties de netstat -i, il y a donc deux interfaces SLIP dans le noyau. (Les astérisques après sl0 et sl1 indiquent que les interfaces sont ``inactives'' - down.)

Cependant, les noyaux par défaut de FreeBSD ne sont pas configurés pour transmettre des paquets (i.e., votre machine FreeBSD ne fonctionnera pas comme routeur) à cause des spécifications imposées par les RFC Internet (reportez-vous à la RFC's 1009 [Spécifications des passerelles Internet], 1122 [Spécifications des machines Internet - Couches de communication], et peut-être aussi 1127 [Une perspective sur le RFCs de spécifications des machines]), donc, si vous voulez que votre serveur SLIP serve de routeur, vous devez modifier votre fichier /etc/rc.conf (appelé /etc/sysconfig dans les versions de FreeBSD antérieures à la 2.2.2) et affecter YES à la variable gateway. Si vous avez un système plus ancien qui n'a même pas de fichier /etc/sysconfig, ajoutez alors la commande:

    sysctl -w net.inet.ip.forwarding = 1
à votre fichier /etc/rc.local.

Vous devrez alors redémarrer votre système pour que ce nouveau paramètrage soit pris en compte.

Vous remarquerez à la fin du fichier de configuration par défaut du noyau (/sys/i386/conf/GENERIC) la ligne:

    pseudo-device sl 2

C'est cette ligne qui définit le nombre de périphériques SLIP disponibles dans le noyau; le nombre en fin de ligne est le nombre maximum de connexions SLIP qui peuvent être simultanément actives.

Reportez-vous s'il vous plaît au chapitre Configurer le noyau de FreeBSD pour des indications sur la manière de configurer votre noyau.

15.4.4. Configuration de sliplogin

Comme on l'a dit plus haut, il y a trois fichiers dans le répertoire /etc/sliphome qui servent à la configuration de /usr/sbin/sliplogin (voyez sliplogin(8) pour avoir les pages de manuel de sliplogin): slip.hosts, qui définit les utilisateurs SLIP et les adresses IP qui leur sont affectées; slip.login, qui ne fait en général que configurer l'interface SLIP; et (facultatif) slip.logout, qui fait le travail inverse de slip.login quand la connexion série est terminée.

15.4.4.1. Configuration de slip.hosts

/etc/sliphome/slip.hosts contient des lignes avec au moins quatre champs, séparés par des blancs:

  • L'IDentifiant d'utilisateur SLIP,

  • L'addresse locale (locale au serveur SLIP) de la liaison SLIP,

  • L'adresse de l'autre extrémité de la liaison SLIP,

  • Le masque de réseau.

Les adresses locale et éloignée peuvent être des noms de machines (qui seront converties en adresses IP via /etc/hosts ou par le service de noms de domaines, selon ce que contient /etc/host.conf), et je crois que le masque de réseau peut être un nom qui sera converti en consultant le fichier /etc/networks. Pour notre exemple plus haut, /etc/sliphome/slip.hosts contiendrait:

    #
    # login local-addr      remote-addr     mask            opt1    opt2 
    #                                               (normal,compress,noicmp)
    #
    Shelmerg  dc-slip       sl-helmerg      0xfffffc00      autocomp

La ligne se termine par une ou plusieurs des options:

  • normal - pas de compression des en-têtes,

  • compress - compression des en-têtes,

  • autocomp - compression des en-têtes si la machine distante l'autorise,

  • noicmp - interdire les paquets ICMP (de sorte que les paquets ``ping'' seront ignorés au lieu de consommer votre bande passante).

Remarquez que le programme sliplogin des premières versions de FreeBSD 2 ignorait les options que FreeBSD 1.x reconnaissait, de sorte que les options normal, compress, autocomp et noicmp restaient sans effet, jusqu'à ce que leur support soit ajouté à FreeBSD 2.2 (à moins que votre procédure slip.login n'inclue le code nécessaire à la prise en compte de ces indicateurs).

Les choix des adresses pour les deux extrémités des liaisons SLIP dépend du fait que vous leur dédiiez un sous-réseau ou que vous comptiez utiliser ``proxy ARP'' sur votre serveur SLIP (ce n'est pas du ``vrai'' proxy ARP, mais c'est la terminologie que nous utiliserons dans ce document pour le désigner). Si vous n'êtes pas sûr de la méthode à choisir ou de la facon d'assigner les adresses IP, référez-vous s'il vous plaît aux ouvrages mentionnés à la section Prérequis et/ou consultez l'administrateur de votre réseau IP.

Si vous comptez dédier un sous-réseau IP à vos clients SLIP, vous devrez définir l'adresse de sous-réseau à partir de l'adresse de réseau qui vous est affectée et attribuer à chacun de vos clients SLIP une adresse IP sur ce sous-réseau. Vous devrez alors probablement configurer une route statique vers votre sous-réseau SLIP via votre serveur SLIP, sur votre routeur le plus proche, ou installer gated sur votre serveur SLIP FreeBSD et le configurer pour qu'il dialogue avec les protocoles appropriés avec les autres routeurs, pour leur annoncer la route de votre serveur SLIP vers le sous-réseau SLIP.

Sinon, si vous utilisez la méthode ``proxy ARP'', vous devrez assigner à vos client SLIP des adresses sur le sous-réseau Ethernet de votre serveur SLIP, et vous devrez aussi adapter vos procédures /etc/sliphome/slip.login et /etc/sliphome/slip.logout pour qu'elles utilisent arp(8) pour gérer les entrées proxy-ARP dans la table ARP de votre serveur SLIP.

15.4.4.2. Configuration de slip.login

Le fichier /etc/sliphome/slip.login ressemble typiquement à ceci:

    #!/bin/sh -
    #
    #       @(#)slip.login  5.1 (Berkeley) 7/1/90
    
    #
    # procédure d'ouverture de session générique pour une liaison slip
    # sliplogin l'appelle avec les paramètres:
    #
    #       1        2     3        4               5           6       7-n
    #   interface vitesse nom adresse-locale adresse-éloignée masque optionnels
    #
    /sbin/ifconfig sl$1 inet $4 $5 netmask $6

Ce fichier slip.login ne fait qu'exécuter ifconfig sur l'interface SLIP appropriée avec comme paramètres les adresses locales et distantes et le masque de réseau de l'interface SLIP.

Si vous avez choisi la méthode ``proxy ARP'' (au lieu d'affecter un sous-réseau distinct à vos clients SLIP), votre fichier /etc/sliphome/slip.login devra ressembler à:

    #!/bin/sh -
    #
    #       @(#)slip.login  5.1 (Berkeley) 7/1/90
    
    #
    # procédure d'ouverture de session générique pour une liaison slip
    # sliplogin l'appelle avec les paramètres:
    #
    #       1        2     3        4               5           6       7-n
    #   interface vitesse nom adresse-locale adresse-éloignée masque optionnels
    #
    /sbin/ifconfig sl$1 inet $4 $5 netmask $6 
    #
    # répondre aux requêtes ARP concernant le client SLIP 
    # pour notre adresse Ethernet
    #
    /usr/sbin/arp -s $5 00:11:22:33:44:55 pub

La ligne supplémentaire arp -s $5 00:11:22:33:44:55 pub de ce fichier slip.login crée une entrée ARP dans la table ARP du serveur SLIP. Cette entrée ARP fait que le serveur SLIP répond en donnant sa propre adresse MAC lorsqu'un autre noeud IP du réseau Ethernet demande à parler avec le client SLIP qui a cette adresse IP.

Dans l'exemple donné ci-dessus, remplacez bien l'adresse MAC Ethernet (00:11:22:33:44:55) par l'adresse MAC de la carte Ethernet de votre système, sans quoi votre ``proxy ARP'' ne fonctionnera définitivement pas! Vous pouvez connaître cette adresse MAC en regardant le résultat de la commande netstat -i; la seconde ligne des sorties doit ressembler à ce qui suit:

    ed0   1500  <Link>0.2.c1.28.5f.4a         191923 0   129457     0   116
             

Cela indique que l'adresse MAC Ethernet de ce système est 00:02:c1:28:5f:4a - il faut remplacer les ``.'' dans les adresses MAC Ethernet que donne netstat -i par des ``:'' et ajouter un ``0'' devant les valeurs hexadécimales qui ne sont données que sur un seul caractère pour obtenir des adresses telles que arp(8) les demande; voyez les pages de manuel de arp(8) pour avoir des informations complètes sur ces conventions.

Note: Quand vous créez les fichiers /etc/sliphome/slip.login - et /etc/sliphome/slip.logout - , le bit ``exécutable'' doit être positionné (i.e., chmod 755 /etc/sliphome/slip.login /etc/sliphome/slip.logout), sinon sliplogin ne pourra pas exécuter la procédure.

15.4.4.3. Configuration de slip.logout

/etc/sliphome/slip.logout n'est pas strictement indispensable (à moins que vous n'implémentiez ``proxy ARP''), mais, si vous décidez de la créer, voici un exemple de procédure slip.logout élémentaire:

    #!/bin/sh -
    #
    #       slip.logout
    #
    # procédure de fermeture de session générique pour une liaison slip
    # sliplogin l'appelle avec les paramètres:
    #
    #       1        2     3        4               5           6       7-n
    #   interface vitesse nom adresse-locale adresse-éloignée masque optionnels
    #
    /sbin/ifconfig sl$1 down

Si vous utilisez ``proxy ARP'', vous voudrez que /etc/sliphome/slip.logout supprime l'entrée ARP pour le client SLIP:

    #!/bin/sh -
    #
    #       slip.logout
    #
    # procédure de fermeture de session générique pour une liaison slip
    # sliplogin l'appelle avec les paramètres:
    #
    #       1        2     3        4               5           6       7-n
    #   interface vitesse nom adresse-locale adresse-éloignée masque optionnels
    #
    /sbin/ifconfig sl$1 down
    # Cessez de répondre aux requêtes ARP concernant le client SLIP
    /usr/sbin/arp -d $5

arp -d $5 supprime l'entrée ARP que la procédure slip.login pour ``proxy arp'' a ajouté quand le client SLIP a ouvert la session.

Il n'est pas inutile de répéter: vérifiez que le bit ``exécutable'' de la procédure /etc/sliphome/slip.logout est positionné après que vous l'ayez créée (i.e., chmod 755 /etc/sliphome/slip.logout).

15.4.5. A propos du routage

Si vous n'utilisez pas ``proxy ARP'' pour router les paquets entre vos clients SLIP et le reste de votre réseau (et peut-être l'Internet), vous devrez probablement soit ajouter des routes statiques vers votre(vos) routeur(s) par défaut le(s) plus proche(s) pour router le sous-réseau de vos clients SLIP via votre serveur SLIP, soit installer et configurer gated sur votre serveur SLIP FreeBSD de sorte qu'il fournisse à vos routeurs, en utilisant les protocoles de routage appropriés, les informations qui concernent votre sous-réseau SLIP.

15.4.5.1. Routes statiques

Ajouter des routes statiques vers vos routeurs les plus proches peut être problématique (voire impossible, si vous n'avez pas les autorisations pour ...). Si vous avez un réseau avec des routeurs divers, certains d'entre eux, tels les Cisco et les Proteon, devront non seulement avoir la route statique vers votre sous-réseau SLIP, mais devront aussi savoir quelles routes statiques ils doivent annoncer aux autres routeurs, il faudra donc quelques compétences, de la mise au point ou de la ``bidouille'' pour que vos routes statiques fonctionnent.

15.4.5.2. Utiliser gated

Une alternative aux maux de tête que provoquent les routes statiques est d'installer gated sur votre serveur SLIP FreeBSD et de le configurer pour qu'il utilise les protocoles de routage appropriés (RIP/OSPF/BGP/EGP) pour annoncer aux autres routeurs votre sous-réseau SLIP. Vous pouvez utiliser la version de gated du catalogue des logiciels portés ou le télécharger depuis le site ftp anonyme de GateD et le compiler vous-même; Je crois que la dernière version au moment où j'écris ceci est gated-R3_5Alpha_8.tar.Z, qui inclut la version pour FreeBSD ``prête-à-l'usage''. Des informations complètes et la documentation de gated sont disponibles sur le Web sur le site du Merit GateD Consortium. Compilez-le et installez-le, et créez ensuite un fichier /etc/gated.conf pour le configurer; voici un exemple, semblable à celui que l'auteur a utilisé sur un serveur SLIP FreeBSD:

    #
    # fichier de configuration de gated dc.dsu.edu; 
    # pour la version 3.5alpha5 de gated
    # simplement diffuser les informations RIP pour xxx.xxx.yy 
    # via l'interface Ethernet "ed"
    #
    # options de trace
    #
    traceoptions "/var/tmp/gated.output" replace size 100k files 2 general ;
    
    rip yes {
      interface sl noripout noripin ;
      interface ed ripin ripout version 1 ;
      traceoptions route ;
    } ;
    
    #
    # fournir des informations de trace sur l'interface au noyau:
    kernel {
      traceoptions remnants request routes info interface ;
    } ;
    
    #
    # Propager la route vers xxx.xxx.yy via l'Ethernet interface et RIP
    #
    
    export proto rip interface ed {
      proto direct {
          xxx.xxx.yy mask 255.255.252.0 metric 1; # SLIP connections
      } ;
    } ;
    
    #
    # Accepter les routes de RIP via les interfaces Ethernet "ed"
              
    import proto rip interface ed {
      all ;
    } ;

L'exemple ci-dessus de fichier gated.conf diffuse l'information de routage concernant le sous-réseau SLP xxx.xxx.yy en utilisant RIP sur l'interface Ethernet; si vous utilisez un pilote Ethernet autre que ed, vous devrez modifier en conséquence les références à l'interface ed. Ce fichier d'exemple active aussi les traces sur /var/tmp/gated.output pour pouvoir déboguer le fonctionnement de gated; vous pouvez certainement désactiver ces options de trace si gated fonctionne comme vous le voulez. Vous devrez remplacer les xxx.xxx.yy par l'adresse réseau de votre propre sous-réseau SLIP (veillez à remplacer aussi le masque de réseau dans la clause proto direct).

Une fois que vous avez compilé et installé gated et créer son fichier de configuration, vous devrez lancer gated au lieu de routed sur votre système FreeBSD; modifiez les paramètres de démarrage de routed/gated dans /etc/netstart comme requis par votre système. Consultez s'il vous plaît les pages de manuel de gated pour avoir des informations sur les paramètres de la ligne de commande de gated.

15.4.6. Remerciements

Merci aux personnes suivantes pour leurs commentaires et leurs conseils à propos de ce guide:

Wilko Bulte
Piero Serini

Notes

[1]

N.d.T.: traduit en français sous le titre ``TCP/IP, Administration de réseau TCP/IP'', chez le même éditeur

For questions about FreeBSD, e-mail <questions@FreeBSD.org>.
For questions about this documentation, e-mail <doc@FreeBSD.org>.