Réactiver le NAT sur Proxmox VE

Nous allons voir comment réactiver le NAT sur Proxmox VE.

Réactiver le NAT sur Proxmox VE

Au sommaire :

  • 1-Qu'est-ce que le NAT ?
  • 2-Création du pont
  • 3-Test

1-Qu'est-ce que le NAT ?

Le NAT (Network Address Translation) permet de faire de la traduction d'adresse réseau.

Vous l'utiliser tout les jours sans même le savoir en naviguant sur internet.

Les appareils d'un réseau local avec des adresses IP sont dites "privés" (192.168.x.x, 172.x.x.x, 10.x.x.x). C'est à dire qu'elles ne sont ni uniques et ni routables à l'échelle d'internet.

Pour que vos appareils puissent communiqués avec internet, c'est à travers l'adresse IP publique de votre modem/routeur qui elle est unique et routable.

Dans le cas de Proxmox VE, l'avantage c'est que vous pourrez créer un sous réseau qui pourra atteindre l'extérieur (réseau local et internet) mais qui sera inaccessible de l'extérieur.

Bien sûr, il y a les VLAN, le QinQ et le VXLAN mais je pense que c'est toujours bon à savoir, surtout qu'on l'utilise au quotidien en naviguant sur internet.

Les avantages :

  • Augmente le nombre d'adresses IP disponibles dans un réseau privé (trés utile en entreprise),
  • Protège les machines d'une attaque directe car elles sont inaccessibles de l'extérieur,

Les inconvénients :

  • Gourmand en ressources (mémoire, processeur),
  • Incompatible avec certains protocoles (IPSec),
  • Dégradation des performances sur la VOIP,

Il faut savoir que c'était possible de faire du NAT sur Proxmox VE mais depuis la version 5.1-52, cette fonctionnalité à disparu donc il faut obligatoirement le faire via le CLI.

Avant

Après

2-Création du pont

Pour faire du NAT sur Proxmox VE, il vous faudra créer un pont avec des instructions iptables.

Dans "/etc/network/interfaces", ajoutez les informations suivantes :

  • Créez un pont (vmbr1 dans l'exemple),
  • address : j'indique l'adresse IP 10.0.10.1/24,
  • bridge_ports, bridge_stp, bridge_fd : on indique aucune interface réseau physique car vmbr0 servira de pont à vmbr1,
  • #NAT : le commentaire qui indique que ce pont sert pour le NAT,

Ensuite, vous allez ajouter les commandes iptable.

  • post-up echo 1 :
  • post-up iptables :
  • post-down uptables :

Vous devriez avoir cette configuration.

auto vmbr1
iface vmbr1 inet static
        address 10.0.20.1/24
        bridge-ports none
        bridge-stp off
        bridge-fd 0
        post-up echo 1 > /proc/sys/net/ipv4/ip_forward
        post-up iptables -t nat -A POSTROUTING -s '10.0.20.0/24' -o vmbr0 -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -s '10.0.20.0/24' -o vmbr0 -j MASQUERADE
#NAT

Ma configuration pour ceux qui veulent y voir plus clair.

3-Test

Ajoutez à votre machine virtuelle le pont "vmbr1" à l'interface réseau.

Pour vous simplifier la vie, vous pouvez créer un conteneur LXC avec "isc-dhcp-server" avec le pont "vmbr1" qui attribuera des adresses IP automatiquement.

Mais pour ce tutoriel, nous allons indiquer une adresse IP statique à la machine virtuelle.

Dans une machine virtuelle bureautique (manjaro-XFCE).

  • Adress : 10.0.20.2,
  • Netmask : 24 (255.255.255.0),
  • Gateway : 10.0.20.1 (celle du pont vmbr1),
  • DNS servers : 1.1.1.1 (ou celui que vous voulez),

Et comme vous pouvez le constater, malgré que le pont "vmbr1" n'est rattacher à aucune interface réseau physique contrairement au pont par défaut "vmbr0", je peut contacter l'adresse IP du serveur (qui masque le réseau 10.0.20.0) ainsi que le réseau internet. Tout ça grâce à iptable.