Mise en place du SDN sur Promox 7

Open source Réseau Virtualisation Proxmox SDN

Il arrive que nous ne souhaitons pas mettre une machine virtuelle ou un conteneur directement accessible depuis le réseau externe comme dans le cas d'utilisation d'une DMZ. Quand on utilise un seul noeud Proxmox, une des méthodes les plus simples est de créer par exemple un bridge sans le rattacher à une interface réseau physique. Cependant quand il s'agit d'un cluster d'hyperviseur Proxmox, cette méthode est limitée car les machines virtuelles sont isolées au niveau d'un nœud. Au revoir donc tout le bénéfice de l'utilisation d'un cluster comme l'équilibrage de charges ou le HA. Il existe des solutions mais dont la mise en place est plus ou moins complexe et uniquement en CLI.

Heureusement, Proxmox propose depuis peu une approche plus simple permettant de faire du Software-defined networking intégré. C'est ce que nous allons voir dans cet article à travers la mise en place d'un réseau virtuel pour isoler deux machines. Attention : cette option, même si opérationnelle, est toujours en version expérimentale et donc déconseillée en production.

maquette-sdn

Pour virtualiser ce lab, j'utilise virt-manager sur Fedora 35. Il permet de faire de la virtualisation imbriquée sans devoir utiliser Vmware Workstation, payant et dont la démo est limitée à 30 jours à moins de "stroumpher" une clé récupérée sur Internet et qui est illégal.

J'ai créé deux réseaux isolés qui permettent néanmoins d'accéder aux machines virtuelles (côté LAN uniquement ici), les noeuds Proxmox et pfSense (interfaces web et SSH), depuis notre machine hôte. Capture%20d%E2%80%99%C3%A9cran%20du%202022-05-03%2015-10-33

Voici les ressources pour chaque VM Proxmox :

  • Processeur : 4 coeurs
  • Mémoire : 4096 Go
  • Disque : 1 seul / 150 Go (stocké sur un SSD)
  • Réseau : 2 cartes

Une fois le lab monté et Proxmox installé, créez le cluster.

La mise en place est très simple. Voici ce qu'il faut faire sur chaque noeud Proxmox :

apt install libpve-network-perl ifupdown2
echo "source /etc/network/interfaces.d/*" >> /etc/network/interfaces

Et voilà ! Par précaution, j'ai rebooté chaque nœud. En cliquant sur Datacenter vous devriez voir apparaître l'option SDN : a7c1f5415b59963b0569ea25f1b7645e

J'ai fait le choix de créer un réseau virtuel du type VxLAN. VXLAN est un protocole d'encapsulation qui fournit la connectivité du centre de données à l'aide de la tunnelisation pour étirer les connexions de couche 2 sur un réseau de couche 3 sous-jacent dixit www.juniper.net Bien que bien la technique du VLAN soit aussi possible, j'ai retenu le VxLAN pour la possibilté de chiffrer les communications avec IPSEC.

Capture%20d%E2%80%99%C3%A9cran%20du%202022-05-03%2015-23-10

Éléments renseignées :

  • ID : le nom de la zone
  • Address : les adresses IP des nœuds Proxmox côté LAN. C'es une liste d'adresses IP de tous les nœuds via lesquels vous souhaitez communiquer.
  • MTU : le MTU doit être inférieur pour s'assurer que les 50 octets supplémentaires de l'en-tête VXLAN peuvent être contenu. Le MTU de ma carte étant de 1500, je renseigne 1450.

Le MTU des machines invitées devra être égal au MTU défini ci-dessus.

Ce qui donne :

Capture%20d%E2%80%99%C3%A9cran%20du%202022-05-03%2015-24-37

Maintenant que votre zone est créée, il faut créer un VNet que l'on va rattacher à notre zone.

Selon la doc Proxmox, un VNet est un réseau virtuel qui n'est dans sa forme de base qu'un pont Linux qui sera déployé localement sur le nœud et utilisé pour la communication de la machine virtuelle. En fait quand nous provisionnerons nos VM, nous rattacherons le réseau de celles-ci au bridge nouvellement au lieu de vmbr0 par exemple.

Ce qu'il faut renseigner :

  • Le nom
  • Un alias (optionnel)
  • La zone de rattachement
  • Le TAG : id du VxLAN (ce que vous vous voulez entre 1 et 16 777 215)

b25a723123653778e8e2c4f5c9db738d

Maintenant que notre zone est créée et le vnet rattaché, il suffit de cliquer sur SDN puis de cliquer sur "Apply", ainsi vous verrez la zone se déployer sur l'ensemble des nœuds retenus (tous par défaut).

78373aa229053c3b1245fe1aebb6c0fd

Créez deux conteneurs sur deux nœuds différents puis sur la partie réseau, mettez en bridge le nom de votre vnet :

33b498f00cf2e5b7ce65864568163e8f

Lancez les conteneurs puis réalisez un test de connectivité réseau avec ping :

d5d857a432a9a083831362e2251c0da7

Nous venons de voir comment créer un réseau isolé sur un cluster Proxmox mais permettant aux VM de communiquer en étant reparties sur plusieurs nœuds, Bien évidemment, si on veut qu'elles puissent sortir ou être interroger depuis l'externe, il faudra mettre en place une VM passerelle. Dans le prochain article, on mettra en place la partie chiffrement. Enfin d'autres options sont disponibles comme la possibilité d'interagir avec phpipam par exemple. Plus d'infos sur https://pve.proxmox.com/pve-docs/chapter-pvesdn.html

Article précédent Article suivant