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

6. Informations sur IP et Ethernet

Cette section traite d'informations spécifiques sur IP et Ethernet. Les sous-sections ont été rassemblées car je pense que ce sont les plus intéressantes de ce qui était appelé autrefois ``Technologies spécifiques''. Toute personne ayant un réseau local doit pouvoir tirer bénéfice de ces bonnes choses.

6.1 Ethernet

Les noms de périphériques Ethernet sont `eth0', `eth1', `eth2' etc. La première carte détectée par le noyau devient `eth0' et le reste est nommé dans l'ordre de détection.

par défaut, le noyau Linux ne détecte qu'un seul dispositif Ethernet, vous devez donc donner des arguments sur la ligne de commande pour forcer le noyau à détecter des autres cartes.

Pour savoir comment faire marcher votre carte Ethernet sous Linux référez-vous au Ethernet-HOWTO.

Une fois que vous avez compilé convenablement votre noyau pour supporter les cartes Ethernet, la configuration des cartes est aisée.

Typiquement vous faites ainsi (ce que la plupart des distributions font automatiquement pour vous, si vous les avez configurées pour supporter votre carte ethernet) :

root# ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up
root# route add -net 192.168.0.0 netmask 255.255.255.0 eth0

La plupart des pilotes Ethernet ont été développés par Donald Becker, becker@CESDIS.gsfc.nasa.gov.

6.2 EQL - égaliseur de charge à lignes multiples

Le nom du périphérique EQL est `eql'. Avec les sources standards du noyau vous ne pouvez avoir qu'un seul périphérique EQL par machine. EQL permet d'utiliser plusieurs lignes point à point telles que PPP, SLIP ou PLIP comme si c'était un seul lien logique de transport tcp/ip. C'est souvent moins cher d'utiliser plusieurs lignes à faible débit que d'avoir une ligne à haut débit.

Options de compilation du noyau :

Network device support --->
    [*] Network device support
    <*> EQL (serial line load balancing) support

Pour supporter ce mécanisme la machine à l'autre bout de la ligne doit également supporter EQL. Linux, Livingstone Portmasters et de nouveaux serveurs de ligne supportent des systèmes compatibles.

Pour configurer EQL vous avez besoin des outils eql, disponibles sur : metalab.unc.edu.

La configuration est plutôt directe. Vous commencez par configurer l'interface eql. C'est exactement comme un autre périphérique réseau. Vous configurez l'adresse IP et le mtu en utilissant l'outil ifconfig , comme ceci :

root# ifconfig eql 192.168.10.1 mtu 1006

Ensuite vous devez initialiser manuellement chacune des lignes que vous allez utiliser. Ce peut être toute combinaison de périphériques réseau point à point. La façon d'initialiser les connexions dépend du type de lien, voyez les paragraphes appropriés pour d'autres informations.

Enfin vous devez associer le lien série et le dispositif EQL, cela s'appelle `asservissement' (enslaving) et est réalisé avec la commande eql_enslave comme suit :

root# eql_enslave eql sl0 28800
root# eql_enslave eql ppp0 14400
Le paramètre `estimated speed' que vous fournissez à eql_enslave ne fait rien directement. Il est utilisé par le pilote EQL pour déterminer comment les datagrammes vont se répartir sur ce périphérique, aussi vous pouvez régler l'équilibrage des lignes en jouant avec cette valeur.

Pour libérer une ligne d'un périphérique EQL vous utilisez la commande eql_emancipate comme ci-dessous :

root# eql_emancipate eql sl0

Vous ajoutez le routage comme vous le feriez pour tout lien point à point, sauf que vos routes doivent se rapporter au dispositif eql plutôt qu'aux périphériques séries eux-mêmes. Typiquement vous devriez utiliser :

root# route add default eql

Le pilote EQL fut développé par Simon Janes, simon@ncm.com.

6.3 Enregistrement IP (IP Accounting) (pour Linux-2.0)

Les possibilités d'enregistrement IP du noyau Linux vous permettent de recueillir et d'analyser les données d'utilisation du réseau. Les données collectées comprennent le nombre de paquets et le nombre d'octets en cumul depuis la dernière remise à zéro. Vous avez à votre disposition une grande variété de réglages pour obtenir les données que vous désirez. Cette option a été enlevée du 2.1.102, car l'ancien dispositif pare-feu basé sur ipfwadm a été remplacé par ``ipfwchains''.

Options de compilation noyau :

Networking options  --->
    [*] IP: accounting

Après avoir compilé et installé le noyau vous devez utiliser la commande ipfwadm pour configurer l'enregistrement IP. Il y a différentes possibilités pour choisir les informations à enregistrer. J'ai pris un exemple simplifié qui pourrait vous être utile; lisez plutôt la page de manuel ipfwadm pour plus d'informations.

Scenario : Vous avez un réseau Ethernet qui est relié à l'Internet via une liaison PPP. Sur l'Ethernet vous avez une machine qui offre un grand nombre de services et vous voulez savoir quel trafic est engendré par le trafic ftp et ww, aussi bien que le trafic total tcp et udp.

Vous pouvez utiliser une commande qui ressemble à ceci, qui se présente comme un script shell :

        #!/bin/sh
        #
        # Donne les réglages d'enregistrement
        ipfwadm -A -f
        #
        # Met en place les raccourcis
        localnet=44.136.8.96/29
        any=0/0
        # Ajoute des réglages pour le segment Ethernet local
        ipfwadm -A in  -a -P tcp -D $localnet ftp-data
        ipfwadm -A out -a -P tcp -S $localnet ftp-data
        ipfwadm -A in  -a -P tcp -D $localnet www
        ipfwadm -A out -a -P tcp -S $localnet www
        ipfwadm -A in  -a -P tcp -D $localnet
        ipfwadm -A out -a -P tcp -S $localnet
        ipfwadm -A in  -a -P udp -D $localnet
        ipfwadm -A out -a -P udp -S $localnet
        #
        # Réglages par défaut
        ipfwadm -A in  -a -P tcp -D $any ftp-data
        ipfwadm -A out -a -P tcp -S $any ftp-data
        ipfwadm -A in  -a -P tcp -D $any www
        ipfwadm -A out -a -P tcp -S $any www
        ipfwadm -A in  -a -P tcp -D $any
        ipfwadm -A out -a -P tcp -S $any
        ipfwadm -A in  -a -P udp -D $any
        ipfwadm -A out -a -P udp -S $any
        #
        # Liste les réglages
        ipfwadm -A -l -n
        #
        

Les noms ``ftp-data'' et ``www'' se réfèrent aux lignes du fichier /etc/services. La dernière commande liste chacune des règles d'enregistrement et affiche le total.

Il est important de noter, lorsque l'on analyse les enregistrement IP, que les totaux sont incrémentés à chaque fois, donc pour connaitre les différences vous devez exécuter les opérations mathématiques nécessaires. Par exemple si je veux savoir combien de données ne venaient pas de ftp, telnet, rlogin ou www je dois soustraire les totaux individuels correspondant à chaque port.

root# ipfwadm -A -l -n
IP accounting rules
 pkts bytes dir prot source               destination          ports
    0     0 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> 20
    0     0 out tcp  44.136.8.96/29       0.0.0.0/0            20 -> *
   10  1166 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> 80
   10   572 out tcp  44.136.8.96/29       0.0.0.0/0            80 -> *
  252 10943 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> *
  231 18831 out tcp  44.136.8.96/29       0.0.0.0/0            * -> *
    0     0 in  udp  0.0.0.0/0            44.136.8.96/29       * -> *
    0     0 out udp  44.136.8.96/29       0.0.0.0/0            * -> *
    0     0 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> 20
    0     0 out tcp  0.0.0.0/0            0.0.0.0/0            20 -> *
   10  1166 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> 80
   10   572 out tcp  0.0.0.0/0            0.0.0.0/0            80 -> *
  253 10983 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> *
  231 18831 out tcp  0.0.0.0/0            0.0.0.0/0            * -> *
    0     0 in  udp  0.0.0.0/0            0.0.0.0/0            * -> *
    0     0 out udp  0.0.0.0/0            0.0.0.0/0            * -> *
# 

6.4 Enregistrement IP (IP Accounting) (pour Linux-2.2)

On accède au nouveau code d'enregistrement par des ``chaînes IP pare-feu''. Voir La page d'accueil des chaînes IP pour plus d'informations. Entre autres vous devrez utiliser ipchains au lieu de ipfwadm pour configurer vos filtres. (d'après Documentations/Changes dans les sources du dernier noyau).

6.5 IP Aliasing

Il y a des applications où être en mesure d'affecter plusieurs adresses IP à un seul périphérique réseau pourrait être utile. Certains fournisseurs d'accès à l'Internet utilise souvent cette possibilité pour fournir des offres www et ftp `à la carte' pour leurs clients. Vous pouvez vous référer au mini-HOWTO IP-Aliasing pour plus d'informations.

Options de compilation du noyau :

Networking options  --->
    ....
    [*] Network aliasing
    ....
    <*> IP: aliasing support

Après avoir compilé et installé le noyau avec le support IP_Alias, la configuration est très simple. Les alias sont ajoutés aux périphériques réseau virtuels associés au périphérique réseau réel. Une simple convention de noms s'applique pour périphériques : <nom de périphérique> : <numéro de périphérique virtuel>, par ex. eth0:0, ppp0:10 etc. Notez que le pilote de périphérique ifname:number ne peut être configuré qu'après le réglage de l'interface principale.

Par exemple, supposons que vous ayez un réseau Ethernet avec simultanément deux sous-réseaux IP et que vous vouliez que votre machine ait un accès direct aux deux, vous pouvez faire quelque chose comme ceci :

        root# ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up
        root# route add -net 192.168.1.0 netmask 255.255.255.0 eth0

        root# ifconfig eth0:0 192.168.10.1 netmask 255.255.255.0 up
        root# route add -net 192.168.10.0 netmask 255.255.255.0 eth0:0
        

Pour supprimer un alias vous ajoutez simplement un `-' au bout de son nom et et vous faites aussi simplement que ça :

       root# ifconfig eth0:0- 0
       
Toutes les routes associées avec cet alias seront enlevées automatiquement.

6.6 IP Pare-feu (Firewall) (pour Linux-2.0)

Le pare-feu IP et les publications le concernant sont traités de manière plus appronfondies dans le document Firewall-HOWTO. Le pare-feu IP vous permet de sécuriser votre machine contre les accès réseau non-autorisés en filtrant, ou acceptant, des datagrammes venant de, ou allant vers, des adresses IP de votre choix. Il y a différentes règles : le filtrage en entrée, le filtrage en sortie, et le filtrage en retransmission. Les règles en entrée s'appliquent aux datagrammes qui sont reçus par un dispositif réseau. Les règles en sortie s'appliquent aux datagrammes qui sont émis par un dispositif réseau. Les règles en retransmission s'appliquent aux datagrammes qui ne sont pas pour cette machine, c'est à dire les datagrammes qui seront reroutés.

Options de compilation noyau :

Networking options  --->
    [*] Network firewalls
    ....
    [*] IP: forwarding/gatewaying
    ....
    [*] IP: firewalling
    [ ] IP: firewall packet logging

La configuration du pare-feu IP est réalisée en utilisant la commande ipfwadm. Comme mentionné plus haut, la sécurité n'est pas ma spécialité, aussi, bien que je vous présente un exemple utilisable par vous-même, faites des recherches et mettez au point vos propres règlages si la sécurité est importante pour vous.

Vraisemblablement l'utilisation la plus courante du pare-feu IP est lorsque vous utilisez votre machine Linux comme routeur et passerelle pare-feu et que vous voulez protéger votre réseau local contre les accès extérieurs non autorisés.

La configuration suivante est due à Arnt Gulbrandsen, <agulbra@troll.no>.

L'exemple décrit une configuration de pare-feu pour une machine Linux /pare-feu/routeur illustrée par ce diagramme :

-                                   -
 \                                  | 172.16.37.0
  \                                 |   /255.255.255.0
   \                 ---------      |
    |  172.16.174.30 | Linux |      |
NET =================|  f/w  |------|    ..37.19
    |    PPP         | router|      |  --------
   /                 ---------      |--| Mail |
  /                                 |  | /DNS |
 /                                  |  --------
-                                   -

Les commandes suivantes doivent être normalement placées dans un fichier rc de telle sorte qu'elles seront démarrées automatiquement à chaque redémarrage du système. Pour une sécurité maximum, elles devront être effectuées après la configuration des interfaces réseau, mais avant le montage de ces interfaces pour éviter que quelqu'un puisse se connecter pendant que la machine pare-feu reboute.

        #!/bin/sh

        # Nettoie la table des règles de 'Forwarding'
        # Change le réglage par défaut en 'accept'
        #
        /sbin/ipfwadm -F -f
        /sbin/ipfwadm -F -p accept
        #
        # .. et pour 'Incoming'
        #
        /sbin/ipfwadm -I -f
        /sbin/ipfwadm -I -p accept

        # En premier, dévérouille l'interface PPP 
        # J'aimerais bien utiliser '-a deny' au lieu de '-a reject -y' mais
        # il serait alors impossible d'établir des connexions également sur
        # cette interface. L'utilisation de -o fait en sorte que tous
        # les datagrammes rejetés sont enregistrés. Cela occupe de l'espace
        # disque avec pour compensation la connaissance sur l'attaque due
        # à une erreur de configuration.
        #
        /sbin/ipfwadm -I -a reject -y -o -P tcp -S 0/0 -D 172.16.174.30

        # Rejette certains types de paquets visiblement faux:
        # Rien ne doit venir des adresses multicast/anycast/broadcast s
        #
        /sbin/ipfwadm -F -a deny -o -S 224.0/3 -D 172.16.37.0/24
        #
        # et aucune chose venant du réseau loopback ne doit être vu sur l'air
        #
        /sbin/ipfwadm -F -a deny -o -S 127.0/8 -D 172.16.37.0/24

        # accepte les connexions entrantes SMTP et DNS, mais seules pour
        # le serveur  de courrier et le serveur de noms
        #
        /sbin/ipfwadm -F -a accept -P tcp -S 0/0 -D 172.16.37.19 25 53
        #
        # DNS utilise UDP aussi bien que TCP, ce qui l'autorise donc quand
        # le serveur de noms est interrogé
        #
        /sbin/ipfwadm -F -a accept -P udp -S 0/0 -D 172.16.37.19 53
        #
        # mais pas de "réponses" arrivant sur les ports dangereux tels que
        # NFS et l'extension NFS de Larry McVoy. Si vous utilisez squid
        # ajoutez son port ici.
        #
        /sbin/ipfwadm -F -a deny -o -P udp -S 0/0 53 \
                -D 172.16.37.0/24 2049 2050

        # les réponses aux autres ports utilisateurs sont autorisées
        #
        /sbin/ipfwadm -F -a accept -P udp -S 0/0 53 \
                -D 172.16.37.0/24 53 1024:65535

        # Rejette les connexions entrantres vers identd
        # Nous utilisons 'reject' dans ce cas en sorte qu'il soit dit à l'hôte
        # entrant de ne pas persévérer, sinon nous devrons attendre que
        # identd s'arrête.
        #
        /sbin/ipfwadm -F -a reject -o -P tcp -S 0/0 -D 172.16.37.0/24 113

        # Accepte des connexions sur des services en provenance des réseaux
        # 192.168.64 et 192.168.65, qui sont des amis de confiance.
        #
        /sbin/ipfwadm -F -a accept -P tcp -S 192.168.64.0/23 \
                -D 172.16.37.0/24 20:23

        # accepte et laisse passer tout ce qui vient de l'intérieur
        #
        /sbin/ipfwadm -F -a accept -P tcp -S 172.16.37.0/24 -D 0/0

        # rejette la plupart des autres connexions TCP entrantes et les
        # enregistre (ajoutez 1:1023 si ftp ne fonctionne pas)
        #
        /sbin/ipfwadm -F -a deny -o -y -P tcp -S 0/0 -D 172.16.37.0/24

        # ... pour UDP également
        #
        /sbin/ipfwadm -F -a deny -o -P udp -S 0/0 -D 172.16.37.0/24

De bonnes configurations pare-feu sont difficiles à faire. Cet exemple peut être un bon point de départ pour vous. La page de manuel ipfwadm vous aidera pour savoir comment utiliser cet outil. Si vous voulez configurer un pare-feu, demandez autour de vous et recueillez des avis venant de sources de confiance et prenez contact avec quelqu'un qui est à l'extérieur pour tester votre configuration et en vérifier la fiabilité.

6.7 Pare-feu IP (pour Linux-2.2)

On accède au nouveau code d'enregistrement par des ``chaînes pare-feu IP''. Voir La page d'accueil des chaînes IP pour plus d'informations. Entre autres vous devrez utiliser ipchains au lieu de ipfwadm pour configurer vos filtres. (D'après Documentations/Changes dans les sources du dernier noyau).

Nous sommes conscients du fait que ce n'est malheureusement plus d'actualité et nous oeuvrons actuellement pour que cette section soit plus à jour. Vous pouvez en espérer une en Août 1999.

6.8 Encapsulation IPIP

Pourquoi vouloir encapsuler des paquets IP dans d'autres paquets IP? Cela semble bizarre si vous n'avez jamais vu d'applications auparavant. Il y a deux endroits où c'est utilisé : le Mobile-IP et l'IP-Multicast. C'est dans un environnement qui est peut-être le plus largement utilisé et qui est le moins connu : le radio-amateurisme.

Options de compilation du noyau :

Networking options  --->
    [*] TCP/IP Networking
    [*] IP: forwarding/gatewaying
    ....
    <*> IP tunelling

Les périphériques IP tunnel s'appellent `tunl0', `tunl1', etc..

"Mais pourquoi ?" D'accord. D'accord. Les règles de routage classiques spécifient qu'un réseau IP comprend une adresse IP et un masque de réseau. Ceci fournit un ensemble d'adresses contiguës qui peuvent toutes être routées par l'intermédiaire d'une seule entrée de routage. Cela marche, mais signifie que vous ne pouvez utiliser une seule adresse uniquement lorsque vous êtes connecté à un point du réseau auquelle elle appartient. Dans la plupart des cas, il n'y a pas de problèmes, mais si vous êtes en mouvement alors vous ne pouvez pas rester connecté au même endroit tout le temps. L'encapsulation IP/IP ( IP tunneling) vous permet de passer outre cette contrainte en permettant aux paquets destinés à votre adresse d'être enveloppés et redirigés vers une autre adresse. Si vous savez que vous allez opérer depuis un autre réseau IP pour quelques temps, vous pouvez régler une machine qui est chez vous pour accepter des paquets destinés à votre adresse IP et les rediriger vers l'adresse que vous allez utiliser provisoirement.

Une configuration de réseau avec tunneling.

 192.168.1.24                         192.168.2.24

     -                                    -
     |      ppp0 =           ppp0 =       |
     |  aaa.bbb.ccc.ddd  fff.ggg.hhh.iii  |
     |                                    |
     |   /-----\                 /-----\  |
     |   |     |        //       |     |  |
     |---|  A  |------//---------|  B  |  |
     |   |     |    //           |     |  |
     |   \-----/                 \-----/  |
     |                                    |
     -                                    -

Ce diagramme montre une autre raison possible d'utiliser l'encapsulation IPIP : le réseau privé virtuel. Cet exemple présuppose que vous ayez deux machines chacune avec une seule connexion Internet. Chaque hôte a une seule adresse IP. Derrière chacune de ces machines se trouve des réseaux privés locaux configurés avec des adresses IP réservées. Supposez que vous vouliez permettre à chacun des hôtes du groupe A de se connecter à n'importe quel hôte du groupe B, comme s'ils étaient vraiment connectés à l'Internet via un routage réseau. L'encapsulation IPIP vous permettra de le faire. À noter que l'encapsulation ne vous permettra pas de faire en sorte que chacun des hôtes des réseaux A et B puissent parler à n'importe qui sur l'Internet, vous aurez toujours besoin de choses comme le masquage IP pour pouvoir le faire. L'encapsulation est normalement accomplie par une machine fonctionnant comme routeur.

Le routeur Linux `A' sera configuré comme suit :

        #!/bin/sh
        PATH=/sbin:/usr/sbin
        mask=255.255.255.0
        remotegw=fff.ggg.hhh.iii
        #
        # configuration éthernet
        ifconfig eth0 192.168.1.1 netmask $mask up
        route add -net 192.168.1.0 netmask $mask eth0
        #
        # ppp0 configuration (start ppp link, set default route)
        pppd
        route add default ppp0
        #
        # configuration du périphérique de tunneling
        ifconfig tunl0 192.168.1.1 up
        route add -net 192.168.2.0 netmask $mask gw $remotegw tunl0
        

Le routeur Linux `B' sera configuré comme suit :

        #!/bin/sh
        PATH=/sbin:/usr/sbin
        mask=255.255.255.0
        remotegw=aaa.bbb.ccc.ddd
        #
        # configuration éthernet
        ifconfig eth0 192.168.2.1 netmask $mask up
        route add -net 192.168.2.0 netmask $mask eth0
        #
        # ppp0 configuration (start ppp link, set default route)
        pppd
        route add default ppp0
        #
        # configuration du périphérique de tunneling
        ifconfig tunl0 192.168.2.1 up
        route add -net 192.168.1.0 netmask $mask gw $remotegw tunl0
        

La commande :

root# route add -net 192.168.1.0 netmask $mask0 gw $remotegw tunl0
dit : `Envoyer tous les datagrammes destinés à 192.168.1.0/24 dans un paquet d'encapsulation ayant pour adresses de destination aaa.bbb.ccc.ddd'.

Notez que les configurations sont inversées à l'autre bout. Le périphérique tunnel utilise `gw' dans la commande route comme destination du paquet IP où se trouve le datagramme qu'il doit router. Cette machine doit savoir comment `désencapsuler' les paquets IPIP, c'est à dire qu'elle doit aussi être configurée comme périphérique tunnel.

Une configuration d'hôte pour l'encapsulation IPIP.

Ce n'est pas tout un réseau que vous aurez à router. Vous pouvez par exemple ne router qu'une seule adresse IP. Dans ce cas vous devrez configurer le périphérique tunl sur la machine `distante' avec sa propre adresse IP et à l'extrémité A n'utiliser qu'une route hôte (avec Proxy Arp) plutôt qu'une route réseau via le périphérique tunnel. Refaisons et modifions notre configuration de manière appropriée. Maintenant nous avons seulement l'hôte `B' qui veut agir comme si il était à la fois connecté à l'Internet et également au réseau distant supporté par l'hôte `A' :

 192.168.1/24

     -
     |      ppp0 =                ppp0 =
     |  aaa.bbb.ccc.ddd      fff.ggg.hhh.iii
     |
     |   /-----\                 /-----\
     |   |     |       //        |     |
     |---|  A  |------//---------|  B  |
     |   |     |     //          |     |
     |   \-----/                 \-----/
     |                      aussi: 192.168.1.12
     -

Le routeur Linux `A' sera configuré comme suit :

        #!/bin/sh
        PATH=/sbin:/usr/sbin
        mask=255.255.255.0
        remotegw=fff.ggg.hhh.iii
        #
        # configuration éthernet
        ifconfig eth0 192.168.1.1 netmask $mask up
        route add -net 192.168.1.0 netmask $mask eth0
        #
        # configuration de ppp0 (démarre le lien ppp link, règle la route par
        # défaut)
        pppd
        route add default ppp0
        #
        # configuration du périphérique de tunneling
        ifconfig tunl0 192.168.1.1 up
        route add -host 192.168.1.12 gw $remotegw tunl0
        #
        # Proxy ARP pour l'hôte distant
        arp -s 192.168.1.12 xx:xx:xx:xx:xx:xx pub

L'hôte Linux `B' sera configuré comme suit :

        #!/bin/sh
        PATH=/sbin:/usr/sbin
        mask=255.255.255.0
        remotegw=aaa.bbb.ccc.ddd
        #
        # configuration de ppp0 (démarre le lien ppp, règle la route par défaut)
        pppd
        route add default ppp0
        #
        # configuration du périphérique de tunelling
        ifconfig tunl0 192.168.1.12 up
        route add -net 192.168.1.0 netmask $mask gw $remotegw tunl0
        

Ce type de configuration est vraiment typique d'une application IP-Mobile, où un simple hôte veut seulement se balader sur l'Internet et maintenir une adresse IP utilisable tout le temps. Référez-vous au paragraphe Mobile-IP pour avoir plus d'informations et savoir comment faire en pratique.

6.9 IP Masquerade

Beaucoup de gens ont une simple connexion par téléphone pour aller sur l'Internet. Presque tout le monde ne se voit offrir qu'une seule adresse IP par le founisseur d'accès avec ce type de configuration. Ceci est normalement suffisant pour permettre un accès complet au réseau. IP Masquerade est une astuce intelligente qui vous permet d'avoir plusieurs machines utilisant une seule adresse IP, en faisant croire aux autres hôtes qu'il n'y a que la machine supportant la connexion (NdT : d'où le terme masquerade=duperie, mascarade). Il y a qu'une seule mise en garde, qui est que la fonction masquage ne travaille pratiquement que dans un seul sens : les hôtes masqués peuvent appeler mais ne peuvent accepter ou recevoir des connexions réseau de la part d'hôtes éloignés. Cela signifie que certains services réseau comme talk ne peuvent fonctionner et que d'autres, comme ftp doivent être configurés pour fonctionner en mode passif (PASV). Heureusement la plupart des services réseau comme telnet, World Wide Web et irc fonctionnent correctement.

Options de compilation du noyau :

Code maturity level options  --->
    [*] Prompt for development and/or incomplete code/drivers
Networking options  --->
    [*] Network firewalls
    ....
    [*] TCP/IP networking
    [*] IP: forwarding/gatewaying
    ....
    [*] IP: masquerading (EXPERIMENTAL)

Normalement votre machine Linux supportant un lien SLIP ou PPP se comportera comme si elle était toute seule. De plus elle peut avoir un autre périphérique réseau configuré, par exemple une carte Ethernet, avec des adresses réseau réservée. Les hôtes masqués seront ceux du second réseau. Chacun de ces hôtes aura l'adresse IP du port Ethernet réglée comme passerelle ou routeur par défaut.

Une configuration typique ressemble à ceci :

-                                   -
 \                                  | 192.168.1.0
  \                                 |   /255.255.255.0
   \                 ---------      |
    |                | Linux | .1.1 |
NET =================| masq  |------|
    |    PPP/slip    | router|      |  --------
   /                 ---------      |--| hôte |
  /                                 |  |      |
 /                                  |  --------
-                                   -
Masquerading avec IPFWADM

Les commandes adéquates pour cette configuration sont :

# Routage réseau pour éthernet
route add -net 192.168.1.0 netmask 255.255.255.0 eth0
#
# Route par défaut pour le reste de l'internet.
route add default ppp0
#
# Fait en sorte que tous les hôtes du réseau 192.168.1/24  soient masqués.
ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0 

Masquerading avec IPCHAINS

Cela ressemble à l'utilisation avec IPFWADM mais la structure de la commande change:

         # Routage réseau pour ethernet
         route add -net 192.168.1.0 netmask 255.255.255.0 eth0
         #
         # Route par défaut vers le reste de l'internet.
         route add default ppp0
         #
         # Fait en sorte que tous les hôtes sur le réseau 192.168.1/24 soient
         # masqués.
        ipchains -A forward -s 192.168.1.0/24 -j MASQ
         

Vous pouvez obtenir plus d'informations sur IP Masquerade sur la Page d'informations sur l'IP Masquerade. Il existe également un document très détaillé qui est le ``IP-Masquerade-mini-HOWTO'' (qui donne en plus des renseignements pour configurer d'autres systèmes d'exploitation pour fonctionner avec un serveur de masquage linux).

6.10 IP Transparent Proxy

IP transparent proxy est un procédé qui vous permet de rediriger des serveurs ou des services destinés à une autre machine vers les services de votre machine. Typiquement c'est utile lorsque vous avez une machine Linux routeur et qui fournit aussi un serveur proxy. Vous redirigerez toutes les connexions à ce service distant vers le serveur proxy local.

Options de compilation du noyau :

Code maturity level options  --->
        [*] Prompt for development and/or incomplete code/drivers
Networking options  --->
        [*] Network firewalls
        ....
        [*] TCP/IP networking
        ....
        [*] IP: firewalling
        ....
        [*] IP: transparent proxy support (EXPERIMENTAL)

La configuration du dispositif transparent proxy est réalisé en utilisant la commande ipfwadm.

Par exemple :

ipfwadm -I -a accept -D 0/0 telnet -r 2323
Cet exemple fera en sorte que toutes les tentatives de connexion vers le port telnet (23), de n'importe quel hôte, seront redirigées vers le port 2323 de ce même hôte. Si vous utilisez un service sur ce port, vous pouvez rediriger des connexions telnet, les enregistrer ou exécuter tout ce qui bon vous semble.

Un exemple plus intéressant est la redirection de tout le trafic http au travers d'un cache local. Cependant, le protocole utlisé par les serveurs proxy diffère du protocole natif de http : quand un client se connecte à www.server.com:80 et demande chemin/page, quand il se connecte au cache local il contacte proxy.local.domain:8080 et recherche www.server.com/chemin/page.

Pour filtrer une demande http au travers du proxy local, vous devez pouvoir adapter le protocole en insérant un petit serveur, appelé transproxy (vous pouvez le trouver sur la toile). Vous pouvez choisir de faire tourner transproxy sur le port 8081, et exécuter la commande :

ipfwadm -I -a accept -D 0/0 80 -r 8081
Alors le programme transproxy recevra toutes les connexions devant aller vers des serveurs externes et les passera au proxy local après avoir corrigé les différences de protocole.

6.11 IPv6

À peine pensez-vous avoir commencé à comprendre comment fonctionne le réseau IP, que les règles ont changé! IPv6 est l'abbréviation de version 6 du `Protocole Internet' (version 6 de IP). Il fut développé initialement pour calmer les inquiétudes de la communauté Internet quant à la pénurie éventuelle d'adresses IP. Les adresses IPv6 ont 16 octets de long (128 bits). IPv6 inclut un certain nombre d'autres changements, la plupart du temps des simplifications, qui rendront les réseaux IPv6 plus facilement gérables que les réseaux IPv4.

Linux a déjà une implémentation IPv6 qui marche, mais pas encore complètement, dans la série des noyaux 2.2.*.

Si vous voulez essayer cette prochaine génération de technologie Internet, ou si vous voulez un renseignement, lisez le document IPv6-FAQ qui se trouve sur www.terra.net.

6.12 IP Mobile

Le terme "mobilité IP" décrit la possibilité qu'un hôte a de transférer sa connexion réseau d'un point de l'Internet vers un autre sans changer d'adresse IP ou sans perdre la connectivité. Normalement quand un hôte IP change de point de connexion, il change aussi d'adresse IP. La mobilité IP résoud ce problème en allouant une adresse IP fixe à l'hôte qui se déplace et en utilisant une encapsulation IP (tunneling) avec routage automatique pour s'assurer que les datagrammes qui lui sont destinés seront routés vers l'adresse effectivement utilisée à ce moment.

Un projet est en cours en vue de fournir un paquetage complet d'outils Linux pour la mobilité IP. L'état de ce projet et les outils peuvent être obtenus sur : Linux Mobile IP Home Page.

6.13 Multicast

L'IP Multicast permet de router simultanément des datagrammes IP vers un certain nombre d'hôtes se trouvant sur des réseaux différents. Ce mécanisme est exploité pour fournir sur l'Internet des applications prenant de la bande passante, telles que les transmissions audio et video et autres nouvelles applications.

Options de compilation du noyau :

Networking options  --->
        [*] TCP/IP networking
        ....
        [*] IP: multicasting

Un ensemble d'outils et quelques modifications de la configuration réseau sont nécessaires. Pour plus d'informations sur le support multicast pour Linux, voyez le Multicast-HOWTO.html

6.14 NAT - Network Address Translation (Traduction d'adresse réseau)

Le système de traduction d'adresse réseau IP ressemble plutôt au grand frère standardisé du système de masquage IP de Linux. Il est décrit en détail dans la RFC-1631 sur votre archive RFC la plus proche. NET fournit des possibilités que IP Masquerade ne sait pas faire, ce qui le rend plus apte à une utilisation de routeur pare-feu pour un réseau d'entreprise et des installations de plus grandes dimensions.

Une implémentation alpha de NAT pour le noyau 2.0.29 de Linux a été développée par Michael.Hasenstein, Michael.Hasenstein@informatik.tu-chemnitz.de. La documentaion et l'umplémentation de Michael se trouve sur :

Linux IP Network Address Web Page

Les noyaux 2.2.* récents incluent également quelques fonctions de NAT dans l'algorithme de routage.

6.15 Mise en forme du trafic - Changer la bande passante allouée

Le metteur en forme de trafic est un pilote de périphérique qui crée de nouvelles interfaces; celles-ci sont limitées au point de vue trafic selon les réglages de l'utilisateur, et se connectent aux périphériques de réseau physiques pour la transmission réelle, et peuvent donc être utilisées comme route vers l'extérieur en vue de trafic réseau.

Le metteur en forme fut introduit sur Linux-2.1.15 et ensuite sur Linux-2.0.36 (il apparut dans le 2.0.36-pre-patch-2 distributé par Alan Cox, l'auteur du dispositif de mise en forme et le mainteneur de Linux-2.0).

Le metteur en forme de trafic ne peut être compilé qu'en tant que module, et se configure à l'aide du programme shapecfg avec des commandes comme :

        shapecfg attach shaper0 eth1
        shapecfg speed shaper0 64000
        

Ce metteur en forme de trafic ne peut contrôler que la bande passante du trafic sortant, car les paquets sont transmis par le metteur en forme si l'on se réfère aux tables de routage; ainsi, le fonctionnement suivant ``un routage par adresse de départ'' peut aider à limiter la bande passante totale d'hôtes spécifiques utilsant un routeur Linux.

Linux-2.2 possède déjà le support pour un tel routage et si vous en avez besoin pour Linux-2.0, voyez le patch de Mike McLagan, sur ftp.invlogic.com. Lisez le fichier Documentationnetworking/shaper.txt pour plus d'informations.

Si vous voulez faire (une tentative de) mise en forme pour les paquets entrants, essayez rshaper-1.01 (ou plus récent), sur ftp.systemy.it.

6.16 Routage avec Linux-2.2

La dernière version de Linux-2.2 permet un tas de réglages concernant le routage. Malheureusement, vous devez attendre la prochaine édition de cet HOWTO, ou bien lire les sources du noyau.


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