« Mettre en place sa passerelle sous Linux » : différence entre les versions
(conversion de la documentation originale de Léa par HTML::WikiConverter) |
Aucun résumé des modifications |
||
(14 versions intermédiaires par 7 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
[[Category:Réseau local]] | [[Category:Réseau local]] | ||
= Mettre en place sa passerelle sous Linux = | = Mettre en place sa passerelle sous Linux = | ||
Mettre en place sa passerelle sous Linux | |||
par [[Utilisateur:Ennael|Anne]]<br /> | |||
Mise à jour pour la Slackware par [[Utilisateur:Jonesy|Jonesy]]<br /> | |||
Mise à jour Debian par [[Utilisateur:Griffon|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. | 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. | ||
Ligne 25 : | Ligne 32 : | ||
'''<u>Schéma de notre configuration réseau</u>''' | '''<u>Schéma de notre configuration réseau</u>''' | ||
== Mise en place de la passerelle == | == Mise en place de la passerelle == | ||
Ligne 34 : | Ligne 39 : | ||
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 : | 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.<br /> | * '''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.<br /> | ||
* '''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.<br /> | * '''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.<br /> | ||
* '''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.<br /> | * '''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.<br /> | ||
les liens utiles : | les liens utiles : | ||
Ligne 45 : | Ligne 50 : | ||
* [http://lea-linux.org/hardware/pack-xtense.html Speedtouch USB ] | * [http://lea-linux.org/hardware/pack-xtense.html Speedtouch USB ] | ||
* [http://lea-linux.org/hardware/sagem.html modem Sagem F@st 800] | * [http://lea-linux.org/hardware/sagem.html modem Sagem F@st 800] | ||
* [http://eagle-usb. | * [http://eagle-usb.org Eagle USB] | ||
=== Configuration des interfaces === | === Configuration des interfaces === | ||
Ligne 61 : | Ligne 66 : | ||
Vous pouvez aussi utiliser la commande lshw : | Vous pouvez aussi utiliser la commande lshw : | ||
<div class="code"><nowiki># lshw -C network -short</nowiki><br /> H/ | <div class="code"><nowiki># lshw -C network -short</nowiki><br /> H/W path Device Class Description<br /> =======================================================<br /> /0/e0000000/6 '''eth1''' network VT6102 [Rhine-II]<br /> /0/e0000000/8 '''eth0''' network RTL-8029(AS)</div> | ||
==== Fixer une adresse IP ==== | ==== 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. | 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 : | Pour configurer la passerelle, sur des distributions comme '''MandrakeLinux, Fedora, Redhat''', on procédera de la manière suivante : | ||
Ligne 75 : | Ligne 78 : | ||
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. | 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. | ||
</div><div class="deb"> Sur une '''Debian''', la configuration réseau se fait dans le fichier | </div><div class="deb"> Sur une '''Debian''', la configuration réseau se fait dans le fichier <tt>/etc/network/interfaces</tt> </div> | ||
<br /> | <br /> | ||
Sur une '''Slackware''', la configuration réseau se fait dans le fichier <tt>/etc/rc.d/rc.inet1.conf</tt>.<br /><div class="code"><nowiki># Config information for eth0:</nowiki><br /> IPADDR[0]="192.168.0.3"<br /> NETMASK[0]="192.168.0.0"<br /> USE_DHCP[0]="no"<br /> DHCP_HOSTNAME[0]="machine3"<br /><br /> GATEWAY="192.168.0.1"</div> | |||
==== Nom de machine et résolution ==== | ==== Nom de machine et résolution ==== | ||
Ligne 85 : | Ligne 88 : | ||
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). | 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 : | |||
Sur '''Mandrake, | |||
<div class="code"><nowiki># cat /etc/sysconfig/network</nowiki><br /> HOSTNAME=pingu</div> </div><div class="deb"> | <div class="code"><nowiki># cat /etc/sysconfig/network</nowiki><br /> HOSTNAME=pingu</div> </div><div class="deb"> | ||
Ligne 93 : | Ligne 94 : | ||
Sur '''Debian''' on trouvera le nom de machine uniquement dans le fichier /etc/hosts. | Sur '''Debian''' on trouvera le nom de machine uniquement dans le fichier /etc/hosts. | ||
<div class="code"> # | <div class="code"> # cat /etc/hosts 127.0.0.1 localhost 127.0.0.1 lealinux</div> </div><div class="slack"> | ||
Sur '''Slackware''', tout se passe dans le fichier < | Sur '''Slackware''', tout se passe dans le fichier <tt>/etc/HOSTNAME</tt> : | ||
<div class="code"><nowiki># cat /etc/HOSTNAME</nowiki><br /> darkstar.example.net </div> Sachant que le hostname ''court'' sera < | <div class="code"><nowiki># cat /etc/HOSTNAME</nowiki><br /> darkstar.example.net </div> Sachant que le hostname ''court'' sera <tt>darkstar</tt>.<br /> </div> | ||
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 : | 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 : | ||
Ligne 111 : | Ligne 112 : | ||
<div class="mdk"> Pour '''Mandrake :'''<br /><div class="code"> # rpm -q iptables<br /> iptables-1.2.9-7.1.101mdk<br /></div><br /> </div><div class="deb"> Pour '''Debian :'''<br /><div class="code"> # dpkg -l "*iptables*"</div><br /> </div><div class="slack"> Pour '''Slackware :'''<br /><div class="code"> # ls /var/log/packages/iptables*</div> </div> | <div class="mdk"> Pour '''Mandrake :'''<br /><div class="code"> # rpm -q iptables<br /> iptables-1.2.9-7.1.101mdk<br /></div><br /> </div><div class="deb"> Pour '''Debian :'''<br /><div class="code"> # dpkg -l "*iptables*"</div><br /> </div><div class="slack"> Pour '''Slackware :'''<br /><div class="code"> # ls /var/log/packages/iptables*</div> </div> | ||
Avant toute chose, il faudra s'assurer que la''' redirection de paquets d'information''' est possible. Pour cela, il faut que le fichier < | Avant toute chose, il faudra s'assurer que la''' redirection de paquets d'information''' est possible. Pour cela, il faut que le fichier <tt>/proc/sys/net/ipv4/ip_forward</tt> contiennent le chiffre 1 et non 0 qui le désactive : | ||
<div class="code"><nowiki># echo 1 > /proc/sys/net/ipv4/ip_forward</nowiki></div> | <div class="code"><nowiki># echo 1 > /proc/sys/net/ipv4/ip_forward</nowiki></div> | ||
Ligne 117 : | Ligne 118 : | ||
Pour que cette modification soit activée à chaque redémarrage de la machine, nous allons renseigner le fichier /etc/sysctl.conf : | Pour que cette modification soit activée à chaque redémarrage de la machine, nous allons renseigner le fichier /etc/sysctl.conf : | ||
<div class="code"><nowiki># cat /etc/sysctl.conf</nowiki><br /> ...<br /> # Controls IP packet forwarding<br /> net.ipv4.ip_forward = '''1'''<br /> ...</div><div class="slack"> Pour '''Slackware''', il faut rendre exécutable le fichier < | <div class="code"><nowiki># cat /etc/sysctl.conf</nowiki><br /> ...<br /> # Controls IP packet forwarding<br /> net.ipv4.ip_forward = '''1'''<br /> ...</div><div class="slack"> Pour '''Slackware''', il faut rendre exécutable le fichier <tt>/etc/rc.d/rc.ip_forward</tt>.<br /> </div> | ||
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 : | 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 : | Pour cela, nous allons utiliser la chaîne forward : | ||
Ligne 131 : | Ligne 130 : | ||
'''<u>Principe de fonctionnement du masquerading</u>''' | '''<u>Principe de fonctionnement du masquerading</u>''' | ||
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 <tt>/etc/rc.local</tt> : il est systématiquement lu à chaque démarrage, après lancement des services. Il suffit d'ajouter la commande iptables à exécuter :<br /><div class="code"><nowiki># cat "iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE" >> /etc/rc.local</nowiki></div> | |||
* 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 : <div class="code"><nowiki># service iptables save</nowiki></div> | * 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 : <div class="code"><nowiki># service iptables save</nowiki></div> | ||
* 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 : | |||
<div class="code"><nowiki># !/bin/sh</nowiki><br /> iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE</div> | |||
Il ne reste plus qu'à le rendre exécutable : | |||
<div class="code"><nowiki># chmod 755 /etc/init.d/ip_forward</nowiki></div> | |||
et à l'ajouter aux runlevels de démarrage : | |||
<div class="code"><nowiki># update-rc.d ip_forward defaults</nowiki></div> | |||
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 : | 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 : | ||
Ligne 160 : | Ligne 173 : | ||
Pour configurer le client, sur des distributions comme '''MandrakeLinux, Fedora, Redhat''', on procédera de la manière suivante : | 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 < | # 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 <tt>/etc/sysconfig/network-scripts/ifcfg-eth0</tt> : <div class="code"><nowiki># cat /etc/sysconfig/network-scripts/ifcfg-eth0</nowiki><br /> DEVICE=eth0<br /> BOOTPROTO=static<br /> IPADDR=192.168.0.2<br /> NETMASK=255.255.255.0<br /> NETWORK=192.168.0.0<br /> BROADCAST=192.168.0.255<br /> ONBOOT=yes<br /> MII_NOT_SUPPORTED=no</div> Si vous obtenez votre adresse IP grâce à un serveur DHCP sur la passerelle alors votre fichier sera : <div class="code"><nowiki># cat /etc/sysconfig/network-scripts/ifcfg-eth0</nowiki><br /> DEVICE=eth0<br /> BOOTPROTO=dhcp<br /> ONBOOT=yes<br /> MII_NOT_SUPPORTED=no</div> | ||
# définition de la route par défaut : il suffit de modifier le fichier /etc/sysconfig/network : <div class="code"><nowiki># cat /etc/sysconfig/network</nowiki><br /> HOSTNAME=pingu<br /> NETWORKING=yes<br /> GATEWAY=192.168.0.1</div> | # définition de la route par défaut : il suffit de modifier le fichier /etc/sysconfig/network : <div class="code"><nowiki># cat /etc/sysconfig/network</nowiki><br /> HOSTNAME=pingu<br /> NETWORKING=yes<br /> GATEWAY=192.168.0.1</div> | ||
# définition des serveurs de noms : vous pouvez les ajouter dans le fichier /etc/resolv.conf : <div class="code"><nowiki># cat /etc/resolv.conf</nowiki><br /> nameserver 213.228.0.95<br /> nameserver 213.228.0.96</div> | # définition des serveurs de noms : vous pouvez les ajouter dans le fichier /etc/resolv.conf : <div class="code"><nowiki># cat /etc/resolv.conf</nowiki><br /> nameserver 213.228.0.95<br /> nameserver 213.228.0.96</div> | ||
Ligne 166 : | Ligne 179 : | ||
</div><div class="deb"> | </div><div class="deb"> | ||
En ce qui concerne '''Debian''', la configuration réseau se réalise dans le répertoire < | En ce qui concerne '''Debian''', la configuration réseau se réalise dans le répertoire <tt>/etc/network</tt> : | ||
# Pour configurer une adresse statique, modifier le fichier < | # Pour configurer une adresse statique, modifier le fichier <tt>/etc/network/interfaces</tt>de la manière suivante : <div class="code"> iface etho inet static<br /> address 192.168.0.3<br /> netmask 255.255.255.0<br /> network 192.168.0.0<br /> broadcast 192.168.0.255<br /> gateway 192.168.0.1</div> Si vous disposez d'un serveur DHCP, il suffira de configurer en conséquence votre interface réseau : <div class="code">iface eth0 inet dhcp</div> | ||
# définition de la route par défaut : on l'a vu elle se réalise dans le fichier < | # définition de la route par défaut : on l'a vu elle se réalise dans le fichier <tt>interfaces</tt>. | ||
# De la même façon que dans le paragraphe ci-dessus, les serveurs de noms utilisés sont spécifiés dans < | # De la même façon que dans le paragraphe ci-dessus, les serveurs de noms utilisés sont spécifiés dans <tt>/etc/resolv.conf</tt>. | ||
</div><div class="slack"> | </div><div class="slack"> | ||
Enfin pour une distribution comme '''Slackware''', la configuration réseau est réalisée dans le fichier < | Enfin pour une distribution comme '''Slackware''', la configuration réseau est réalisée dans le fichier <tt>/etc/rc.d/rc.inet1.conf</tt> | ||
<div class="code"><nowiki># Config information for eth0:</nowiki><br /> IPADDR[0]=""<br /> NETMASK[0]=""<br /> USE_DHCP[0]="yes"<br /> DHCP_HOSTNAME[0]="machine3"<br /><br /> GATEWAY=""</div> | <div class="code"><nowiki># Config information for eth0:</nowiki><br /> IPADDR[0]=""<br /> NETMASK[0]=""<br /> USE_DHCP[0]="yes"<br /> DHCP_HOSTNAME[0]="machine3"<br /><br /> GATEWAY=""</div> | ||
Si la machine est configurée en DHCP, il suffit de modifier la ligne < | Si la machine est configurée en DHCP, il suffit de modifier la ligne <tt>USE_DHCP[0]="yes"</tt> | ||
</div> | </div> | ||
Ligne 189 : | Ligne 202 : | ||
Faites un clic droit sur le "Connexion Locale" | 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) | Puis choisissez "protocole TCP/IP" et remplissez les éléments nécessaires (adresse IP, masque, passerelle, serveur DNS) | ||
Ligne 202 : | Ligne 213 : | ||
Installer webmin s'il ne l'est pas déjà : | Installer webmin s'il ne l'est pas déjà : | ||
<div class="code"> # | <div class="code"> # urpmi webmin<br /> Préparation... ##################################################<br /> 1:webmin ##################################################</div> | ||
Il vous suffit alors d'accéder à l'interface web de webmin : < | Il vous suffit alors d'accéder à l'interface web de webmin : <tt>https://localhost:10000</tt>. | ||
La configuration de vos interfaces réseau se fait dans l'onglet "Réseau" puis le menu "Configuration Réseau". | 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. | 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. | Il vous est alors possible d'éditer chacun de vos interfaces pour éventuellement les modifier. | ||
Ligne 220 : | Ligne 227 : | ||
=== Mandrake Control Center(mcc pour les intimes) === | === Mandrake Control Center(mcc pour les intimes) === | ||
Il suffit de le lancer soit à partir du menu soit en tapant < | Il suffit de le lancer soit à partir du menu soit en tapant <tt>mcc</tt> à 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)<br /> | ||
=== netconf pour Slackware === | === netconf pour Slackware === | ||
Là encore il suffit de lancer la commande < | Là encore il suffit de lancer la commande <tt>netconfig</tt> à partir d'une console et de suivre les instructions pour configurer vos interfaces. | ||
=== Debian === | === Debian === | ||
On peut utiliser des outils standards comme '''network-admin''' appartenant aux gnome-tools : | On peut utiliser des outils standards comme '''network-admin''' appartenant aux gnome-tools : | ||
Debian dispose également d'outils comme '''etherconf'''. | Debian dispose également d'outils comme '''etherconf'''. | ||
== Autres fonctionnalités de votre passerelle == | == Autres fonctionnalités de votre passerelle == | ||
Ligne 266 : | Ligne 248 : | ||
* '''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<br />http://lea-linux.org/reseau/dns2.html | * '''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<br />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<br />http://lea-linux.org/reseau/dns1.html | * '''Accélérer la résolution des noms externes''' : il s'agit de mettre en place un serveur cache DNS<br />http://lea-linux.org/reseau/dns1.html | ||
* '''Configurer automatiquement le réseaux des PC du réseaux''' : il s'agit de mettre en place un serveur DHCP<br />http://lea-linux.org/reseau/dhcp.html | |||
* '''Mettre à disposition des pages web''' : installer un serveur Apache/MySQL/PHP<br />http://lea-linux.org/reseau/Apache_PHP_MySQL.html | * '''Mettre à disposition des pages web''' : installer un serveur Apache/MySQL/PHP<br />http://lea-linux.org/reseau/Apache_PHP_MySQL.html | ||
* '''Distribuer des messages''' : votre passerelle pourra être serveur de messagerie<br />http://lea-linux.org/reseau/postfix.html | * '''Distribuer des messages''' : votre passerelle pourra être serveur de messagerie<br />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<br />http://lea-linux.org/leapro/qos.html | * '''Optimiser le partage de votre connexion''' : votre passerelle peut faire en sorte que votre connexion soit toujours optimum pour tout le monde<br />http://lea-linux.org/leapro/qos.html | ||
=Autres ressources= | |||
* [http://rv101.dyndns.org/~rv101/linux/gateway.pdf La version pdf de ce HOWTO] | |||
<br/> | |||
<br/> | |||
'''<b>[[Réseau|@ Retour à la rubrique Réseau]]</b>''' | |||
<br/> | |||
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. | |||
{{Copy|07/02/2005|[[Utilisateur:Ennael|Anne Nicolas]]|CC-BY-SA}} | |||
[[Catégorie:Réseau]] |
Dernière version du 14 décembre 2023 à 21:23
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 :
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.
Sur une Slackware, la configuration réseau se fait dans le fichier /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, Redhat 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
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
...
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
- 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 :
iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
Il ne reste plus qu'à le rendre exécutable :
et à l'ajouter aux runlevels de démarrage :
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/interfacesde 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)
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 - Configurer automatiquement le réseaux des PC du réseaux : il s'agit de mettre en place un serveur DHCP
http://lea-linux.org/reseau/dhcp.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
Autres ressources
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
Ce document est publié sous licence Creative Commons Attribution, Partage à l'identique 4.0 : https://creativecommons.org/licenses/by-sa/4.0/ |