Mettre en place sa passerelle sous Linux
Mettre en place sa passerelle sous Linux
Mise à jour pour la Slackware par Jonesy
Vous diposez d'une connexion Internet et de plusieurs postes à la maison. L'objectif de cet article est de vous permettre de partager la connexion avec ces différents postes tout en sécurisant au minimum ces accès vers l'extérieur.
Introduction
Pour la suite de l'article, nous allons partir des hypothèses suivantes :
- nous disposons de 4 machines dont 2 postes sous Windows
- nous sommes reliés à Internet grâce à un modem, connectés sur un poste installé avec une distribution Linux.
- ces 4 machines sont sur le même réseau local (on reprécisera la notion un peu plus loin dans l'article)
- chacune de ces 4 machines pourra accéder à Internet.
- La connexion Internet se fait grâce à un modem ethernet
Pour réaliser cette configuration vous aurez besoin du matériel suivant :
- un modem pour la connexion Internet
- 4 cables réseau RJ45 droits
- un hub ou un switch
- une carte réseau par poste du réseau local
Schéma de notre configuration réseau
Mise en place de la passerelle
Plusieurs cas de figure
En fonction du type de connexion Internet dont vous disposez, le matériel et le type de configuration pourront différer. Je vais lister ici les cas les plus courants :
- connexion modem RTC : si vous n'êtes pas l'heureux bénéficiaire d'une ligne à haut débit, cela vous concerne probablement. Pour notre configuration vous aurez besoin de votre modem et une carte réseau. C'est cette carte qui permettra le partage de la connexion.
Fichier:Gateway2 - connexion modem USB ADSL : vous disposez d'un modem pour lequel il vous faudra un driver afin qu'il soit reconu par votre système. Il est connecté à votre machine via un cable USB. Vous devrez alors disposer d'une carte réseau pour réaliser le partage de connexion.
Fichier:Gateway3 - connexion modem Ethernet ADSL : votre modem ADSL est relié directement à une des cartes réseau grâce à un cable réseau croisé. C'est la 2e carte qui permettra le partage vers le réseau local.
Fichier:Gateway4
les liens utiles :
Configuration des interfaces
Dans les liens ci-dessus vous trouverez des informations qui vous permettront de configurer votre connexion Internet. Je considère donc ce point réglé. Nous allons donc configurer l'interface qui pointe vers le réseau local.
Choisir la bonne interface
Si vous avez plusieurs interfaces, la question qui se pose c'est laquelle prendre ? Quelle carte réseau pour mon interface eth1 par exemple ? Vous disposez de plusieurs sources d'information : les outils propres à votre distribution mais aussi :
Avec un noyau 2.6, le fichier /etc/modprobe.conf vous donne ce genre d'information :
Vous pouvez aussi utiliser la commande lshw :
H/W path Device Class Description
=======================================================
/0/e0000000/6 eth1 network VT6102 [Rhine-II]
/0/e0000000/8 eth0 network RTL-8029(AS)
Fixer une adresse IP
Nous supposerons que sur notre schéma, l'interface vers le réseau local est eth1. Nous allons donc lui attribuer son adresse IP.
Pour configurer la passerelle, sur des distributions comme MandrakeLinux, Fedora, Redhat, on procédera de la manière suivante :
définition de l'adresse IP : l'adresse est attribué à une interface réseau. Si vous n'avez qu'une carte dans la machine ce sera probablement eth0. La configuration se trouve dans le fichier /etc/sysconfig/network-scripts/ifcfg-eth0 :DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.0.1
NETMASK=255.255.255.0
NETWORK=192.168.0.0
BROADCAST=192.168.0.255
ONBOOT=yes
MII_NOT_SUPPORTED=no
L'option "MII_NOT_SUPPORTED=no" permet d'utiliser le daemon ifplugd. Celui-ci détecte le branchement de la carte réseau et la rend active. La plupart des cartes supportent cette option, dans le cas contraire, il suffit de la désactiver.
/etc/rc.d/rc.inet1.conf
.IPADDR[0]="192.168.0.3"
NETMASK[0]="192.168.0.0"
USE_DHCP[0]="no"
DHCP_HOSTNAME[0]="machine3"
GATEWAY="192.168.0.1"
Nom de machine et résolution
Une fois l'adresse attribuée il faut également donner un nom à notre passerelle (si ça n'a pas été déjà fait lors de l'installation).
Sur Mandrake, Redhet ou Fedora, tout se passe dans le fichier /etc/sysconfig/network :
HOSTNAME=pingu
Sur Debian on trouvera le nom de machine uniquement dans le fichier /etc/hosts.
Sur Slackware, tout se passe dans le fichier /etc/HOSTNAME
:
darkstar.example.net
darkstar
.Enfin on définit les serveurs de noms qu'on utilisera pour les résolutions externes. Vous pouvez les ajouter dans le fichier /etc/resolv.conf :
nameserver 213.228.0.95
nameserver 213.228.0.96
Partager la connexion Internet
Nous allons utiliser pour cela iptables. Vous trouverez des informations détaillées sur iptables dans iptables par l'exemple. Il vous permet dans l'absolu de mettre en place une solution complète de firewall extrêmement efficace. Dans le cas qui nous intéresse nous allons l'utiliser uniquement pour réaliser le partage de connexion.
La plupart des distributions actuelles mettent à disposition un noyau 2.4 ou 2.6 qui comprend les modules nécessaires. Vous aurez également besoin des commandes iptables dans un package portant le même nom.
Pour le vérifier :
iptables-1.2.9-7.1.101mdk
Avant toute chose, il faudra s'assurer que la redirection de paquets d'information est possible. Pour cela, il faut que le fichier /proc/sys/net/ipv4/ip_forward
contiennent le chiffre 1 et non 0 qui le désactive :
Pour que cette modification soit activée à chaque redémarrage de la machine, nous allons renseigner le fichier /etc/sysctl.conf :
...
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
...
/etc/rc.d/rc.ip_forward
.Puis nous allons faire en sorte que la passerelle puisse non seulement cette redirection soit possible mais en plus qu'elle les dirige de l'extérieur vers les machines situées sur le réseau local. Reprenons notre schéma de départ au niveau de la passerelle :
Pour cela, nous allons utiliser la chaîne forward :
où eth0 est l'interface connectée vers l'extérieur. Cette commande va masquer les paquets. Ci-dessous un schéma vous représente le principe de fonctionnement de ce que nous venons de réaliser, à savoir le masquerading, ou, comment une machine ne disposant pas d'une adresse publique peut discuter avec l'extérieur, en utilisant la passerelle.
Principe de fonctionnement du masquerading
Là encore, le résultat ne durera que jusqu'au redémarrage de la machine. Pour activer cette règle de fonctionnement au démarrage de la machine, vous disposez de plusieurs solutions.
- utilisation du fichier
/etc/rc.local
: il est systématiquement lu à chaque démarrage, après lancement des services. Il suffit d'ajouter la commande iptables à exécuter :# cat "iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE" >> /etc/rc.local - utilisation du script de lancement de iptables : comme n'importe quel services, iptables est lancé au démarrage de la machine. Après avoir exécuté vos différentes règles iptables comme vu ci-dessus, il reste à sauvegarder la configuration ainsi obtenue : # service iptables save
Il vous reste à tester le bon fonctionnement du partage. Pour ceci il suffit depuis un client de lancer une URL à partir d'un navigateur ou d'exécuter la commande suivante :
PING google.fr (216.239.39.104) 56(84) bytes of data.
64 bytes from 216.239.39.104: icmp_seq=1 ttl=241 time=104 ms
64 bytes from 216.239.39.104: icmp_seq=2 ttl=241 time=105 ms
Configuration des clients
Après avoir mis en place la passerelle, nous allons configurer les clients de manière à ce qu'ils puissent accéder à Internet et résoudre les noms externes. Trois éléments sont donc à configurer :
- une adresse IP sur le réseau local (nous ferons la configuration pour l'adresse 192.168.0.2)
- une route par défaut : elle permet d'indiquer où doivent être dirigés les paquets IP non destinés aux machines locales (et donc pour Internet). Ils devront donc dans notre configuration être dirigés vers la passerelle (192.168.0.1).
- un ou plusieurs serveurs de noms qui permettront aux clients de résoudre les noms externes en adresse IP.
Postes clients sous Linux
Nous allons voir ici comment configurer les clients en mode graphique et en mode texte.
En mode texte
Pour configurer le client, sur des distributions comme MandrakeLinux, Fedora, Redhat, on procédera de la manière suivante :
- définition de l'adresse IP : l'adresse est attribué à une interface réseau. Si vous n'avez qu'une carte dans la machine ce sera probablement eth0. La configuration se trouve dans le fichier
/etc/sysconfig/network-scripts/ifcfg-eth0
:# cat /etc/sysconfig/network-scripts/ifcfg-eth0Si vous obtenez votre adresse IP grâce à un serveur DHCP sur la passerelle alors votre fichier sera :
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.0.2
NETMASK=255.255.255.0
NETWORK=192.168.0.0
BROADCAST=192.168.0.255
ONBOOT=yes
MII_NOT_SUPPORTED=no# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
MII_NOT_SUPPORTED=no - définition de la route par défaut : il suffit de modifier le fichier /etc/sysconfig/network : # cat /etc/sysconfig/network
HOSTNAME=pingu
NETWORKING=yes
GATEWAY=192.168.0.1 - définition des serveurs de noms : vous pouvez les ajouter dans le fichier /etc/resolv.conf : # cat /etc/resolv.conf
nameserver 213.228.0.95
nameserver 213.228.0.96
En ce qui concerne Debian, la configuration réseau se réalise dans le répertoire /etc/network
:
- Pour configurer une adresse statique, modifier le fichier
/etc/network/interfaces
de la manière suivante :iface etho inet staticSi vous disposez d'un serveur DHCP, il suffira de configurer en conséquence votre interface réseau :
address 192.168.0.3
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1iface eth0 inet dhcp - définition de la route par défaut : on l'a vu elle se réalise dans le fichier
interfaces
. - De la même façon que dans le paragraphe ci-dessus, les serveurs de noms utilisés sont spécifiés dans
/etc/resolv.conf
.
Enfin pour une distribution comme Slackware, la configuration réseau est réalisée dans le fichier /etc/rc.d/rc.inet1.conf
IPADDR[0]=""
NETMASK[0]=""
USE_DHCP[0]="yes"
DHCP_HOSTNAME[0]="machine3"
GATEWAY=""
Si la machine est configurée en DHCP, il suffit de modifier la ligne USE_DHCP[0]="yes"
En mode graphique
Si vous préférez utiliser des outils graphiques, reportez-vous [#graphgate là] pour effectuer la configuration des clients.
Postes clients sous Windows
Faites un clic droit sur le "Connexion Locale"
Puis choisissez "protocole TCP/IP" et remplissez les éléments nécessaires (adresse IP, masque, passerelle, serveur DNS)
Configuration à l'aide d'outils graphiques
Si vous souhaitez utiliser un outil graphique de configuration, vous avez à votre disposition des outils communs à toutes les distributions comme Webmin et d'autres spécifiques à chacune d'elles.
Outils génériques : Webmin
Installer webmin s'il ne l'est pas déjà :
Préparation... ##################################################
1:webmin ##################################################
Il vous suffit alors d'accéder à l'interface web de webmin : https://localhost:10000
.
La configuration de vos interfaces réseau se fait dans l'onglet "Réseau" puis le menu "Configuration Réseau".
Vous trouverez dans ces sous-menus les éléments nécessaires pour fixer des adresses IP vos interfaces mais aussi configurer le routage et les serveurs DNS à utiliser.
Il vous est alors possible d'éditer chacun de vos interfaces pour éventuellement les modifier.
Mandrake Control Center(mcc pour les intimes)
Il suffit de le lancer soit à partir du menu soit en tapant mcc
à partir d'une console. Le sous-menu "Réseau & Internet" propose de configurer le ou les interfaces réseau ainsi que le partage de la connexion. Il vous suffit de suivre les indications à l'écran. En ce qui concerne le partage de la connexion, il suffit de spécifier l'interface qui permet d'aller sur l'extérieur (ppp0 ou ethx)
Le sous-menu "Réseau & Internet" | |
Configurer ses interfaces réseau | Partager sa connexion |
netconf pour Slackware
Là encore il suffit de lancer la commande netconfig
à partir d'une console et de suivre les instructions pour configurer vos interfaces.
Debian
On peut utiliser des outils standards comme network-admin appartenant aux gnome-tools :
Debian dispose également d'outils comme etherconf.
Autres fonctionnalités de votre passerelle
Votre passerelle peut également vous permettre de centraliser certains services que nous allons lister rapidement. Il ne s'agit pas ici d'en décrire les arcanes mais de donner les liens nécessaires pour vous permettre de les mettre en place.
- Partager des fichiers : pour partager des fichiers entre vos machines vous allez pouvoir utiliser deux grands types de services
- samba : pour partager vos fichiers et/ou imprimantes avec les postes Windows et Linux
http://lea-linux.org/reseau/samba.html - ftp : pour mettre à disposition des fichiers grâce au protocole ftp. Vous disposez de plusieurs serveurs :
proftpd, pure-ftpd, vsftpd, ...
- samba : pour partager vos fichiers et/ou imprimantes avec les postes Windows et Linux
- Résoudre les noms en adresse IP sur le réseau local : tout comme pour le réseau Internet, vous pouvez mettre en place un serveur DNS qui permettra de résoudre les noms de machine en adresses IP et inversement
http://lea-linux.org/reseau/dns2.html - Accélérer la résolution des noms externes : il s'agit de mettre en place un serveur cache DNS
http://lea-linux.org/reseau/dns1.html - Mettre à disposition des pages web : installer un serveur Apache/MySQL/PHP
http://lea-linux.org/reseau/Apache_PHP_MySQL.html - Distribuer des messages : votre passerelle pourra être serveur de messagerie
http://lea-linux.org/reseau/postfix.html - Optimiser le partage de votre connexion : votre passerelle peut faire en sorte que votre connexion soit toujours optimum pour tout le monde
http://lea-linux.org/leapro/qos.html