Cette section traite d'informations spécifiques à l'IP.
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.
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
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
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.
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
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
.
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 * -> *
#
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).
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.
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é.
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.
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.
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.
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.
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 |
/ | | |
/ | --------
- -
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
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).
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.
À 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.
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.
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
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 Documentation
networking/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.