Utiliser Debian en tant que routeur (2 ème partie).

3. Activer le routage

Nous allons activer le routage sur Debian. J’édite donc le fichier « vim /etc/sysctl.conf »

vim /etc/sysctl.conf

Sur la première partie de mon fichier j’ai ceci (en bas du screenshot):

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

Comme expliquer clairement dans la le commentaire du fichier de conf je vais décommenter « net.ipv4.ip_forward=1 » comme ceci :

J’enregistre mon fichier. Puis pour que ma modification soit prise en compte je lance la commande :

root@DEBIAN-ROUTEUR:~# sysctl -p
net.ipv4.ip_forward = 1
net.ipv6.conf.all.disable_ipv6 = 1

J’essaye de pinger depuis ma Lubuntu (10.10.20.10) ma Lubuntu 2(10.10.30.10)

Donc le routage fonctionne bien entre mes 2 sous réseaux 😀 !

Une fois que la partie routage est validé il va faloir que je puisse sortir sur internet ….

4. Activer le NAT

Nous allons configurer dans un premier temps la règle qui va permettre à mes machines Lubuntu d’aller sur internet. Une fois la règle créer en ligne de commande nous allons faire en sorte que cette règle soit persistante

Remarque: Je suis derrière mon routeur Debian qui est lui même derrière ma box internet donc pour sortir sur internet(depuis mes lubuntu) je vais une fois être nater sur l’IP 192.168.1.195 (IP « WAN »de mon routeur DEBIAN) puis nater par ma boxe internet avec une ip publique.

Pour activer le NAT je tape donc la commande suivante :

iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE

Explications de la règles :

-t : table . En l’occurence nous avons sélectionnés la table NAT (par défaut c’est la table filter)

POSTROUTING : C’est une chain qui va manipuler les adresses réseaux juste avant d’émettre le paquet physiquement.

-o : out. L’interface publique pour aller sur internet(enp0s3).

MASQUERADE : Remplace l’ip privé par l’ip publique du routeur. Va remplacer (masquer) mon ip privé par mon ip publique.

Pour lister mes règles de NAT :

root@DEBIAN-ROUTEUR:~# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Je vérifie que sur ma Lubuntu j’ai bien accès à internet :

Génial on accès à internet 😆

En revanche si je redémarre ma machine je perd ma règle de NAT … 🙁

💡 C’est pour cela que l’on va faire en sortes que cette règles soit persistantes et la mettre en dur dans un fichier.

Pour cela on va installer le paquet suivant :

apt install iptables-persistent

Il me demande si je souhaite sauvegarder mes règles IPv4 je mets oui

N’ayant pas de règles ipV6 non

J’édite ensuite le fichier ou vons être stockés toutes mes règles (persistantes)iptables

vim /etc/iptables/rules.v4 
# Generated by xtables-save v1.8.2 on Sat Jan 23 00:05:44 2021
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -o enp0s3 -j MASQUERADE
COMMIT
# Completed on Sat Jan 23 00:05:44 2021
# Generated by xtables-save v1.8.2 on Sat Jan 23 00:05:44 2021
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
# Completed on Sat Jan 23 00:05:44 2021

On observe bien ma règle créer précédemment qui a été sauvegardés dans le fichier.

Si je fait une nouvelle règle pour quels soit persistantes il faudra la taper en CLI (ou la mettre directement dans le fichier)puis utiliser la commandes suivantes :

iptables-save > /etc/iptables/rules.v4

5. Sécuriser son routeur

Nous allons présenter quelques règles simples iptables pour sécuriser l’accès à son routeur. (On détaillera iptables, les policy ect … dans un autre tuto)

ATTENTION : en règle général il faut bien réfléchir et bien configurer ses règles iptables pour ne pas se bloquer soit même ça m’est déjà arriver … 😐

Pour l’exemple on va juste sécuriser l’accès au routeur en SSH. Donc je vais autoriser l’accès à mon routeur depuis l’ip de mon PC(physique) sur la pate WAN de mon routeur.

iptables -A INPUT -s 192.168.1.253 -p tcp --dport ssh -j ACCEPT

Explications :

-A : pour ajouter la règle

Chain INPUT : c’est l’endroit où les paquets qui arrivent rentrent dans la carte réseau et sont à destination d’un des programmes qui tournent sur la machine.
Exemple une connexion ssh qui arrive sur la machine. La demande de connexion va passer par cette chaîne INPUT. En gros les paquets destinés à mon routeur.

-p : le protocole ici tcp

–dport : destination port(ici le port 22 pour ssh)

-j : jump, l’action à faire(ici nous allons l’accepter).

Je vais maintenant bloquer tout les IPs qui souhaiteraient se connecter à mon routeur Debian.

iptables -I INPUT 2 -p tcp --dport ssh -j DROP

-I : pour que j’insère cette règle à une certaines position car mes règles sont lues de la première à dernière et si je la mets en premier alors je bloquerais mon accès.

INPUT 2 : en deuxième position sur la châine INPUT.

Si j’essaie de me connecter avec ma lubuntu à mon routeur Debian je n’y parviens pas.

Je rend ensuite mes règles persistentes :

iptables-save > /etc/iptables/rules.v4
root@DEBIAN-ROUTEUR:~# cat /etc/iptables/rules.v4 
# Generated by xtables-save v1.8.2 on Sat Jan 23 00:49:11 2021
*nat
:PREROUTING ACCEPT [42:8199]
:INPUT ACCEPT [31:6833]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [11:811]
-A POSTROUTING -o enp0s3 -j MASQUERADE
COMMIT
# Completed on Sat Jan 23 00:49:11 2021
# Generated by xtables-save v1.8.2 on Sat Jan 23 00:49:11 2021
*filter
:INPUT ACCEPT [688:56838]
:FORWARD ACCEPT [2364:198544]
:OUTPUT ACCEPT [1023:117084]
-A INPUT -s 192.168.1.253/32 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j DROP
COMMIT
# Completed on Sat Jan 23 00:49:11 2021

Mes règles sont bien enregistrés dans mon fichier et seront toujours présentes lors du redémarrage de la machine.

C’est la fin de ce tuto j’espère qu’ils vous a plu et qu’il vous a permis de voir par mal de notions réseaux sur Debian et qu’ils vous sera utile pour la suite.

A bientôt 😀 !

Utiliser Debian en tant que routeur (1 ère partie).

Nous allons configurer notre routeur Debian pour qu’il puisse avoir les mêmes fonctionnalités qu’un mini routeur/firewall. Nous activerons le DHCP,le routage, et le NAT. On finira avec quelques règles de firewall iptables 😉 .

Prérequis : savoir installer Debian et Lubuntu. Savoir utiliser et avoir installé Virtualbox.

Contexte : Dans ce tuto mon routeur(Debian 10) et mes 2 PCs (Lubuntu 20) sont des VMs sur Virtualbox. Mon routeur Debian à une carte sur mon réseau LAN(de ma box internet)qui représentent ici le WAN du routeur et 2 autres cartes sur 2 réseau interne virtualbox différents. Je montrerai comment j’ai configuré mes cartes réseaux sur Virutalbox.

Voici le schémas du LAB :

Configuration Réseau du ROUTEUR-DEBIAN

Adresse IP WAN : 192.168.1.195

Adresse IP LAN1 : 10.10.20.1

Adresse IP LAN2 : 10.10.30.1

Pour la configuration réseau des Lubuntu nous allons utiliser le DHCP.

1. Configuration des interfaces

Afficher la configuration réseau :

ip a

On observe que mon interface « WAN » reçoit une IP de ma box et mes 2 interfaces LAN n’ont pas d’IP ce qui est normal car je ne les ai pas configurés. On va l’aisser l’interface « WAN » enp0s3 en DHCP les 2 autres enp0s8 et enp0s9 vont elles êtres en IP statics.

J’édite donc le fichier /etc/network/interfaces

vim /etc/network/interfaces

Je rajoute ceci à la fin du fichier :


#LANLINUX1
auto enp0s8
iface enp0s8 inet static
	address 10.10.20.1
	netmask 255.255.255.0
#LANLINUX2
auto enp0s9
iface enp0s9 inet static
	address 10.10.30.1
	netmask 255.255.255.0

J’enregistre et je restart le service networking.service

systemctl restart networking.service

J’affiche de nouveau ma configuration réseau :

ip a

J’ai bien toutes mes interfaces configurés.

Passons au DHCP !

2. Installation et configuration du DHCP.

  1. Installer le serveur dhcp
apt install isc-dhcp-server

D’ailleurs une fois installés le service n’est pas activé on l’activera plus tard

Nous allons maintenant spécifier sur quel interface le serveur DHCP doit écouter pour ensuite distribuer les IPs. Nous allons donc éditer le fichier /etc/default/isc-dhcp-server

vim /etc/default/isc-dhcp-server

Dans « INTERFACESv4= » je vais ajouter l’interface enp0s8 et enp0s9 comme mentionnés dans le fichier de conf « Separate multiple interfaces with spaces » je vais séparer mes interfaces par un espace comme ceci

INTERFACESv4="enp0s8 enp0s9"

On pourra commenter INTERFACESv6 car on ne va pas l’utiliser. Enregistrer et quitter.

Nous allons maintenant configurer le fichier /etc/dhcp/dhcpd.conf.

Avant tout configuration je vais une sauvegarde de mon fichier :

cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.old

On édite de fichier :

 vim /etc/dhcp/dhcpd.conf

On voit qu’on a pas mal d’exemples pour configurer son serveur DHCP. La documentation sur le fichier de conf est bien faites.

Configuration du domain name et des DNS

option domain-name "savoirit.lab";
option domain-name-servers 8.8.8.8, 8.8.4.4;

On configure le range et les informations réseaux pour les 2 sous réseaux

#LANLINUX 10.10.20.0/24

subnet 10.10.20.0 netmask 255.255.255.0 {
  range 10.10.20.10 10.10.20.50;
  option domain-name-servers 8.8.8.8;
  option routers 10.10.20.1;
  option broadcast-address 10.10.20.255;
  default-lease-time 600;
  max-lease-time 7200;
}

#LANLINUX2 10.10.30.0/24

subnet 10.10.30.0 netmask 255.255.255.0 {
  range 10.10.30.10 10.10.30.50;
  option domain-name-servers 8.8.8.8;
  option routers 10.10.30.1;
  option broadcast-address 10.10.30.255;
  default-lease-time 600;
  max-lease-time 7200;
}

On enregistre le fichier « :wq »(sur VIM)

On va démarrer le service et surtout l’activer pour qu’il démarre automatiquement au démarrage de la machine

root@DEBIAN-ROUTEUR:~# systemctl enable isc-dhcp-server.service
isc-dhcp-server.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable isc-dhcp-server

root@DEBIAN-ROUTEUR:~#systemctl start isc-dhcp-server.service

root@DEBIAN-ROUTEUR:~# systemctl status isc-dhcp-server.service 
● isc-dhcp-server.service - LSB: DHCP server
   Loaded: loaded (/etc/init.d/isc-dhcp-server; generated)
   Active: active (running) since Thu 2021-01-21 19:38:55 CET; 19min ago
     Docs: man:systemd-sysv-generator(8)
    Tasks: 1 (limit: 1147)
   Memory: 4.8M
   CGroup: /system.slice/isc-dhcp-server.service
           └─701 /usr/sbin/dhcpd -4 -q -cf /etc/dhcp/dhcpd.conf enp0s8 enp0s9

janv. 21 19:38:53 DEBIAN-ROUTEUR systemd[1]: Starting LSB: DHCP server...
janv. 21 19:38:53 DEBIAN-ROUTEUR isc-dhcp-server[689]: Launching IPv4 server only.
janv. 21 19:38:53 DEBIAN-ROUTEUR dhcpd[701]: Wrote 0 leases to leases file.
janv. 21 19:38:53 DEBIAN-ROUTEUR dhcpd[701]: Server starting service.
janv. 21 19:38:55 DEBIAN-ROUTEUR isc-dhcp-server[689]: Starting ISC DHCPv4 server: dhcpd.
janv. 21 19:38:55 DEBIAN-ROUTEUR systemd[1]: Started LSB: DHCP server.

Je configure sur Virtualbox les cartes réseaux de mes 2 VMs Lubuntu comme ci-dessous puis je les démarre.

Pour la LUBUNTU :

Pour la Lubuntu 2 :

Je démarre mes 2 Lubuntu et j’affiche leur configuration réseau.

Lubuntu :

Lubuntu 2 :

J’observe que pour mes 2 Lubuntu je reçois bien les informations réseaux que j’ai configuré.

Pour informations je peux voir mes leases dhcp avec la commande suivante :

root@DEBIAN-ROUTEUR:~# dhcp-lease-list 
To get manufacturer names please download http://standards.ieee.org/regauth/oui/oui.txt to /usr/local/etc/oui.txt
Reading leases from /var/lib/dhcp/dhcpd.leases
MAC                IP              hostname       valid until         manufacturer        
===============================================================================================
08:00:27:b9:66:0c  10.10.20.10     lubuntu        2021-01-22 17:26:56 -NA-                
08:00:27:c1:56:b8  10.10.30.10     lubuntu        2021-01-22 17:27:18 -NA-  

La suite du LAB dans la partie 2 🙂