Bienvenue sur Racstore

Site de Tuto - Mémo informatique

Partager une connexion internet sous linux

Le but de cette manipulation est de permettre aux machines d'un réseau local d’accéder à internet (schéma ci-dessous).

Partage de connexion
Partage de connexion

Prérequis :

Pour se faire, la machine LINUX_SRV va être transformée en routeur (passerelle entre les deux réseaux).

Le mécanisme qui sera utilisé est le NAT (Network Address Translation ).


Le PC LINUX_SRV possède 2 interfaces réseaux : ENP4S0 et ENP5S0.
L'interface de sortie ENP5S0 (externe) est directement connectée à l'interface interne de la BOX_INTERNET.
Elle aura une adresse ip fixe de 192.168.1.9. Cette adresse a été configurée dans la box routeur.

Pour fixer une adresse ip à un périphérique du réseau local, aller dans la partie configuration dhcp de la box routeur internet, entrez l'adresse MAC du périphérique en question, l'ip à attribuer et un nom.

Remarque :

L'adresse ip attribuée à ENP5S0 ne doit pas être obligatoirement dans la plage ip du serveur dhcp de la box internet.

L’interface réseau interne ENP4S0 quant à elle, sera aussi configurée en ip fixe (10.0.0.50).
Elle sera directement connectée au réseau local (réseau 10.0.0.0) et servira de passerelle pour les machines du réseau local (permet aux pc du réseau local de sortir vers l’extérieur)

L'ip interne (interface avec le réseau local) de la box routeur internet est le: 192.168.1.254 (réseau 192.168.1.0).
PC1, PC2 et PC3 sont des machines du réseau local.
Ces machines seront configurées manuellement (ip fixe). Adresse Ip, Masque de sous-réseau, Passerelle par défaut et Serveur DNS.
On verra dans un prochain tuto, l'installation d'un serveur dhcp.

Configuration en ip statique de la passerelle LINUX_SRV

Pour configurer une interface réseau, ouvrez le fichier de configuration interfaces avec un éditeur (nano ou vi par exemple) en mode administrateur.
Le fichier de configuration se trouve dans le dans le répertoire /etc/network .

nano /etc/network/interfaces
	
auto lo
iface lo inet loopback

#/========================\#
#Configuration ip de l'interface externe de la passerelle LINUX_SRV 
#\========================/#	
allow-hotplug enp5s0
iface enp5s0 inet static
address 192.168.1.50
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.254 (ip de box routeur internet)
#dns-nameservers 192.168.1.254 (Remarque: le package resolvconf
n'est pas installé, donc cette option n'est pas prise en compte ici.)

#dns-nameservers 8.8.8.8 (Sans effet ici.)


#/========================\#
#Configuration ip de l'interface interne de la passerelle LINUX_SRV
#\========================/#
allow-hotplug enp4s0
iface enp4s0 inet static
address 10.0.0.50
network 10.0.0.0
netmask 255.255.255.0
broadcast 10.0.0.255

Quelques explications concernant les options

allow-hotplug enp5s0 signifie que la carte sera configurée (attribution adresse ip) au démarrage de la machine (câble branché ou non). Cette option permet aussi de brancher le câble Ethernet au réseau à tout moment.

auto enp5s0 signifie que l'interface réseau sera configurée au démarrage (câble branché ou non). Cette option permet aussi un branchement à chaud.

Remarque :

#allow-hotplug enp5s0 et #auto enp5s0 (câble branché ou non)
Quand ces deux options ne sont pas présentes, dans ce cas, la carte sera tout simplement désactivée. On pourra le vérifie avec la commande /sbin/ifconfig (carte non présente) ou ip addr (state down).

Quelques commandes indispensables

La commande /sbin/ifconfig ou ip addr permet de visualiser les cartes Ethernet et leurs configurations ip.

La commande ifdown eth0 et ifup eth0 permet respectivement de désactiver et d'activer une carte réseau.

La commande,

/etc/init.d/networking stop/start/­restart
ou
 /sbin/service networking stop/st­art/restart,
permet d'arreter / démarrer et de relancer les services réseaux (internet, routage )

Activation du routage dans le noyau

N. B. :
Il est très important d'activer le routage dans le noyau de la passerelle LINUX SRV, sinon aucune communication ne pourra se faire entre les ordinateurs du réseau local et l’interface interne box internet, ou entre les postes clients des différents réseaux locaux.

La commande pour activer le routage est,

echo 1 > /proc/sys/net/ipv4/­ip_forward
Taper la commande,
cat /proc/sys/net/ipv4/ip_forward,
pour voir que le routage est bien activé.
Par défaut, le routage est désactivé dans le noyau linux (valeur 0).

Noter au passage, qu’il n’est pas nécessaire d’activer le routage, pour faire communiquer des périphériques dans un même réseau local (même classe IP).

Attention :

Au prochain reboot du serveur LINUX SRV, le routage sera de nouveau désactivé (0).
on verra plus tard comment rendre permanant l’activation du routage dans le noyau.

Vu que les adresses du réseau local (10.0.0.0) ne sont pas routables (visible de l’extérieur), l’activation seule du routage, ne permettra pas aux machines locales d’accéder à internet.

Règles Iptables pour le partage de connexion

Pour résoudre ce problème, on va appliquer une règle qui va masquer les adresses du réseau local.

Cette partie sera traitée par le firewall ou pare-feu (iptables).
Iptable est normalement installé par défaut sous Debian 10. Sinon, taper la commande
apt-get install iptables en root pour l’installer.

La règle à appliquer pour le partage de connexion est,

iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o enp5s0 -j SNAT --to-source 192.168.1.9
Les deux commandes ci-dessous fonctionnent aussi, mais à utiliser plutôt dans une configuration DHCP où l'interface de sortie de la passerelle (enp5s0) obtiendra sa configuration IP dynamiquement.
Jeter un coup d'oeil ici pour plus d'explications.

iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o enp5s0 -j MASQUERADE,
pour spécifier un sous-réseau particulier.
Ou
iptables -t nat -A POSTROUTING  -o enp5s0 -j MASQUERADE, 
si on veut faire du Nat pour tous les différents sous-réseau.
Pour supprimer cette règle, il suffit de taper,
 /sbin/iptables -t nat -F
N.B :
Les deux commandes font du source Nat (SNAT). C'est à dire que l'adresse source des postes du réseau local (10.0.0.0./24, non routable) sont remplacées par l’adresse de la passerelle / firewall (192.168.1.9) pour communiquer avec la BOX_INTERNET.

Que signifie cette règle

Le routeur LINUX_SRV / Firewall va changer l’adresse IP source (SNAT) dans l’entête du paquet du pc local qui a initié la demande vers l’extérieure (internet) par l'adresse de sa propre interface externe (enp5s0), juste avant de l’envoyer vers le routeur BOX_INTERNET.

Vu que la box internet (interface interne : IP 192.168.1.254) n’a pas de chemin pour aller vers le réseau local (10.0.0.0), ce mécanisme (Network Address Translation) va permettre à la box internet de répondre aux requêtes provenant du réseau local (10.0.0.0/24) à travers le Routeur SRVLINUX (directement connecté, réseau 192.168.1.0).


Quelques explications concernant les options de la règle NAT

iptables		le pare-feu, firewall en anglais.

-t nat			t pour type, type de table, la table nat.

-A POSTROUTING  	A pour Ajouter, Append en anglais, ajoute une règle à la chaîne
					POSTROUTING. Le paquet est envoyé sur l’interface de sortie 
					enp5s0 juste après le routage		
		
-s		La source de L'IP à masquer, ou l'ensemble des  adresses IP du réseau à 
		masquer.
		
-o		 output, l'interface de sortie du routeur / Firewall.

-j SNAT    	 j pour saut, Jump en anglais. Saute à la cible SNAT

SNAT		Source NAT, Signifie que c'est l'adresse source du paquet qui est modifiée
		
--to-source	Cette option spécifié l’adresse IP qui remplace 
			l’adresse IP source (le Pc qui a initié la demande
			vers l'extérieur) après la modification de l’en-tête
			du paquet par le routeur/firewall. 
-j MASQUERADE j pour saut, Jump en anglais. Saute à la cible MASQUERADE
MASQUERADE La cible MASQUERADE. Fait pratiquement la même chose que SNAT, sauf que l'ip sur l'interface de sortie est récupérer dynamiquement.
Par rapport à SNAT (--to-source), on voit que L'ip sur l'interface de sortie (enp5s0) n'est pas spécifié.

Configuration IP des postes clients du réseau local

La dernière étape de ce tutoriel, consiste à attribuer aux postes clients du réseau local, une adresse IP fixe, l’IP de la passerelle (10.0.0.50) pour sortir de réseau local et l’IP du serveur DNS, qui est l’IP de l’interface interne de la box internet.

Il est aussi possible d’attribuer un autre serveur Dns.
Exemple :
Le serveur Dns de google, 8.8.8.8

Pour le poste linux, le ou les serveurs DNS doivent se renseigner dans le fichier resolv.conf
Ce fichier se trouve dans le répertoire /etc

Exemple de configuration :
nameserver 192.168.1.254
nameserver 8.8.8.8
Ce fichier est lit de haut en bas. En premier, c'est le DNS local (box routeur internet).
Si le DNS local n'est pas accessible, le deuxième serveur DNS sera lu.

Publié le 15 mai 2018 / Modifié, le 03 Septembre 2020