Créer un réseau interne avec une gateway
J’ai récemment fais le test de mettre en place une passerelle réseau avec des machines virtuelle. Pour rappel, une passerelle réseau est un équipement qui permet d’isoler un réseau interne d’un réseau externe. Vous en avez sûrement une chez vous: votre box internet. Je ne vais pas vous faire un cours sur le fonctionnement, d’autres l’on déjà très bien fait.
Pour mes tests, j’ai choisi d’utiliser des machines virtuelles Debian sous Virtual Box. Nous allons donc utiliser deux machines virtuelles:
- l’une sera la passerelle
- l’autre sera un serveur web
Le schéma est donc le suivant:
Exterieur
+------------+
|
+
+--------------------+
+---------+ Gateway +-------+
+--------------------+
+
|
+
+--------------------+
|Apache |
+--------------------+
Création de la Gateway
La gateway fait passerelle entre deux réseaux:
- le réseau publique connecté à internet
- le réseau privé qui englobe toutes les autres machines virtuelles
Logiquement, si elle est connectée à deux réseaux, elle doit posséder deux cartes réseaux. La première étapes, avant même de démarrer la VM, est de créer ces deux cartes réseaux sur Virtual Box. On se rend donc donc la configuration du réseau de la machine virtuelle et on active deux cartes:
- un réseau bridge qui a accès à internet mais pas aux autres VM
- un réseau interne (intnet) qui a accès aux autres machines virtuelles
On démarre ensuite la machine virtuelle.
Une fois connecté sur la machine virtuelle, on utilise la commande ip a
(pour les anciens ifconfig
est deprecated :) ). On voit qu’une seule des deux cartes est configurée. Il faut donc configurer la deuxième. On rajoute cette configuration au fichier /etc/network/interfaces.
allow-hotplug enp0s8
iface enp0s8 inet static
address 192.168.1.254
netmask 255.255.255.255
Plus d’infos sur comment mettre une IP statique sur Debian
Par défaut, Debian accepte uniquement les paquets réseaux qui lui sont destiné et il “jette” les autres. Il faut donc activer une option qui permet de transmettre ces paquets s’ils ne lui sont pas adressé. Pour cela, on dé-commente la ligne suivante dans /etc/sysctl.conf.
net.ipv4.ip_forward=1
Il ne nous reste plus qu’a indiquer comment rediriger ces paquets avec une règle iptables
:
iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
Pour que ces modifications soient actives au démarrage, il faut les enregistrer dans un fichier avec la commande iptables-save
:
iptables-save > /etc/iptables_rules.save
Et on rajoute cette configuration dans le fichier /etc/network/interfaces afin que les modifications soient apportées lors du prochaine redémarrage:
allow-hotplug enp0s8
iface enp0s8 inet static
address 192.168.1.254
netmask 255.255.255.255
Pour terminer on active l’interface réseau:
sudo ifup enp0s8
Si tout c’est bien passé, on doit être capable de réaliser un ping
sur une machine connecté au réseau intnet.
Création d’un serveur Apache Basique
Sur notre deuxième machine virtuelle, on va simplement associer un réseau interne (accessible uniquement par les VM qui sont sur réseau).
La première chose à faire est de lui attribuer une IP statique et de spécifier la gateway via le fichier /etc/network/interfaces.
allow-hotplug enp0s3
iface enp0s3 inet static
address 169.254.1.50
netmask 255.255.255.255
gateway 192.168.1.254
on rédmarre ensuite l’interface
sudo ifdown enp0s3
sudo /etc/init.d/networking restart
sudo ifup enp0s3
A partir de maintenant, on doit avoir accès à internet à travers la gateway:
ping 8.8.8.8 # le DNS de google
ping google.fr
si vous pouvez
ping
er8.8.8.8
mais pasgoogle.fr
, c’est très probablement un problème de DNS. il suffit d’éditer le fichier /etc/resolv.conf et mettre un DNS à la main comme8.8.8.8
. Redémarrez votre carte et vérifier que ça fonctionne.
Vue que l’on accès à internet, nous pouvons maintenant installer un serveur Apache
sudo apt install apache2
Mettre en place une redirection sur la Gateway
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 169.254.1.50:80
On n’oublie pas d’enregistrer les modifications pour qu’elles soient actives au prochain démarrage:
sudo iptables-save | sudo tee /etc/iptables_rules.save
Et voilà
Conclusion
Nous arrivons donc à cette installation:
Exterieur
+------------+
|
|
+
10.0.0.1
255.255.255.255
+--------------------+
| Gateway |
+---------+ - enp0s3: bridge +-------+
| - enp0s8: internal |
| |
+--------------------+
192.168.1.254
255.255.255.255
+
|
+
169.254.1.50
255.255.255.255
+--------------------+
|M02 Apache |
| - enp0s3: internal |
| |
+--------------------+
Nous pouvons donc facilement réaliser des logs sur les paquets qui transite ou bien les filtrer selon certaines règles définies.
Voir les autres articles liés
Participez au développement de votre navigateur preéferé
Optimisation des performances d'Apache