You are currently viewing 10 GbE – VMware ESXi

10 GbE – VMware ESXi

Print Friendly, PDF & Email

Avant d’aborder la question du firewall, il est nécessaire d’évoquer l’architecture de l’hyperviseur VMware ESXi. L’éditeur aborde sur son site Web la question de la sécurité et propose une architecture à double firewall afin de créer une DMZ virtuelle entourée par des firewalls externes et internes installés sur deux VM (Machine Virtuelle) différentes :

C’est la première architecture que j’ai mise en œuvre sur mon serveur VMware ESXi avant de me rendre compte que ça compliquait beaucoup la configuration et… que je ne suis pas non plus une entreprise.

Je suis donc revenu à l’architecture 2015/2018 à un seul firewall à la différence que ce n’est plus une machine physique dédiée mais un serveur hôte VMware ESXi et une VM connectée à différentes zones (DMZ, LAN…) via différents vSwitch (commutateur standard virtuel) eux-mêmes connectés (ou non) à différents adaptateurs réseaux physiques du serveur hôte :

Infra_La_Maison_Bleue_Net_2020_006
Télécharger

J’ai appliqué ce même principe sur le serveur dédié loué chez Scaleway, anciennement Online, filiale d’Iliad la maison mère de Free.

Hyperviseur1 VMware ESXi (LAN)

Avant de détailler la configuration du serveur VMware installé dans la baie, voici un schéma qui représente la répartition des VM et des vSwitch (commutateurs virtuels standards) ainsi que leurs liens avec les différentes interfaces physiques du serveur hôte VMware ESXi :

Infra_La_Maison_Bleue_Net_2020_007
Télécharger

La VM du firewall Untangle est donc la seule à posséder un lien avec tous les vSwitch et toutes les interfaces physiques sauf avec le vSwitch dédié au management de VMware ESXi (vSwitch0).

La carte-mère Supermicro du serveur hôte possède trois ports RJ45 1Gb/s dont un est dédié à l’administration IPMI du serveur et ne sera donc pas découvert par WMware ESXi. J’ai ajouté deux cartes réseaux externes : une carte Ipolex/Intel avec deux ports RJ45 1Gb/s et une carte Intel X710-DA4 avec 4 ports SFP+ 10 Gb/s.

VMware ESXi va nommer ces différentes interfaces réseaux physiques de VMNIC0 à VMNIC7. Elles seront connectées aux équipements réseaux suivants dans la baie :

Carte réseau VMware Fonction Port Emplacement Vitesse Equipement connecté
Carte-mère Intel I350 VMNIC0 Admin VMware 1 Carte-mère 1 Gb/s SwitchC3
Carte-mère Intel I350 VMNIC1 / 2 Carte-mère / /
Ipolex Intel 82576 Chip VMNIC2 Secours 4G 1 CPU1 Slot 4 100 Mb/s Routeur 4G
Ipolex Intel 82576 Chip VMNIC3 / 2 CPU1 Slot 4 / /
Intel X710-DA4-SFP+ VMNIC4 WAN 1 CPU1 Slot 5 10 Gb/s Freebox Delta S
Intel X710-DA4-SFP+ VMNIC5 LAN 2 CPU1 Slot 5 10 Gb/s SwitchC1
Intel X710-DA4-SFP+ VMNIC6 LAN 3 CPU1 Slot 5 10 Gb/s SwitchC2
Intel X710-DA4-SFP+ VMNIC7 DMZ1 4 CPU1 Slot 5 10 Gb/s SwitchC4
Carte-mère / IPMI Supermicro 1 Carte-mère 1 Gb/s SwitchC3

A noter que la fonction WAN de la Freebox Delta S concerne en réalité le port LAN SFP+ 10 Gb/s mais il est vu tel un « WAN » car la box est en mode bridge. Les trois ports utilisés sur la Freebox sont les suivants (les ports RJ45 ne sont pas utilisés) :

Infra_La_Maison_Bleue_Net_2020_013
Télécharger

Voici la page d’accueil du serveur VMware ESXi :

Mise en réseau

Dans le menu Mise en réseau et l’onglet Groupes de ports, chaque groupe de ports, qu’on affectera par la suite aux différents VM, est associé à un commutateur standard ou vSwitch standard :

Par exemple le groupe de ports LAN est associé au vSwitchLAN et sa topologie est décrite sur cette page :

Dans les propriétés du groupe de ports, le VLAN est défini à 4095, ce qui représente tous les VLAN possibles. Le VLAN des groupes de ports DMZ1 et DMZ2 est également spécifié à cette même valeur (les VLAN seront précisés sur les serveurs et les switches). Le VLAN pour les groupes de ports WAN et 4G est le VLAN 0, et pour le groupe de ports Management Network le VLAN 10 :

Dans l’onglet suivant, Commutateurs virtuels, les différents vSwitch standard sont définis :

Par exemple pour le vSwitchLAN :

Dans le menu Modifier les paramètres, le MTU est fixé à la valeur 9000 (Jumbo Frame) pour le vSwitchLAN mais aussi pour les vSwitchDMZ1 et vSwitchDMZ2 (pour les autres vSwitch, il reste à 1500). Les Liaisons montantes sont aussi attribuées au vSwitch, dans le cas du LAN il s’agit des interfaces physiques vmnic5 et vmnic6 respectivement connectées aux switches SwitchC1 et SwitchC2.

Dans Association des cartes réseaux, l’Equilibrage de la charge est définit sur Route basée sur l’ID du port d’origine et la Détection de basculement de réseau sur Etat de lien seulement :

Le vSwitch0, le management de l’hyperviseur VMware ESXi :

Le vSwitchWAN, connecté à la Freebox Delta S sur le port LAN SFP+ 10 Gb/s :

Le vSwitch4G, connecté au routeur 4G :

Le vSwitchDMZ1, les VM de la DMZ1 :

Le vSwitchDMZ2, différent de la première DMZ par des droits plus étendus sur le firewall pour la seule VM présente sur ce vSwitch, le serveur OpenVPN Access Server :

Je n’ai pas créé de groupe de ports DOMO et de commutateur virtuel vSwitchDOMO pour héberger le serveur Domotique à la création du serveur WMware pour plus de facilité. Le serveur Domotique utilise le vSwitchLAN, la différenciation des VLAN LAN et DOMO se fera sur les switch et directement sur le serveur Linux. Idem pour le VLAN Surveillance.

L’onglet NIC physiques liste les différents adaptateurs réseaux :

L’onglet NIC VMkernel concerne les adaptateurs réseaux utilisés pour l’administration de l’hyperviseur :

L’onglet Piles TCP/IP permet d’indiquer la passerelle et le serveur DNS :

L’onglet Règles du pare-feu permet de définir les règles de firewall. J’ai modifié les règles vSphere Web Access et vSphere Web Client en précisant les sous-réseaux autorisés à accéder à l’administration de l’hyperviseur :

Stockage

J’ai installé une carte contrôleur RAID sur le serveur car le RAID de la carte-mère Supermicro n’était pas reconnu par VMware ESXi. La première étape a donc consisté à paramétrer le RAID de la carte Broadcom LSI MegaRAID en RAID 10 sur les quatre SSD SATA 2.5″ de 2 To (VM et données). L’accès au paramétrage de la carte RAID se fait lors du lancement de la machine et non dans l’administration VMware ESXi.

L’hyperviseur VMware ESXi a, quant à lui, été installé sur un SSD NVMe de 512 Go.

On retrouve donc ces deux disques dans le menu Stockage de l’hyperviseur sous les noms de Datastore1 pour le SSD NVMe d’environ 512 Go et Datastore2 pour les quatre SSD SATA en RAID10 ce qui représente un volume d’environ 4 To :

La troisième banque de données est un montage NFS sur le NAS qui servira pour sauvegarder les VM. Pour la créer cliquez sur Nouvelle banque de données puis Monter la banque de données NFS et complétez les infos, le partage NFS étant un dossier partagé du volume1 du NAS Synology :

Machines virtuelles

Dans le menu Machines virtuelles, on retrouve les différentes VM :

  • AppServer1 : serveur applicatif Linux Debian présent sur le VLAN 10 (LAN). Pour le moment seul le logiciel Avahi (mDNS) est installé sur ce serveur afin de découvrir les différents Chromecast présents sur le LAN depuis le réseau Wifi Enterprise. Je reviendrai sur ce point lors de l’article à venir au sujet du firewall Untangle,
  • AppServer3 : serveur applicatif Linux Debian présent sur le VLAN 90 (DMZ1). Ce serveur héberge l’application Docker et, aujourd’hui, seul le conteneur logiciel de l’application Azuracast (Web Radio) est installé,
  • DomoServer : serveur applicatif Linux Debian présent sur le VLAN 40 (Domotique). Ce serveur héberge l’application domotique Jeedom. Dans la pratique cette VM utilise le groupe de ports LAN, n’ayant pas créé de groupe de ports et de commutateur virtuel DOMO,
  • OpenVPNAS : serveur applicatif Linux Debian présent sur le VLAN 91 (DMZ2). Ce serveur héberge l’application OpenVPN Access Server,
  • UntangleRouter1 : serveur applicatif hébergeant le firewall Untangle présent sur tous les VLAN,
  • WebServer1 : serveur Web LAMP Linux Debian présent sur le VLAN 10 (LAN) supportant les applications d’administration comme Cockpit (administration de serveurs Linux), InfiniteWP (administration des sites Web sous WordPress) et UniFi Controller (administration des points d’accès Wifi Ubiquiti),
  • WebServer3 : serveur Web LAMP Linux Debian présent sur le VLAN 90 (DMZ1) avec notamment les applications Web Nextcloud, Piwigo, X3 Photo Gallery, Afterlogic Webmail Pro PHP, WordPress, Plex et My Media for Alexa,
  • WindowsServer : serveur Windows Server 2016 présent sur le VLAN 10 (LAN).

J’ai appliqué la règle de nommage suivante pour les différentes VM ayant les mêmes fonctions sur les différents VLAN et hyperviseurs :

  • Suffixe « 1 » : VM présentes sur l’hyperviseur1 et le LAN, soit le VLAN 10 (AppServer1, WebServer1 et UntangleRouter1),
  • Suffixe « 2 » : VM présentes sur l’hyperviseur2, le serveur dédié hébergé chez Scaleway (WebServer2 et pfSenseRouter2),
  • Suffixe « 3 » : VM présentes sur l’hyperviseur1 et la DMZ1, soit le VLAN 90 (AppServer3 et WebServer3),
  • Les VM qui n’ont pas de suffixe numéroté sont à usage unique comme le serveur Domotique ou le serveur Windows.

Les différentes VM :

La VM firewall Untangle :

Les paramètres de la VM Untangle :

A noter que le type d’adaptateur réseau est toujours VMXNET 3 sauf pour la connexion au routeur 4G qui de type E1000e.

La VM WebServer3 :

Les paramètres de la VM WebServer3 :

Hyperviseur2 VMware ESXi (Serveur Dédié)

Comme pour l’hyperviseur1, voici un schéma qui représente la répartition des VM et des vSwitch ainsi que leurs liens avec les différentes interfaces physiques du serveur hôte VMware ESXi Scaleway (offre Start-2-S-SATA datant de 2018) :

Infra_La_Maison_Bleue_Net_2020_008
Télécharger

L’adresse IP est attribuée au serveur dédié qui héberge l’hyperviseur et servira uniquement à l’administration VMware ESXi. Pour accéder au firewall et aux VM, il va falloir commander une seconde adresse IP appelée IP Failover dans l’offre Scaleway et qui sera donc affectée au firewall pfSense.

Les 2 adresses IP sont visibles sur la page Web d’administration du serveur dédié :

Vous pouvez éditer vos IP Failover et les attribuer aux différents serveurs dédiés :

Vous pouvez aussi éditer les adresses MAC de l’IP Failover pour les faire correspondre au bon type d’hyperviseur :

L’IPv6 n’est pas disponible par défaut pour l’IP Failover mais uniquement en option. A noter que ça pose un pb quand vous installez pfSense car le logiciel active l’IPv6 et l’IP Failover est alors automatiquement désactivée. Il faut alors désactiver l’IPv6 dans pfSense puis passer par le support Scaleway qui n’est toujours très aimable avec ses clients (le seul point négatif que j’ai pu relever chez ce fournisseur) pour réactiver l’IP Failover :

Voici la page d’accueil du serveur VMware ESXi :

Mise en réseau

Dans le menu Mise en réseau et l’onglet Groupes de ports, chaque groupe de ports, qu’on affectera par la suite aux différents VM, est associé à un commutateur standard ou vSwitch standard :

Par exemple le groupe de ports WAN est associé au vSwitchWAN et sa topologie est décrite sur cette page :

Dans l’onglet suivant, Commutateurs virtuels, les différents vSwitch standard sont définis :

Par exemple pour le vSwitchWAN qui sert aussi au management de l’hyperviseur VMware ESXi :

Le vSwitchDMZ :

L’onglet Règles du pare-feu permet de définir les règles de firewall. J’ai modifié les règles vSphere Web Access et vSphere Web Client en précisant les sous-réseaux autorisés à accéder à l’administration de l’hyperviseur :

Stockage

Dans l’offre Scaleway, le stockage est composé d’un disque SATA de 1 To et j’ai ajouté un montage NFS sur le NAS présent sur mon réseau local :

Machines virtuelles

Dans le menu Machines virtuelles, on retrouve les différentes VM installées sur la DMZ :

  • LinuxLite : serveur LinuxLite qui va servir uniquement à l’installation du firewall pfSense et à son premier accès Web pour le paramétrer,
  • pfSenseRouter2 : serveur applicatif hébergeant le firewall pfSense (Community Edition),
  • WebServer2 : serveur Web LAMP Linux Debian.

Les différentes VM :

La VM firewall pfSense :

Les paramètres de la VM pfSense :

La VM WebServer2 :

Les paramètres de la VM WebServer2 :

Certificat SSL

Pour sécuriser l’accès à la page Web d’administration de WMware ESXi avec un certificat SSL, activez le SSH :

  • Sur la page d’accueil, cliquez sur le bouton Actions
  • Puis Services
  • Et enfin Activer Secure Shell

Connectez-vous en SSH avec le logiciel MobaXterm qui permet de copier facilement des fichiers, comme par exemple les certificats SSL, par un simple Drag and Drop et réalisez les opérations suivantes :

mv /etc/vmware/ssl/rui.crt /etc/vmware/ssl/orig.rui.crt
mv /etc/vmware/ssl/rui.key /etc/vmware/ssl/orig.rui.key
mv votre_certificat_SSL.crt /etc/vmware/ssl/rui.crt
mv la_clé_de_votre_certificat_SSL.key /etc/vmware/ssl/rui.key
chmod 400 /etc/vmware/ssl/rui.key
reboot

Sauvegarde des VM

Il existe une solution de sauvegarde Open, ghettoVCB, qui permet de sauvegarder vos VM et de les restaurer facilement. J’ai monté sur les deux hyperviseurs un Datastore qui accède au NAS en NFS afin de réaliser les sauvegardes car la volumétrie peut être très importante. En effet, VMware ESXi va créer un disque virtuel au format VMDK pour chaque VM sauvegardée ce qui peut, en fonction de l’espace disque réservé pour chaque VM, représenter une taille de plusieurs centaines de gigaoctets.

Une fois le module logiciel ou VIB ghettoVCB copié sur un Datastore, connectez-vous en SSH (voir ci-dessus) et installez-le :

esxcli software vib install -v /vmfs/volumes/datastore1/VIB/Sauvegarde/vghetto-ghettoVCB.vib -f

Modifiez le fichier de configuration pour indiquer le dossier de sauvegarde :

vi /etc/ghettovcb/ghettoVCB.conf
VM_BACKUP_VOLUME=/vmfs/volumes/DatastoreNFS/Backup/VM

Paramétrez la crontab pour exécuter régulièrement la sauvegarde des différentes VM :

vi /var/spool/cron/crontabs/root
0 3 * * 1 ulimit -n 4096 ; /opt/ghettovcb/bin/ghettoVCB.sh -m pfSenseRouter1 -g /etc/ghettovcb/ghettoVCB.conf
0 4 * * 1 ulimit -n 4096 ; /opt/ghettovcb/bin/ghettoVCB.sh -m UntangleRouter1 -g /etc/ghettovcb/ghettoVCB.conf
0 3 * * 2 ulimit -n 4096 ; /opt/ghettovcb/bin/ghettoVCB.sh -m WebServer1 -g /etc/ghettovcb/ghettoVCB.conf
0 4 * * 2 ulimit -n 4096 ; /opt/ghettovcb/bin/ghettoVCB.sh -m WebServer3 -g /etc/ghettovcb/ghettoVCB.conf
0 3 * * 3 ulimit -n 4096 ; /opt/ghettovcb/bin/ghettoVCB.sh -m AppServer1 -g /etc/ghettovcb/ghettoVCB.conf
0 4 * * 3 ulimit -n 4096 ; /opt/ghettovcb/bin/ghettoVCB.sh -m AppServer3 -g /etc/ghettovcb/ghettoVCB.conf
0 2 * * 4 ulimit -n 4096 ; /opt/ghettovcb/bin/ghettoVCB.sh -m OpenVPNAS -g /etc/ghettovcb/ghettoVCB.conf
0 3 * * 4 ulimit -n 4096 ; /opt/ghettovcb/bin/ghettoVCB.sh -m DomoServer -g /etc/ghettovcb/ghettoVCB.conf
0 4 * * 4 ulimit -n 4096 ; /opt/ghettovcb/bin/ghettoVCB.sh -m WindowsServer -g /etc/ghettovcb/ghettoVCB.conf

Redémarrer le cron :

kill $(cat /var/run/crond.pid)
crond

Créez un script pour recréer la crontab au redémarrage de l’hyperviseur :

vi /etc/rc.local.d/local.sh
/bin/kill $(cat /var/run/crond.pid)
/bin/echo '0 3 * * 1 ulimit -n 4096 ; /opt/ghettovcb/bin/ghettoVCB.sh -m pfSenseRouter1 -g /etc/ghettovcb/ghettoVCB.conf' >> /var/spool/cron/crontabs/root
/bin/echo '0 4 * * 1 ulimit -n 4096 ; /opt/ghettovcb/bin/ghettoVCB.sh -m UntangleRouter1 -g /etc/ghettovcb/ghettoVCB.conf' >> /var/spool/cron/crontabs/root
/bin/echo '0 3 * * 2 ulimit -n 4096 ; /opt/ghettovcb/bin/ghettoVCB.sh -m WebServer1 -g /etc/ghettovcb/ghettoVCB.conf' >> /var/spool/cron/crontabs/root
/bin/echo '0 4 * * 2 ulimit -n 4096 ; /opt/ghettovcb/bin/ghettoVCB.sh -m WebServer3 -g /etc/ghettovcb/ghettoVCB.conf' >> /var/spool/cron/crontabs/root
/bin/echo '0 3 * * 3 ulimit -n 4096 ; /opt/ghettovcb/bin/ghettoVCB.sh -m AppServer1 -g /etc/ghettovcb/ghettoVCB.conf' >> /var/spool/cron/crontabs/root
/bin/echo '0 4 * * 3 ulimit -n 4096 ; /opt/ghettovcb/bin/ghettoVCB.sh -m AppServer3 -g /etc/ghettovcb/ghettoVCB.conf' >> /var/spool/cron/crontabs/root
/bin/echo '0 2 * * 4 ulimit -n 4096 ; /opt/ghettovcb/bin/ghettoVCB.sh -m OpenVPNAS -g /etc/ghettovcb/ghettoVCB.conf' >> /var/spool/cron/crontabs/root
/bin/echo '0 3 * * 4 ulimit -n 4096 ; /opt/ghettovcb/bin/ghettoVCB.sh -m DomoServer -g /etc/ghettovcb/ghettoVCB.conf' >> /var/spool/cron/crontabs/root
/bin/echo '0 4 * * 4 ulimit -n 4096 ; /opt/ghettovcb/bin/ghettoVCB.sh -m WindowsServer -g /etc/ghettovcb/ghettoVCB.conf' >> /var/spool/cron/crontabs/root
/usr/lib/vmware/busybox/bin/busybox crond

A noter que depuis que j’ai installé cette VIB, je n’arrive plus à mettre à jour VMware ESXi ou du moins je n’ai pas encore résolu cette question…

Restauration d’une VM

Pour restaurer une VM, il faut commencer par la supprimer dans le Datastore (+ son dossier) en cliquant sur Stockage puis sur Navigateur de banque de données.

Connectez-vous en SSH, copiez le template et modifiez-le en précisant l’emplacement de la VM à restaurer, le Datastore cible et le type de disque (thin) :

cp /etc/ghettovcb/ghettoVCB-restore_vm_restore_configuration_template /etc/ghettovcb/vms_to_restore
nano /etc/ghettovcb/vms_to_restore
#"<DIRECTORY or .TGZ>;<DATASTORE_TO_RESTORE_TO>;<DISK_FORMAT_TO_RESTORE>"
# DISK_FORMATS
# 1 = zeroedthick
# 2 = 2gbsparse
# 3 = thin
# 4 = eagerzeroedthick
# e.g.
"/vmfs/volumes/datastoreNAS/Backup/VM/UntangleRouter1/UntangleRouter1-2021-02-15_04-00-00;/vmfs/volumes/datastore2;3"

Pour vérifier la VM à restaurer :

/opt/ghettovcb/bin/ghettoVCB-restore.sh -c /etc/ghettovcb/vms_to_restore -d 1

Pour la restaurer :

/opt/ghettovcb/bin/ghettoVCB-restore.sh -c /etc/ghettovcb/vms_to_restore -l log.txt

 

 

Laurent Weidmann

Ingénieur SI, je partage dans ce blog ma passion pour l'informatique, en particulier pour les systèmes et réseaux.

Cet article a 2 commentaires

  1. James

    Superbe article.

    J’aurais une question concernant le firewall, je possède moi même une infra avec une freebox delta et je voudrais savoir si vous arrivez a avoir un débit de 10gb wan avec votre firewall ?

    Car après pas mal de recherche je n’ai pas trouvé de solution avec un prix raisonnable pour avoir un firewall 10gb.

    Merci d’avance 🙂

    1. Bonjour,
      Oui j’ai trouvé une solution avec un serveur virtuel sous Untangle.
      Je suis en train de rédiger un article sur le firewall… c’est vrai que je prends mon temps 🙂

Laisser un commentaire