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

7. Informations relatives à l'IP

Cette section traite d'informations spécifiques à l'IP.

7.1 DHCP et DHCPD

DHCP est l'acronyme de «Dynamic Host Configuration Protocol» (Protocole de configuration dynamique d'un hôte). La création de DHCP a rendu la configuration du réseau avec plusieurs hôtes extrêmement simple. Au lieu de configurer chaque hôte séparément vous pouvez assigner tous les paramètres communs à l'ensemble des hôtes utilisant un serveur DHCP.

Chaque fois qu'un hôte démarre il diffuse un paquet sur le réseau. Ce paquet est un appel vers tous les serveurs DHCP situés sur le même segment pour configurer l'hôte.

DHCP est extrêmement utile pour assigner des choses comme l'adresse IP, le masque de réseau et la passerelle de chaque hôte.

7.2 Réglage d'un client DHCP pour les utilisateurs de LinuxConf

Sous linux, démarrez le programme linuxconf en tant que super-utilisateur. Ce programme est disponible avec toutes les versions de redhat et fonctionne sous X aussi bien qu'en mode console. Il fonctionne également avec les distributions Suse et Caldera.

Select Networking
----------------->Basic Host Information
----------------->Select Enable
----------------->Set Config Mode DHCP

7.3 Réglage d'un serveur DHCP sous Linux

Récupérez DHCPD s'il n'est pas déjà installé sur votre machine. Télécharger DHCPD

Note Brève: SOYEZ CERTAINS D'AVOIR L'OPTION MULTICAST INSTALLÉE DANS LE NOYAU.

Si vous n'avez pas de distribution binaire pour votre version de linux, vous devrez compiler DHCPD.

Éditez /etc/rc.d/rc.local pour prendre en compte l'ajout d'une route vers 255.255.255.255.

Extrait du fichier README de DHCPd :

Afin que dhcpd fonctionne correctement avec des clients difficiles (par exemple Windows 95), il doit être en mesure d'envoyer des paquets vers l'adresse 255.255.255.255. Malheureusement, Linux insiste pour changer l'adresse 255.255.255.255 en l'adresse de diffusion du sous-réseau local (ici, 192.5.5.223). Il en résulte une violation du protocole DHCP, et alors que de nombreux clients DHCP ne s'aperçoive pas de ce problème, d'autres (par ex, tous les clients DHCP Microsoft) le font. Les clients ayant ce problème apparaîtront comme ne voyant pas les messages DHCPOFFER venant du serveur.

Sous le compte root, tapez ce qui suit :

route add -host 255.255.255.255 dev eth0

Si le message suivant apparait :

255.255.255.255: Unknown host

Essayez d'ajouter la ligne suivante à votre fichier /etc/hosts :

255.255.255.255 dhcp

Puis réessayez :

route add -host dhcp dev eth0

Options de DHCPD

Maintenant vous devez configurer DHCPd. Pour cela vous devez créer ou éditer le fichier /etc/dhcpd.conf. Il existe une interface graphique pour la configuration de dhcpd sous linuxconf. On configure et règle ainsi DHCPD très facilement.

Si vous voulez le configurer à la main, suivez les instructions qui suivent. Je suggère de le faire au moins une fois à la main. Cela vous aidera pour faire des diagnostiques, ce qu'une interface graphique ne peut vous offrir. Malheureusement Microsoft n'y croit pas.

Le plus facile est d'assigner des adresses IP de manière aléatoire. Ci-dessous un exemple de fichier de configuration montrant le type de réglage.

# Sample /etc/dhcpd.conf
# (add your comments here)
default-lease-time 1200;
max-lease-time 9200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "mydomain.org";

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
range 192.168.1.150 192.168.1.200;
}

Cela permet au serveur DHCP d'assigner au client une adresse IP comprise entre 192.168.1.10 et 192.168.1.100 ou bien 192.168.1.150 et 192.168.1.200.

Une adresse IP sera allouée pendant 1200 secondes si le client ne demande pas plus. Autrement l'allocation maximum permise sera 9200 secondes. Le serveur envoie les paramètres suivants au client :

Utilisez 255.255.255.0 comme masque de sous-réseau
Utilisez 192.168.1.255 comme adresse de diffusion
Utilisez 192.168.1.254 comme passerelle par défaut 
Utilisez 192.168.1.1 et 192.168.1.2 comme serveurs DNS.

Si vous spécifiez un serveur WINS pour vos clients Windows, vous devez insérer l'option suivante dans le fichier dhcpd.conf.

option netbios-name-servers 192.168.1.1;

Vous pouvez aussi assigner des adresses IP spécifiques basées sur une adresse ethernet MAC, par exemple

  host haagen {
     hardware ethernet 08:00:2b:4c:59:23;
     fixed-address 192.168.1.222;
}

Cela assignera l'adresse IP 192.168.1.222 au client ayant une adresse ethernet MAC de 08:00:2b:4c:59:23.

Démarrage du serveur

Dans la plupart des cas, l'installation de DHCP ne crée pas le fichier dhcpd.leases. Dès lors, avant de démarrer le serveur, vous devez créer un fichier vide :

touch /var/state/dhcp/dhcpd.leases

Pour démarrer le serveur DHCP, tapez simplement (ou bien insérez-le dans les scripts de démarrage)

/usr/sbin/dhcpd

Cela démarre dhcpd sur le dispositif eth0. Si vous devez le démarrer sur un autre dispositif, tapez simplement

/usr/sbin/dhcpd eth1

Si vous voulez tester une configuration bizarre vous pouvez démarrer dhcpd en mode débogage. En tapant la commande suivante, vous pourrez voir exactement ce qui se passe sur le serveur.

/usr/sbin/dhcpd -d -f

Démarrez un client et jetez un coup d'oeil sur la console du serveur. Vous verrez apparaître un grand nombre de messages de débogage.

C'est fini

7.4 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 gestionnaire 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, 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. Ainsi vous devriez utiliser :

root# route add default eql

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

7.5 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            * -> *
# 

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).

7.6 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 gestionnaire 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.

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

Le pare-feu IP et les publications le concernant sont traités de manière plus approfondie dans le 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é.

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 1999.

7.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.

7.9 IP Masquerade

Un grand nombre 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).

7.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.

7.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 sont codées sur 16 octets (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.

7.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.

7.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

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

Le metteur en forme de trafic est un gestionnaire 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.


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