Pour discuter entre-elles, les machines ont besoin de s'identifier. Cet identifiant se nomme une adresse IP. En pratique, cette adresse est un quadruplet de nombres de 0 à 255 séparé par des '.'.
Les adresses IP sont découpées en différentes classes (en particulier A, B et C). Ces classes définissent la taille maximale du réseau que l'on peut produire.
Dans le cas qui nous interresse, un réseau de classe C (la plus petite) doit largement suffire (on peut addresser 256 machines sur un tel réseau). Les adresses IP ne s'attribuent pas au petit bonheur la chance, il existe des organismes qui attribuent/louent ces adresses. Toutefois, comme on cherche à monter un réseau privé, nous choisirons nous même notre adresse réseau parmis celles que l'on peut s'octroyer librement (de 192.168.0.0 à 192.168.255.255 pour un réseau de classe C). Ces adresses sont réservé à un usage privé mais une machine utilisant une telle adresse ne peut pas se connecter directement à Internet. Nous verrons plus loin comment faire pour y parvenir néanmoins.
A priori, le choix peut-être fait au hasard. Toutefois, si vous devez parfois connecter certaines de vos machines avec celles d'un ami (pour faire une LAN party par exemple) il peut-être judicieux de voir avec lui de façon à ne pas prendre la même adresse de réseau que lui afin de s'assurer de ne jamais utiliser les mêmes adresses que lui et ainsi permettre une interconnexion des plus faciles.
Mon choix est fait : je prendrais mes adresses machines dans la plage 192.168.0.0 à 192.168.0.255.
Le masque réseau est alors 255.255.255.0.
Nous rencontrons deux problèmes pour accéder à Internet.
Le premier (le plus évident) : nous n'avons qu'une seule connexion (un seul modem). On pourrait s'ammuser à brancher/débrancher le modem en fonction de la machine à connecter à Internet. Cela demanderait de configurer toutes les machines avec ce modem. En plus, cela nous empècherait d'utiliser la connexion à plusieurs en même temps (problème quelque peu théorique avec un modem classique du fait de son faible débit mais problème bien réel avec la démocratisation du Haut Débit).
Le second est que nous utilisons des adresses IP privées (cf. Section 1.1). Avec ces adresses, il est impossible d'établir une connexion Internet. Pour naviguer sur Internet, il faut que la machine soit identifié par les autre machines avec une adresse IP Internet (non-privée). On peut alors se poser la question : mais comment ça peut fonctionner alors ? En fait, les adresses ne sont pas associées à une machine, mais elles sont associées aux connexions réseau. Ainsi, la machine tartanpion qui est connectée à la fois au réseau local (via une carte réseau) et à Internet (via le modem) posséde deux adresses :
une en 192.168.x.y sur le réseau local ;
une fournie par le fournisseur d'accès à Internet lors de l'établissement de la connexion.
Pour partager notre connexion, nous allons indiquer à toutes les machines de s'adresser à la machine disposant du modem et nous indiquerons à cette machine de faire suivre (forward en anglais) ces paquets sur Internet.
Nous nommons passerelle (gateway en anglais) la machine disposant du modem.
Pour partager une connexion, il faut que le forwarding soit activé dans le noyau. Taper la commande suivante en étant root : echo 1 >/proc/sys/net/ipv4/ip_forward.
Pour que cette options persiste, il faut éditer le fichier /etc/network/options et y modifier la ligne ip_forward de la façon suivante :
ip_forward=yesCette modification sera alors prise en compte au prochain démarrage.
Il faut ensuite définir les règles de transfert de communication. Toujours sous root, saisissez les commandes suivantes :
iptables -F FORWARD iptables -A FORWARD -j ACCEPT iptables -A POSTROUTING -t nat -o ppp0 -j MASQUERADE
On doit indiquer à celles-ci d'utiliser notre gateway.
Supposons que vous ayez affecté à votre gateway l'adresse IP 192.168.0.1. En tant que root, saisir la commande : route add default gw 192.168.0.1.
Pour péréniser la configuration, il faut ajouter une ligne dans le fichier /etc/network/interfaces :
... iface eth0 inet static ... gateway 192.168.0.1 ...
Sur Internet, les attaques ne sont pas rares. Les attaquants peuvent être des virus ou des petits malins jouant avec un nouveau script pour faire les hackers.
Contre ces problèmes, l'une des solutions consiste à utiliser un pare-feu (firewall). L'objet du pare-feu est de condanner les portes qui pourraient être utilisées pour se faufiler dans votre réseau, limitant ainsi les risques d'attaques.
Sous GNU/Linux, les règles sont appliquées à l'aide de iptables.
Les règles. Voici les règles les plus simples qui devraient convenir à tous les utilisateurs ayant une configuration simple, à savoir un réseau local connecté à Internet. Si votre configuration est plus complexe, vous trouverez des références dans la section Références. Revenons au cas simple. Dans notre cas, nous avons confiance dans notre réseau local, mais nous craignons tout ce qui peut venir de l'extérieur. Voici les commandes que je vous propose de saisir sous le compte root :
# On fait le ménage iptables -F # Par défaut, on interdit ce qui vient de l'exterieur iptables -P INPUT DROP # On autorise un à un les cas d'accès que l'on autorise iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -i eth0 -j ACCEPT iptables -A INPUT -m state --state INVALID -j DROP iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -j LOG --log-prefix "FIREWALL:INPUT " # Par défaut, on autorise tout ce qui sort iptables -P OUTPUT ACCEPT # Par défaut, on autorise tout ce qui est transmi iptables -P FORWARD ACCEPT
Application automatique. Ce qui serait bien, c'est que ces règles soient appliquées à chaque fois que l'on se connecte à Internet. Pour ce faire, la solution consiste à mettre les instructions précédentes dans un script de /etc/ppp/ip-up.d. Afin de restaurer un état correct une fois la connexion terminée, il faut utiliser un script dans /etc/ppp/ip-up.d et un autre dans /etc/ppp/ip-down.d. Dans le premier on utilise iptables-save -t filter pour mémoriser les règles dans une fichier temporaire (sous /tmp). Dans le second, on restore l'état mémorisé avec iptables-restore.
Test. Maintenant que tout est prèt, il ne nous reste plus qu'à tester (une fonctionnalité non testée ne doit pas être considérée comme fonctionnelle). Pour ce faire, rendez-vous sur le site http://check.sdv.fr/.
FTP. Pour permettre des connexions FTP sans soucis, il faut charger le module noyau ip_conntrack_ftp modprob ip_conntrack_ftp
Linux Magazine France, 9 (septembre 1999), << Partager une connexion Internet grâce à une machine tournant sous Linux >>, 30-33, Romain Chantereau.
Linux Magazine France, 24 (janvier 2001), 1291-78 34, << Patager une connexion Internet via un port série >>, 43-45.
Connecter un (vieux) Mac à un PC sous GNU/Linux servant de passerelle via PPP
Linux Magazine France, 39 (mai 2002), 1291-78 34, << Netfilter : firewalling sous Linux 2.4 >>, 59-61, Christophe GRENIER.
Présentation de la configuration avec iptables d'une architecture connectant un réseau privé, un réseau public et Internet.
LinuxFocus, Mars 2001, << Utiliser différents FAIs pour votre accès Internet >>, Guido Socher.
LinuxFocus, Janvier 2001, << Un réseau chez soi, glossaire et vue d'ensemble >>, Guido Socher.
Lea-Linux, << IpTables par l'exemple >>.
Reprend l'exemple d'un routeur connecté à Internet, un réseau local privé et un autre public.
Login:, 76 (septembre 2000), Réseau : partagez vos données !, 62-67.
Linux, Windows et Samba pour le partage des fichiers et imprimantes.
LinuxFocus, Mai 1997, << Se connecter à Internet >>, Manuel Trujillo Albarral.
LinuxFocus, Mai 1997, << Gérer le courrier avec procmail >>, Angel Lopez.
Faire un DHCP automatiquement.
Cet article explique comment configurer le plus facilement possible le dhcp sur un réseau.
Cet article aborde DHCP, DNS et WINS.
Easy Internet Sharing NHF: VERSION 1.0, X_console.
Administration Système UNIX, Version 2.0, 1996-04-01, Thierry Besançon, Pierre David, et Joël Marchand.
Linux Network Administrators Guide, 1-56592-400-2.
RULE.
Sélection des paquetages offrant les meilleures fonctionnalités pour des exigences matérielles faibles.
NetMag, 4, << modem sharing >>, Ronny Ziegler.