Configurer le masquage d'IP (IP-Masquerading)
ArticleCategory:
System Administration
AuthorImage:
TranslationInfo:[Author and translation history]
original in en Guido Socher
en to fr Jean Peyratout
AboutTheAuthor:
Guido est un adepte Linux de longue date.
Sa page personnelle Linux se trouve à
www.oche.de/~bearix/g/.
Abstract:[Here you write a little summary]
Le masquage d'IP offre la possibilité de connecter plusieurs
ordinateurs à
l'Internet en utilisant un ordinateur sous Linux avec une seule
adresse IP.
Cela signifie que vous pouvez connecter tout un réseau privé à
l'Internet, alors que votre fournisseur d'accès à l'Internet ne pense que vous
ne connectez qu'une seule machine. Cet article expliquera comment configurer
le masquage d'IP avec un noyau 2.2.x. Il n'explique pas comment
monter un réseau. Pour avoir une idée générale à propos des réseaux
informatiques, je recommande de lire également l'article du
numéro de janvier 2000 au sujet des réseaux domestiques.
ArticleIllustration:[This is the title picture
for your article]
ArticleBody:[The
article body]
Généralités
Pour utiliser le masquage d'IP
comme indiqué dans cet article, il vous faut au moins un ordinateur sous Linux
avec un noyau 2.2.x. Cette machine est utilisée pour configurer la connexion à
l'Internet. L'usage de Linux sur la machine destinée au partage de la
connexion à l'Internet ne vous oblige pas à utiliser Linux sur votre réseau
interne. Linux fonctionne très bien avec Windows, des Macs ou d'autres types
d'Unix.
Cet ordinateur assurant le partage de la connexion est ce qui
nous préoccupe dans cet article. Il se connecte d'un côté à l'Internet et d'un
autre côté à votre réseau privé. Cet ordinateur a donc au moins deux
interfaces et également au moins deux adresses IP. L'une des adresses IP est
une adresse publique qui peut être routée sur l'Internet. Cette adresse IP
vous est en général fournie par votre fournisseur d'accès à Internet juste au
moment de la connexion par modem (ou par un quelconque autre moyen).
L'autre
adresse IP est une adresse privée que vous pouvez choisir dans les valeurs
suivantes :
- 10.0.0.0 - 10.255.255.255
- 172.16.0.0 - 172.31.255.255
- 192.168.0.0 -
192.168.255.255 (nous utilisons celles-ci dans cet article)
Cet
article n'explique pas comment configurer votre réseau. Je suppose que votre
réseau privé est déjà installé et correctement configuré.
Les principes
du masquage d'IP
La base du fonctionnement du masquage d'IP est de
traduire des adresses IP internes en adresses IP externes. Cette opération est
appelée NAT (Network Address Translation = traduction d'adresse de réseau) et
Linux opère en utilisant ce que l'on appelle des numéros de port. Depuis le
monde extérieur, toutes les connexions sembleront provenir de votre ordinateur
Linux.
Vous pouvez trouver une explication détaillée dans un
article du numéro de janvier.
Dans certains cas, parfois, les
paquets IP sont d'une nature particulière et le masquage d'IP ne fonctionnera
pas pour toutes les applications, mais ça marche la plupart du temps.
Il
existe des modules pour ICQ, FTP et Quake qu'il faut insérer dans le noyau
afin de permettre à ces applications particulières de fonctionner correctement
depuis le réseau interne. En général cependant, tout ce qui n'utilise que le
HTTP (les navigateurs Web), TELNET, SSH ou SMTP (le courier électronique)
fonctionnera bien.
Configurer le noyau
Les gens qui utilisent un
noyau préconfiguré livré avec l'une des distributions Linux majeures (Redhat,
Mandrake, Debian, Suse...) peuvent sauter ce chapitre car leur noyau est déjà
prêt à utiliser le masquage d'IP.
Je fais d'habitude une sauvegarde de
/usr/src/linux/.config après la compilation d'un noyau qui marche
correctement. La fois suivante où je dois compiler un noyau je me contente de
charger cette configuration et j'ai déjà la configuration de mon noyau
précédent en place. Il est alors relativement simple de configurer des
changements mineurs comme le masquage d'IP.
Pour utiliser le masquage
d'IP, répondez oui aux questions suivantes lorsque vous configurez le noyau.
Ce ne sont que les composants nécessaire pour le maszquage d'IP,
sélectionnez toutes les autres options dont vous avez besoin pour votre
configuration particulière !
- Choisir les codes et/ou
pilotes incomplets et/ou en développement
CONFIG_EXPERIMENTAL
(ceci vous permettra de sélectionner le code expérimental d'IP
Masquerade à compiler dans le noyau)
- Permettre le support des
modules dynamiques
CONFIG_MODULES
- Support réseau
CONFIG_NET
- Firewalls de réseau
CONFIG_FIREWALL
- Protocoles de réseauTCP/IP
CONFIG_INET
- IP: transfert / passerelle
CONFIG_IP_FORWARD
- IP: firewalling
CONFIG_IP_FIREWALL
- IP: masquerading
CONFIG_IP_MASQUERADE
- IP:
support de ipportfw masq
CONFIG_IP_MASQUERADE_IPPORTFW
-
IP: support de ipautofw masquerade
CONFIG_IP_MASQUERADE_IPAUTOFW
- IP: ICMP masquerading
CONFIG_IP_MASQUERADE_ICMP
- IP: toujours défragmenter
CONFIG_IP_ALWAYS_DEFRAG
-
Support de pilote de réseau virtuel (Dummy net driver support)
CONFIG_DUMMY
- IP: support de ip fwmark masq-forwarding
CONFIG_IP_MASQUERADE_MFW
Configurer le masquage d'IP
Nous allons écrire un petit script pour automatiser la configuration du masquage d'IP.
Vous pouvez mettre le script suivant dans /etc/rc.d/init.d/ et le nommer ipmasq. Changez les permissions
avec chmod 755 ipmasq afin de le rendre exécutable.
Le script ci-dessous (dont les commentaires sont traduits en français) suppose que vous utilisez l'adresse IP statique 192.168.0.1 pour la carte réseau connectée à votre réseau interne (ifconfig eth0 192.168.0.1 netmask 255.255.255.0).
Veuillez transformer le script si vous utilisez autre chose.
Cette image montre le plan du réseau que nous utilisons.
#!/bin/sh
echo "Configuration de l'IP masquerading ..."
# Les personnes qui utilisent encore Windows pour surfer sur le Web doivent
# convertir ce fichier en fichier texte UNIX avant de l'utiliser.
#
# Support du masquerading de transfert de fichier FTP.
/sbin/modprobe ip_masq_ftp
#
#--------------
# Note: les modules ci-desous sont commentés par un # et ne seront pas chargés.
# Enlevez le signe de commentaire (#) si vous souhaitez utiliser les applications
# correspondantes sur l'un des ordinateurs de votre réseau interne.
#
# Support du masquerading de RealAudio par-dessus UDP.
#/sbin/modprobe ip_masq_raudio
#
# Support du masquerading des transferts de fichiers IRC DCC
#/sbin/modprobe ip_masq_irc
#
# Support du masquerading de Quake et QuakeWorld
# Quake I / QuakeWorld (ports 26000 and 27000)
#/sbin/modprobe ip_masq_quake
#
# Quake I/II/III / QuakeWorld (ports 26000, 27000, 27910, 27960)
#/sbin/modprobe ip_masq_quake ports=26000,27000,27910,27960
#
# Support du masquerading du logiciel CuSeeme de vidéoconférence
#/sbin/modprobe ip_masq_cuseeme
#
#Support du masquerading du logiciel VDO-live de vidéoconférence
#/sbin/modprobe ip_masq_vdolive
#--------------
# Important: Autoriser la transmission d'IP. Il est désactivé par défaut
# dans les noyaux 2.2.x
echo "1" > /proc/sys/net/ipv4/ip_forward
#
# NOTE: Voilà un exemple pour une adresse réseau interne de
# 192.168.0.x Le masque de réseau est 255.255.255.0 ou "24" bit
# Veuillez transformer cela si vous utilisez des adresses IP internes différentes.
#
/sbin/ipchains -P forward DENY
/sbin/ipchains -A forward -s 192.168.0.0/24 -j MASQ
#
#--- fin de fichier
Pour le tester, assurez-vous que vous avez configuré tous les ordinateurs de
votre réseau interne de façon à ce qu'ils utilisent une passerelle par défaut
à l'adresse 192.168.0.1 (l'ordinateur Linux de masquage).
Puis lancez
le script en tant que root sur la machine de masquage.
Ensuite, envoyez un
ping depuis une machine de votre réseau vers une machine sur
l'Internet (par exemple ping 195.53.25.18)
Si ça marche, alors
le masquage fonctionne. Essayez aussi ping www.linuxfocus.org.
Cela devrait vous donner le même résultat que le ping précédent. Si cela ne
fonctionne pas, vérifiez le fichier /etc/resolv.conf sur vos clients.
Il doit exister sur chaque ordinateur de votre réseau et notifier le serveur
DNS de votre fournisseur d'accès.
Une fois que le ping fonctionne, tout
le reste fonctionne aussi (par exemple la navigation Web).
Il est temps
maintenant de changer votre configuration
pour que votre script
/etc/rc.d/init.d/ipmasq soit exécuté automatiquement à chaque
démarrage de votre ordinateur Linux de connexion. La meilleure façon de faire
cela à mon avis est d'éditer le fichier /etc/rc.d/init.d/network (ce
fichier devrait déjà exister) et d'exécuter
/etc/rc.d/init.d/ipmasq
À LA FIN de la section de démarrage dans le
fichier init.d/network.
Cherchez une déclaration d'argument puis le
"start".
Conclusion
Comme vous l'avez vu, il n'est
pas difficile de configurer le masquage d'IP.
Ce n'est à la base que la mise
en route de la traduction d'adresses IP et deux commandes
ipchains.
Le masquage d'IP est une application très puissante
pour des petits réseaux domestiques, des réseaux d'école, de PME, etc.
Pour des informations plus amples et plus détaillées, je recommande la
lecture (en français) du
IP-Masquerading mini howto
et du IPCHAINS-HOWTO.
Pour utiliser le masquage d'IP il faut bien sûr que vous ayez configuré correctement le réseau.
Ce point n'est pas couvert par cet article. L'
article sur les réseaux domestiques, vous donnera un peu de vocabulaire.
Le Net 4 howto
(en français)
ou le NAG - Network Administrator Guide
(en anglais) expliquent en détail comment bâtir un réseau.
Je me propose aussi d'écrire un autre article sur les réseaux plus tard cette année mais
vous ne voudrez peut-être pas attendre aussi longtemps :-)
(NdT : Vous trouverez l'ensemble
des HOW-TO en français sur le site Freenix)