Mettre en place sa passerelle sous Linux

De Lea Linux
Aller à la navigation Aller à la recherche


Mettre en place sa passerelle sous Linux

Mettre en place sa passerelle sous Linux

par Anne
Mise à jour pour la Slackware par Jonesy
Mise à jour Debian par Griffon

Où comment mettre en place un PC pour partager sa connexion et sécuriser son réseau


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.
  • 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.
  • 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.

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 :

# cat /etc/modprobe.conf alias eth0 ne2k-pci alias eth1 via-rhine ...

Vous pouvez aussi utiliser la commande lshw :

# lshw -C network -short
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 :

# cat /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.

Sur une Debian, la configuration réseau se fait dans le fichier /etc/network/interfaces


Sur une Slackware, la configuration réseau se fait dans le fichier /etc/rc.d/rc.inet1.conf.

# Config information for eth0:
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, Redhat ou Fedora, tout se passe dans le fichier /etc/sysconfig/network :

# cat /etc/sysconfig/network
HOSTNAME=pingu

Sur Debian on trouvera le nom de machine uniquement dans le fichier /etc/hosts.

# cat /etc/hosts 127.0.0.1 localhost 127.0.0.1 lealinux

Sur Slackware, tout se passe dans le fichier /etc/HOSTNAME :

# cat /etc/HOSTNAME
darkstar.example.net
Sachant que le hostname court sera 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 :

# cat /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 :

Pour Mandrake :
# rpm -q iptables
iptables-1.2.9-7.1.101mdk

Pour Debian :
# dpkg -l "*iptables*"

Pour Slackware :
# ls /var/log/packages/iptables*

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 :

# echo 1 > /proc/sys/net/ipv4/ip_forward

Pour que cette modification soit activée à chaque redémarrage de la machine, nous allons renseigner le fichier /etc/sysctl.conf :

# cat /etc/sysctl.conf
...
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
...
Pour Slackware, il faut rendre exécutable le fichier /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 :

# iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE

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
  • Sur une debian, /etc/rc.local n'existe pas. Il faut créer un script sous /etc/init.d/ (que l'on nommera pas exemple ip_forward) qui ressemblera à ça :
# !/bin/sh
iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE

Il ne reste plus qu'à le rendre exécutable :

# chmod 755 /etc/init.d/ip_forward

et à l'ajouter aux runlevels de démarrage :

# update-rc.d ip_forward defaults



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
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 :

  1. 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-eth0
    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
    Si vous obtenez votre adresse IP grâce à un serveur DHCP sur la passerelle alors votre fichier sera :
    # cat /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    BOOTPROTO=dhcp
    ONBOOT=yes
    MII_NOT_SUPPORTED=no
  2. 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
  3. 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 :

  1. Pour configurer une adresse statique, modifier le fichier /etc/network/interfacesde la manière suivante :
    iface etho inet static
    address 192.168.0.3
    netmask 255.255.255.0
    network 192.168.0.0
    broadcast 192.168.0.255
    gateway 192.168.0.1
    Si vous disposez d'un serveur DHCP, il suffira de configurer en conséquence votre interface réseau :
    iface eth0 inet dhcp
  2. définition de la route par défaut : on l'a vu elle se réalise dans le fichier interfaces.
  3. 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

# Config information for eth0:
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à :

# urpmi webmin
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)

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.

Autres ressources



@ Retour à la rubrique Réseau

Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Anne le 07/02/2005.

Copyright

© 07/02/2005 Anne Nicolas

Creative Commons License
Creative Commons Attribution iconCreative Commons Share Alike icon
Ce document est publié sous licence Creative Commons
Attribution, Partage à l'identique 4.0 :
https://creativecommons.org/licenses/by-sa/4.0/