Monter une passerelle Linux avec du IP-Masquerading (article désuet)

Avertissement: Cet article date de 1999, il est désuet !

Comment utiliser ce document

Je ne vous direz pas "RTFM" (Read The F .. Fancy Manual), puisque la majorité des gens détestent lire de la documentation, surtout lorsqu’ils sont pressés. C’est pourquoi dans ce texte, le "comment" sera souvent expliqué avant le "pourquoi". En autres mots, si les instructions données dans les premières sections ne vous aident pas ou vous les considérez trop obscures, continuez à lire et les détails y seront. Entre temps, vous aurez un aperçu de ce qui vous attends avant même de comprendre ce que vous faites (normalement je n’aime pas procéder de cette façon, mais je ne commencerais pas ce texte par une explication du routage, ça risque d’être trop frustrants pour certains et de tout façon, trop difficile à expliquer).

Évidemment, de procéder de cette façon me donne aussi un avantage, j’écris le stricte minimum et je rajoute des sections au fur et à mesure que les gens se plaignent qu’ils voudraient en savoir plus sur un des sujets traités.
Contenu de ce document

- Introduction
- Avant de commencer : Matériel nécessaire
- Quelle distribution Linux installer ?
- Oubliez pas que... (avant d’installer Linux)
- Lors de l’installation de Linux
- Après l’installation de Linux
- Choisir les IPs
- Activation de la connection Internet
- Configurations pour le IP-Masquerading et forwarding
- Configuration sur les machines clientes

Introduction

L’objectif de ce texte est de vous donner une idée très rapide des aspects importants pour monter une passerelle avec Linux. Qu’est-ce qu’une passerelle ? Un gateway.. Qu’est-ce qu’un gateway ? Ça permet de faire un lien entre deux différents réseaux informatiques. Le cas le plus fréquemment retrouvé est le lien entre un réseau local et une connection Internet de haute vitesse (par exemple un modem-cable). Puisque les addresses IP coûtent cher, les gens ont tendance à partager le même IP pour plusieurs machines, avec l’intermédiaire d’une passerelle qui fait du IP-Masquerading pour que les machines du réseau local se fassent passer pour une seule machine.

Et maintenant, utilisons quelques talents d’artiste pour démontrer le IP-Masquerading sur une passerelle :

Machine-A ..[192.168.1.10]... ---- 
Machine-B ..[192.168.1.11]...| HUB |..[192.168.1.1]...Passerelle...[207.190.24.21]...INTERNET 
Machine-C ..[192.168.1.12]... ----

Donc ici nous avons 3 machines sur un réseau local avec des adresses IPs privées (192.168.x.x), je reviendrais là-dessus plus tard, qui se font passer pour une seule machine (207.190.24.21). Techniquement, les autres serveurs, y compris le serveur d’Internet (ISP), ne voient qu’une machine qui utilise plusieurs applications en même temps.

Évidemment, il y a moyen de s’amuser encore plus que ça, mais pour le moment je vais me retenir :)

Avant de commencer : Matériel nécessaire

Par le schéma dans l’intro du texte, c’est assez explicite que si vous montez une passerelle, c’est parce que vous avez besoin de connecter plusieurs machines à l’Internet. Certaines pièces s’imposent, par exemple, pour chaque IP sur le réseau, il vous faut une interface réseau. Par exemple : un modem, une carte ethernet, un port parallèle (pas suggéré !), etc.. Typiquement, voici la configuration suggérée :

- PC 486 33mhz + 16 mo de mémoire vive
- 250 mo de disque dur
- 2 cartes ethernet pour la passerelle et une pour chaque machine sur le réseau local
- Un hub (concentrateur)

Linux peut rouler sur 8 megs de ram, mais je conseille 16 puisque ça devient frustrant à la longue, et vous voudrez peut-être partir quelques services tels qu’un serveur ftp, web ou un eggdrop irc.

Quelle distribution Linux installer ?

On pourrait facilement faire un débat pendant des pages qui comparerait les différentes distributions Linux. Elles ont toutes leurs avantages et désavantages, mais je commenterais seulement les deux principales plus souvent utilisées pour des serveurs : RedHat et Debian.

RedHat : Facile à installer, facile à configurer (linuxconf), tout les outils nécessaire pour faire du ip-masquerading sont prêts à être activés. Toutefois, la liste de désavantages est courte mais assez importante : trous de sécurités trouvés fréquemment (demande beaucoup d’attention à la machine), il est plus difficile de faire une petite installation (moins de 200 megs) et les configurations par défaut ne sont pas très sévères..

Debian : La parfaite distribution pour un gateway ayant accès à une connection haute vitesse. Vous pouvez installer à partir des disquettes de base (7-8), puis vous connecter à l’Internet pour aller télécharger ce qui manque. Je vais reparler de ce point plus tard puisque je crois qu’il est important et pas évident à faire en pratique. De plus, Debian est sécuritaire et sa mise à jour peut être automatisée avec l’outil "apt-get" qui est inclu par défaut. Le seul aspect que je reproche à Debian, c’est que son installation n’est pas évidente, mais ceci est majoritairement dû au fait que l’un des buts importants pour les développeurs de Debian est de permettre plus de flexibilité aux usagers, par conséquent la distribution est un peu moins user-friendly que RedHat. Définitivement lire la documentation avant d’installer, mais une fois que c’est fait, l’administration prendra beaucoup moins de temps.

Les autres distributions : Je les connais moins, par contre je sais que Caldera est surtout axé vers les interfaces graphiques. Si vous avez l’intention d’enlever l’écran de votre passerelle (comme tout bon serveur), ce n’est pas très pratique (il faut constamment définir la variable $DISPLAY pour pointer vers une machine client du réseau). Mandrake possède des packages optimisés pour un pentium, si vous avez l’intention de recycler votre vieux 486, c’est pas très pratique. En ce qui concerne SuSe, je ne la connais pas puisque leur système de distribution de CDs est très étrange (peut-on faire une installation FTP ?). Oubliez pas que... (avant d’installer Linux)

Trois programmes sont critique au fonctionnement d’une passerelle avec IP-Masquerading : ipchains, route et un kernel bien configuré (il l’est par défaut avec RedHat et Debian). Si vous avez un modem-cable ou une connection ADSL, il vous faut aussi le client pour connecter à un serveur DHCP pour kernel 2.2, soit dhcpcd-1.3.x ou équivalent. Trouvez les informations sur les cartes ethernet, si elles sont ISA vous devez trouver leurs IRQ et IO en plus de vous assurer qu’elles sont sur des ressources différents car elles sont souvent sur leurs configurations par défaut. Le meilleur moyen de le faire, c’est d’utiliser le programme qui est venu avec la carte combiné avec un disquette boot de MS DOS. Vous devrez avoir de besoin de ces informations plus tard..

Lors de l’installation de Linux

La majorité des distributions configurent qu’une seule interface réseau lors de l’installation. Laquelle configurer ? Celle qui va vers l’Internet. Par contre, avec Debian (de mémoire) il est pas possible d’installer une connection DHCP lors de l’installation puisque dhcpcd ne fait pas partie des packages sur les 7-8 disquettes d’installation de base. Mais évidemment, l’idéal c’est de configurer l’interface qui va vers l’Internet, mais inquiétez vous pas si vous faites une erreur à ce point ci. Si vous savez pas quels IPs statiques choisir, ce sujet est traité dans pas longtemps

Après l’installation de Linux

Linux est maintenant installé et c’est le temps de commencer les choses pertinentes. La première étape sera d’activer un routage fonctionnel. C’est à dire que toutes les machines sur le réseau pourront se voir, mais seule la passerelle pourra parler avec l’Internet (à cause des IPs privés (192.168.x.x) qui ne sont pas convertis en IPs publics (celui fournit par le service d’Internet).

Choisir les IPs

Non, vous pouvez pas choisir n’importe quel IP. Il y a des tonnes de raisons à ce sujet, j’en parlerais rapidement puisque c’est un sujet assez intéressant (le routage sur Internet) et je risquerais de m’emporter.

Il existe 3 classes d’IP, la classe A, B, C et D, sauf que la classe D ne nous intéresse pas dans le cadre de ce texte. Si vous avez un réseau ordinaire de moins de 50 machines, une configuration simple avec des IPs de classe C seront l’idéal. Les IPs disponibles pour usage privé (réseau local) sont 192.168.x.x. Donc je suggère le 192.168.1.1 pour la passerelle, et 192.168.1.2 et plus pour les autres machines. Utilisez un netmask de 255.255.255.0, un broadcast de 192.168.1.255 et c’est tout ce que vous avez de besoin pour que les machines se parlent. N’oubliez pas que les machines qui seront capable de se parler sont celles qui utiliseront le même sous réseau et la même adresse de broadcast, mais en plus, ces machines doivent être reliées par un médium commun, tel un hub (capaciteur). Oui, vous pouvez procéder autrement, mais je décrirais seulement la façon la plus simple.

Oubliez pas qu’un IP est alloué à une interface réseau et non à une machine. Par conséquent, une même machine peut avoir autant d’IPs qu’elle a d’interfaces réseaux comme ce sera le cas pour la passerelle.

Pour avoir une liste des interfaces réseaux _actives_, faire la commande /sbin/ifconfig. Pour avoir une liste des interfaces réseaux configuréres (mais pas nécessairement actives), faire /sbin/ifconfig -a.

Voici un exemple d’activation manuelle d’une connection ethernet sur un réseau local avec des IPs statiques :

[foo:~/]# modprobe ne2k-pci 
[foo:~/]# ifconfig eth0 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255 up

J’ai tout simplement activé le module de ma carte ethernet (une carte Ne2000 compatible de type PCI dans ce cas-ci), puis j’ai activé la connection ethernet. Eth0 signifie la première interface réseau ethernet qui a été configurée. Je ne comprends toujours pas pourquoi dans Windows 98, l’équivalent de cette opération demande que l’usager fasse redémarrer la machine deux fois (une pour l’activation de la carte ethernet, l’autre pour l’activations de la connection ethernet).

Théoriquement, si toutes vos machines sur le réseau local possèdent un IP, elle peuvent maintenant se parler. La première forme de communication est le ping : # ping 192.168.1.1. Si la machine répond, excellent, sinon, allez lire un howto sur comment monter un réseau local et dites-moi qu’est-ce que j’ai mal expliqué. Activation de la connection Internet

Reprenons l’exemple de l’activation d’un lien DHCP pour une connection modem-cable ou ADSL, si elle n’a pas déjà été configurée lors de l’installation de Linux.

Les points suivants peuvent être sujet à débat, mais je trouve que c’est le moyen le plus simple de le faire sous Debian :

- Installez DHCPcd à partir de dselect, du rpm, ou de l’archive que vous aviez préalablement placé sur disquette.
- Configurer l’interface réseau, toutefois sans lui donner d’adresse IP :

    * [bar:~/]# ifconfig eth1 up
      - Activer la connection DHCP avec le daemon client :
    * [bar:~/]# /usr/sbin/dhcpcd eth1

Faites ifconfig -a après chaque commande pour observer qu’est-ce qui est fait par qui, puis assurez-vous que les DNS de votre service Internet ont été inscrits dans /etc/resolv.conf. (cat /etc/resolv.conf) Un petit ping vers yahoo.com s’impose et s’il fonctionne, la pire est fait.

Notez qu’à ce stade-ci, les machines derrière la passerelle ne peuvent toujours pas pinger l’Internet.
Configurations pour le IP-Masquerading et forwarding

La plus importante étape à faire, celle qui est le plus souvent oubliée, c’est d’activer le forwarding. En bref, le forward est la partie où la passerelle prend un paquet provenant d’une interface réseau et l’envoie vers une autre interface. C’est l’équivalent d’agir comme un routeur. Ceci est fait en utilisant des fonctionalités qui permettent de configurer le noyeau Linux pendant qu’il est en mémoire et au systèem de fichiers /proc :

[bar:~/]# echo "1" >/proc/sys/net/ipv4/ip_forward

Voilà, le ip-forwarding est activé, les machines derrière la passerelle pourront maintenant parler avec l’Internet. Toutefois, il reste deux petites étapes. Certaines protocoles doivent être traitées spécialement puisque la passerelle agit comme firewall et risque de ne pas leur être très amicales. C’est le cas de la protocle FTP, IRC, RealAudio, ICQ (en partie), Quake, etc.. Par contre le web, telnet, news fonctionnent. La raison derrière ceci est assez longue et pas importante pour le moment. Les développeurs du kernel ont pensé aux gens utilisant ces protocoles et des modules spéciaux ont été écrits. Pour les activer, utilisez la commande modprobe :

[bar:~/]# /sbin/modprobe ip_masq_ftp
[bar:~/]# /sbin/modprobe ip_masq_irc

Les modules disponibles sont situés dans /lib/modules/`uname -a`/ipv4/. Le module d’ICQ n’est pas disponible dans le code source du kernel puisque ce n’est pas une protocole standart, vous pouvez le trouver sur Freshmeat.net.

Le dernier point nécessaire pour que les machines derrières la passerelle puissent parler à l’Internet est la configuration cliente.

Configuration sur les machines clientes

Nous parlons bien entendu des machines situées sur le réseau local. Tout les systèmes d’exploitation supportent ce type de configuration, donc vous pouvez évidemment utiliser des machines MacOS ou Windows98 avec une passerelle Linux.

Configuration sous Linux

Dans un des fichiers d’intialisation, (sous Debian : /etc/init.d/network ; sous RedHat : /etc/rc.d/rc.local (de mémoire)) ajouter la ligne suivante :

route add default gw 192.168.1.1

Vous venez de modifier la table de routage qui dit maintenant que tout paquet adressé à une machine inconnue par la table sera envoyée par défaut à la passerelle. Une fois sur la passerelle le paquet sera envoyé vers l’Internet. Faites /sbin/route pour voir la modification.

Il y a d’autres moyens de faire ceci, par exemple par LinuxConf, mais je vous laisse le découvrir par vous-même.

Configuration sous Windows98

Je suis un peu rouillé quand ça vient à Windows98, mais je crois que c’est dans le panneau de configuration, dans le sous-menu "réseau", il y a un sous menu quelque part qui dit "activer le ip-forwarding", où vous pouvez spécifier un "gateway" 192.168.1.1.

Français