Par Serge.
Partager sa connexion Internet
Ce document est sous licence Licence pour Documents Libres de la guilde des doctorants.
Si vous avez plusieurs ordinateurs à la maison (ou au travail dans une petite société, ...) et une connexion internet haut débit (ou même bas débit d'ailleur), vous souhaitez surement partager cette connexion Internet avec tout les ordinateurs. Et bien sur, la Slackware a de base tout les outils pour faire cela. Un simple poste de travail trés peu puissant est largement suffisant pour accomplir cette tâche, un vieux Pentium par exemple avec 64Mo de mémoire (32Mo peuvent convenir mais pour plus de confort je vous conseille 64).
Nous souhaitons que ce partage de connexion internet soit totalement transparent pour les postes de travail, donc de n'avoir quasiement aucune configuration à faire sur ces derniers, et que ce partage de connexion soit sécurisé, c'est à dire que nous essayons dans la mesure du possible qu'aucun pirate externe puisse s'introduire sur notre réseau local.
Je suppose tout au long de cet article que la connexion internet de la passerelle est configurée et fonctionelle, c'est à dire que cette machine posséde un modem ou une carte réseau configuré pour une connection directe à l'internet. Cette passerelle posséde aussi une carte réseau libre non configurée ou déjà configurée pour un réseau local avec les autres ordinateurs qui vont utiliser le partage de connexion Internet.
Comme nous l'avons mentioné dans l'introduction, nous souhaitons que le réseau local demande le moins possible de configuration. Pour cela nous allons choisir le protocole DHCP pour configurer tout les postes de travail du réseau.
Nous devons aussi déterminer notre plan d'adressage réseau. A titre d'exemple pour cet article, voici le plan d'adressage réseau que je défini:
La configuration est donc extrémement simple, vous devez simplement configurer la connexion réseau de chaque poste de travail en DHCP. Sur les postes en Slackware 10.0 et supérieur, vous devez indiquer dans le fichier /etc/rc.d/rc.inet1.conf
, par exemple pour la 1er carte réseau (0 donc):
# /etc/rc.d/rc.inet1.conf # # This file contains the configuration settings for network interfaces. # If USE_DHCP[interface] is set to "yes", this overrides any other settings. # If you don't have an interface, leave the settings null (""). # Config information for eth0: IPADDR[0]="" NETMASK[0]="" USE_DHCP[0]="yes" DHCP_HOSTNAME[0]="" # Config information for eth1: IPADDR[1]="" NETMASK[1]="" USE_DHCP[1]="" DHCP_HOSTNAME[1]="" # Config information for eth2: IPADDR[2]="" NETMASK[2]="" USE_DHCP[2]="" DHCP_HOSTNAME[2]="" # Config information for eth3: IPADDR[3]="" NETMASK[3]="" USE_DHCP[3]="" DHCP_HOSTNAME[3]="" # Default gateway IP address: GATEWAY="" # Change this to "yes" for debugging output to stdout. Unfortunately, # /sbin/hotplug seems to disable stdout so you'll only see debugging output # when rc.inet1 is called directly. DEBUG_ETH_UP="no"
où X est le numéro de la carte réseau connectée au réseau local. Pour d'autres distribution réseau, consulter son manuel afin de configurer la carte réseau en DHCP. Pour les postes Windows, vous devez choisir Configuration automatique ou Obtenir automatiquement une adresse IP. Vous n'avez rien d'autre à configurer sur les postes de travail.
Nous devons configurer la passerelle afin qu'elle configure automatiquement tout poste de travail qui se brancherait physiquement sur le réseau local. Pour cela nous devons tout d'abord configurer la carte réseau de la passerelle avec l'adresse définie au dessus. Dans le cas d'une slackware 10.0, si on suppose que la 1er carte réseau (donc de numéro 0) est celle du réseau local, nous devons modifier le fichier /etc/rc.d/rc.inet1.conf
de cette façon:
# /etc/rc.d/rc.inet1.conf # # This file contains the configuration settings for network interfaces. # If USE_DHCP[interface] is set to "yes", this overrides any other settings. # If you don't have an interface, leave the settings null (""). # Config information for eth0: IPADDR[0]="192.168.10.254" NETMASK[0]="255.255.255.0" USE_DHCP[0]="" DHCP_HOSTNAME[0]="" # Config information for eth1: IPADDR[1]="" NETMASK[1]="" USE_DHCP[1]="" DHCP_HOSTNAME[1]="" # Config information for eth2: IPADDR[2]="" NETMASK[2]="" USE_DHCP[2]="" DHCP_HOSTNAME[2]="" # Config information for eth3: IPADDR[3]="" NETMASK[3]="" USE_DHCP[3]="" DHCP_HOSTNAME[3]="" # Default gateway IP address: GATEWAY="" # Change this to "yes" for debugging output to stdout. Unfortunately, # /sbin/hotplug seems to disable stdout so you'll only see debugging output # when rc.inet1 is called directly. DEBUG_ETH_UP="no"
La configuration réseau propre à la passerelle est finit, vous pouvez la faire prendre en compte en lançant le script de configuration réseau en root via la commande: /etc/rc.d/rc.inet1 eth0_restart
. La configuration réseau de la passerelle est finit, nous allons maintenant configurer son serveur DHCP qui va distribuer les adresses réseaux aux autres ordinateurs.
La configuration du serveur DHCP se trouve dans le fichier /etc/dhcpd.conf
. Pour être fidèle à la configuration réseau que nous avons ennoncé en début d'article, ce fichier doit contenir:
# dhcpd.conf # # Configuration file for salckFR # This is just an example # default-lease-time 6000; max-lease-time 72000; subnet 192.168.10.254 netmask 255.255.255.0 { range 192.168.10.1 192.168.10.200; option routers 192.168.10.254; option domain-name-servers 80.10.10.1, 80.10.10.2; option domain-name "wanadoo.fr"; }
Un peu d'explications sur ce fichier:
default-lease-time 6000;
: Définit le temps en seconde par défaut pour lequel une adresse IP est distribuée (6000s pour notre exemple)max-lease-time 72000;
: Définit le temps maximum en seconde pour lequel une adresse est distribuée.subnet 192.168.10.0 netmask 255.255.255.0
: Définit le sous réseau (192.168.10.0) et le masque (255.255.255.0) que le serveur DHCP va configurer. Le reste des options concernant ce sous réseau sont délimitées par les {}.range 192.168.10.1 192.168.10.200;
: Définit l'étendu DHCP, c'est à dire la plage d'adresse pour laquelle le serveur DHCP va distribuer les IPs (de 192.168.10.1 à 192.168.10.200). Vous vous apercevez que par rapport au sous réseau définit, notre serveur DHCP ne distribue pas les adresses situées entre 192.168.10.200 et 192.168.0.253 (.254 étant déjà occupée par la passerelle elle même). Cela est fait volontairement, dans le cas ou l'on aurait des équipements ou des machines qui soit ne sont pas capable d'utiliser le protocole DHCP pour récupérer une adresse IP, soit sont configurés volontairement de maniére statique, c'est à dire qui ne dépendent pas du serveur DHCP.Ces équipement pourront alors utiliser la plage d'adresse réservé à cet effet, de 192.168.10.200 à 192.168.0.253option routers 192.168.0.254;
: Définit le routeur que nous indiquons aux postes du sous réseaux. Ici c'est nous même, 192.168.10.254 ce qui est normal vu que nous sommes la passerelle internet.option domain-name-servers 80.10.10.1, 80.10.10.2;
:Définit les adresses IPs (où les noms) des serveurs DNS que nous allons indiquer aux postes du réseaux. Vous devez indiquer ceux de votre fournisseur d'accés à Internet, j'ai mis pour l'exemple des adresses IPs totalement au hasard. Demandez ces informations à votre fournisseur d'accès à Internet si vous le les connaissez pas.option domain-name "wanadoo.fr";
: Définit le nom de domaine local ou celui de votre fournisseur d'accès à Internet si vous n'avez pas de nom de domaine pour votre réseau local.Il existe bien d'autres options de configuration pour les serveurs DHCP, mais nous ne les détailleront pas ici car cela depasse le cadre de l'article.
C'est ici que nous allons partager et sécuriser la connexion internet. Tout d'abord nous devons autoriser la passerelle à forwarder les paquets réseaux, c'est à dire l'autoriser a faire transiter les paquets réseaux entre l'extérieur (l'Internet) et l'intérieur (le réseau local formé par les postes de travail).
Pour cela, il suffit de rendre executable le script d'init correspondant, via la commande, en tant que root:
chmod u+x /etc/rc.d/rc.ip_forward
De ce fait, l'activation se fera automatiquement au démarrage. Vous pouvez l'activer manuellement immédiatement par la commande /etc/rc.d/rc.ip_forward start
.
Chapitre à mettre à jour
Maintenant que vous partagez une seule connexion avec plusieurs autres PCs, il peut être avantageux d'optimiser l'utilisation de cette connexion. Pour ce faire nous allons utiliser ce que l'on appelle un QoS, pour Quality of Services. Je ne rentrerai pas dans le détail du fonctionnement d'un QoS et de plus nous allons utiliser la méthode la plus approriée pour un cas d'utilisation simple, à savoir que l'on veut :
Pour ce faire, dans Networking options
> Qos and/or fair queueing
de la configuration du noyau, vérifez que :
QoS and/or fair queueing
est dans le noyau.CBQ packet scheduler
est en module.HTB packet scheduler
est en module.CSZ packet scheduler
est en module.The simplest PRIO pseudoschedule
est en module.RED queue
est en module.SFQ queue
est en module.TBF queue
est en module.Ingress Qdisc
est en module.QoS support
est dans le noyau.Rate estimator
est dans le noyau.Packet classifier API
est dans le noyau.TC index classifier
est en module.Routing table based classifier
est en module.Firewall based classifier
est en module.U32 classifier
est en module.Special RSVP classifier
est en module.Special RSVP classifier for IPv6
est en module.Si besoin recompilez le noyau, mais normallement avec les noyaux de la 10.0 et de la -current, tout est déjà dans le noyau ou en module.
Vérifiez que le package iproute2
est installé. Si ce n'est pas le cas il est dans les packages officiels de la série n
.
Maintenant nous téléchargeons le script de gestion de la bande passante WonderSharper. Une fois téléchargé, en tant que root
installer-le là où vous voulez. Personnellement je l'ai installé sous /etc/wondershaper-<version>
en faisant ainsi :
# cd /etc # tar -xvzf wondershaper-<version>.tar.gz
Dans le répertoire d'installation, modifier le fichier wsharper.htb
(ou wsharper
, plus testé mais utilise une méthode différente et moins performante) afin de supprimer les lignes en vertes et afin d'indiquer les spécificités de votre ligne, ici une ligne adsl 512/128 en éthernet sur eth0 :
[...] # Set the following values to somewhat less than your actual download # and uplink speed. In kilobits. Also set the device that is to be shaped. DOWNLINK=512 UPLINK=128 DEV=eth0 [...] # Now remove the following two lines :-) echo Please read the documentation in 'README' first :-\) exit [...]
Une fois cela fait, il ne reste plus qu'à lancer le script wsharper.htb
au moment de la connexion Internet. Donc une solution est de l'ajouter dans le script de connexion ou dans le /etc/ppp/ip-up.
Pour en savoir plus sur le QoS vous pouvez commencer par lire QoS/Gestion de la bande passante sous Linux sur Léa-Linux. Ensuite, à vous d'approfondir avec Internet.
Thèmes : #articles #local #reseau #securite #serge #services
Sauf indication contraire, ce document est placé sous licence CC-BY-SA 3.0.