Mon cloud hébergé – vSphere 5.5 + pfSense @ OVH – partie 2

Bonjour à tous,

Voici la deuxième partie de ce billet dédié à la mise en place d’un routeur virtuel sur un socle vSphere, le tout hébergé chez OVH.

Nous allons aborder dans cet article une description brève de pfSense et ses fonctionnalités. Puis, nous passerons à l’implémentation du côté hyperviseur, mais également de la machine virtuelle avec l’installation et la configuration de base de pfSense.

Enfin, nous terminerons avec la mise en place de l’IP failover comme IP WAN de pfSense. Nous pourrons alors tester le bon fonctionnement de ce nous avons fait.

Pour rappel, voici la topologie que nous souhaitons implémenter :

Screen Shot 2016-02-14 at 22.08.09

Let’s go !

pfSense, c’est quoi ?

721px-Pfs-logo-vector.svg

pfSense est un pack logiciel et operating system open-source à lui tout seul ! En effet, vous ne pourrez pas dissocier le logiciel de son OS support, FreeBSD, lorsque vous l’installerez. Le nom même du produit est inspiré du packet filter stateful de FreeBSD: pf. Vous ne serez pas surpris de savoir que pfSense se sert (entre autres) de … pf pour faire office de firewall. 😉

FreeBSD est un OS un peu oublié ces derniers temps, à tort ! C’est à la fois une plateforme robuste, extensible et maintenue par une communauté active. Autant être honnête avec vous, n’ayant pas les connaissances pour maîtriser aussi bien que Linux la distribution FreeBSD, je me limite à des commandes de bases, comme vi ou pkg_add, l’équivalent d’un apt-get install sur Debian pour installer des paquets.

Pour la petite histoire, pfSense est à la base un fork de m0n0wall, également basé sur FreeBSD.

En termes de fonctionnalités, pfSense est très bien fourni avec la version de base (liste non exhaustive):

  • Stateful firewall (même de l’inspection L7 !! )
  • VLAN (mais aussi le QinQ tunneling)
  • LAGG
  • DHCP + routage IPv4/IPv6
  • Tunneling IPv6
  • Certificate Authority
  • VPNs (IPSec, OpenVPN, PPTP, L2TP) serveur + client
  • NAT/PAT
  • Load-balancing
  • QoS (Traffic shaper, CoS(802.1p))
  • Traffic graphs (générés avec RRDtool)
  • DNS Forwarder
  • Captive Portal
  • Monitoring de gateway + failover dynamique
  • Fonctionalités de haute disponibilités (CARP)
  • Diag (traceroute, ping, capture de paquets,…)

Mais, vous pouvez également installer des packages à l’aide de l’interface Web pour étendre ses fonctionnalités à savoir par exemple avahi, nmap, iperf, vnstat, un Zabbix agent et là non plus, la liste n’est pas exhaustive !

Tout cela en une seule boîte ! En parlant de boîte, sachez que vous êtes naturellement libre de l’installer sur une appliance physique ou virtualisée comme nous le ferons dans cet exemple. Vous pouvez dans le premier cas être maître de la configuration matérielle ainsi que de l’évolution en fonction de vos besoins.

Assez parlé de théorie, passons maintenant à l’implémentation !

Configuration de l’hyperviseur

Pour découper nos usages et permettre le bon fonctionnement de pfSense, nous avons besoin d’une patte WAN et une autre LAN.

Nous l’implémenterons ici via l’utilisation de deux vSwitchs isolés. pfSense se chargera de faire le “lien” entre les deux par le biais de son routage niveau 3. De la perspective de l’hyperviseur, nous aurons juste à créer un autre vSwitch car nous nous servirons du vSwitch existant pour la partie WAN.

Attention! En aucun cas, vous ne devez supprimer et/ou toucher au VMkernel Port du vSwitch préconfiguré par OVH si vous ne savez pas ce que vous faites. Sous peine de perdre l’interface de management et de devoir … formater votre système. Néanmoins, si votre serveur dispose d’un vKVM, vous pourrez toujours tenter de restaurer la configuration à la main. 

La configuration est réalisée ici en vidéo, que vous trouverez ci-dessous :


Notez que je n’associe aucun uplink physique à ce nouveau vSwitch, comme expliqué plus haut. Vous remarquerez que j’ai appelé mon vSwitch LAN “NAT Network”, simplement par habitude et la relation au NAT de ce réseau.

Génération de la MAC virtuelle avec le Manager OVH

Une fois l’hyperviseur configuré, il reste à créer l’adresse MAC virtuelle associée à l’IP failover que nous avons acheté pour la parte WAN pfSense. Nous utiliserons par ailleurs cette adresse, générée par le Manager OVH, lors de la création de la machine virtuelle.

Là aussi, rien de bien compliqué lorsque vous connaissez la procédure :

Téléchargement de la dernière version de pfSense

Vous êtes quasiment prêt pour installer pfSense maintenant, sauf que vous n’avez pas encore l’image ISO d’installation ! Pour éviter de la télécharger puis de l’uploader dans le datastore (ce qui peut prendre du temps sur des supports à vitesse d’upload faible), je vous propose de la faire directement télécharger sur l’hyperviseur.

Pour cela, nous allons nous connecter sur l’hyperviseur en SSH, à l’aide d’un terminal, type PuTTY.

Screen Shot 2016-02-21 at 19.44.56

Une fois connecté, vous pouvez utiliser les commandes suivantes pour effectuer télécharger l’image et la décompresser.

cd /vmfs/volumes/datastore1
wget http://files.uk.pfsense.org/mirror/downloads/pfSense-LiveCD-2.2.6-RELEASE-amd64.iso.gz
gunzip pfSense-LiveCD-2.2.6-RELEASE-amd64.iso.gz

L’image ISO se disposera ainsi à la racine de votre datastore :

Screen Shot 2016-02-21 at 19.48.03

Création de la machine virtuelle

Avec tout ce que nous avons fait auparavant, la création de la machine virtuelle se réalise sans difficultés.


Concernant la configuration matérielle, j’opte ici pour une machine avec :

  • 1 vCPU
  • 1 GB de RAM
  • 8 GB de stockage

Vous pouvez vous dire que c’est peu, mais vous verrez qu’avec ces ressources, pfSense peut en faire beaucoup !

Notez également que j’en profite pour configurer le lecteur de CD-ROM virtuel avec l’ISO d’installation et la MAC virtuelle qu’OVH m’a attribuée pour la patte WAN du routeur virtuel.

Installation et configuration pfSense

L’installation est ici assez simple une fois la machine virtuelle lancée.


J’ai choisi ici l’installation one-step pour vous éviter l’autre processus moins rapide. Cependant, sachez que l’installation manuelle vous permettra par exemple de partitionner plus finement votre machine virtuelle.

Il nous reste a effectuer la configuration de base !

Paramétrage final avec les paramètres OVH

Nous devrons ici à la fois :

  1. paramétrer l’IP publique sur l’appliance
  2. router l’IP de la passerelle OVH à l’interface WAN pfSense
  3. définir la passerelle par défaut sur cette même IP de passerelle OVH

Avant de parler de la configuration, il faut bien comprendre comment le réseau OVH fonctionne. En effet, il faut différentier la passerelle de votre serveur OVH et l’IP failover dont votre routeur pfSense va se servir pour sa connectivité globale.

Dans la pratique, la passerelle de votre serveur est l’IP publique de management de votre serveur avec le dernier octet à la valeur .254.  L’IP de management du serveur 51.254.46.131 est donc 51.254.46.254. 

Concernant l’IP publique, vous seriez tenté de configurer un /32 ici, connaissant cette configuration. Le seul souci est que pfSense ne reconnait pas une IP de passerelle qui est en dehors du subnet de l’IP WAN configurée sur le pfSense.

Il va donc falloir ruser en modifiant la table de routage interne, à l’aide des lignes de commande suivantes :

route add -inet 51.254.46.254/32 -link -iface em0
route add default 51.254.46.254

Vous pourrez le voir sur la vidéo ci-dessous et tester également la connectivité globale avec un ping classique.


À ce moment, vous vous dites: “Génial, je vais pouvoir accéder à l’interface web de mon routeur virtuel.” Pas si vite !

Pourquoi ne puis-je pas accéder à l’interface web pfSense avec mon navigateur alors que mon routeur dispose d’une connectivité globale ?

Quand vous y pensez, vous pouvez perdre un temps assez élevé pour déterminer ce qui ne va pas. Je vous donne un indice, ici, aucun problème du côté de la configuration, tout fonctionne comme attendu (pas comme vous l’imaginiez cependant).

Pensez aux théories des firewall en général. L’interface WAN est considérée comme une interface non … sécurisée. Cela serait donc logique de bloquer tout le trafic rentrant initialement, mais de cependant permettre le retour des paquets générés par le routeur ou dans le réseau interne, c’est le concept même du stateful !

Un petit coup d’oeil sur les logs du firewall, à l’aide de l’option 10 de la console nous en donnera la confirmation :

Screen Shot 2016-02-21 at 20.45.18

Vous devez donc trouver un moyen temporaire de désactiver le filtre pf le temps de configurer votre routeur. Vous avez pour cela une commande assez pratique : pfctl -d.

Screen Shot 2016-02-21 at 20.48.23

Je ne le répéterai jamais assez, cette commande ne peut être utilisée qu’en préproduction et/ou en maquettage, car elle inhibe totalement le pare-feu de votre routeur. Heureusement, cette configuration ne survit pas à un redémarrage, vous pourrez donc redémarrer le routeur pour neutraliser cette action ou faire un reload du pare-feu à l’aide de la GUI.

Une fois cette commande effectuée, nous avons enfin accès à notre interface web et nous pouvons nous loguer avec nos accès par défaut : admin / pfsense.

Screen Shot 2016-02-21 at 20.49.10

Première connexion et premiers réglages

Lors de la première connexion, pfSense vous propose de lancer l’assistant d’installation. Nous avons tout fait à la main, vous pouvez donc cliquer sur le logo pour passer cet assistant.

Pour terminer notre installation, nous devons encore effectuer quelques réglages.

Changement du mot de passe admin

Comme votre routeur est maintenant public, il faut penser à changer ces informations dès que possible, à l’aide de la section “User Manager”, du menu System.

Screen Shot 2016-02-21 at 20.59.46

Mettre en place une règle de firewall WAN pour permettre l’administration HTTP via l’interface WAN

La configuration d’une règle WAN pour permettre le trafic HTTP sur le port WAN est aisée, jugez plutôt avec la vidéo suivante :

Configurer la persistance des informations de routage définies manuellement précédemment

Enfin, pour faire persister les directives de routage configurées manuellement, nous devons installer un package nommé shellcmd.

Screen Shot 2016-02-21 at 21.02.53

Cependant, le routeur ne sait pas encore comment résolver les noms de domaine, il faut donc lui préciser un serveur DNS tel que 8.8.8.8 et un secondaire, à l’aide du sous-menu General Setup, menu System.

Screen Shot 2016-02-21 at 21.03.45

Ensuite, retournez dans la rubrique Packages du menu System, cliquez sur Available Packages et sélectionnez shellcmd.

Screen Shot 2016-02-21 at 21.06.39

Une fois installé, rendez-vous dans le menu Services puis shellcmd. Vous installerez ici les deux lignes du début qui sont ont permis de connecter la VM au réseau OVH.

À la fin, cela doit donner ceci :

Screen Shot 2016-02-21 at 21.08.37

Pour vérifier si tout fonctionne, vous pouvez redémarrer la machine virtuelle et voir si tout fonctionne !

Au fait, vous vous souvenez de la capacité dont je vous parlais avec 1 Go de RAM? Jugez plutôt :

Screen Shot 2016-02-22 at 12.26.55

98000 états concurrents pour 1 Go de RAM, pas mal non? Sans parler de plus de 26000 de capacité dans la MBUF.

J’espère que cet article n’a pas été trop long et qu’il vous aura aidé. J’ai encore plein d’idées d’articles pour vous utilisant pfSense et/ou d’autres technos. Comme d’habitude, n’hésitez pas à nous solliciter dans les commentaires au besoin.

– Julien

Julien BERTON

VMware and Cisco g33k!

6 thoughts to “Mon cloud hébergé – vSphere 5.5 + pfSense @ OVH – partie 2”

  1. merciiiiiii, cela fait un moment maintenant que je buttais… Auparavent j’avais fait un pfsense avec un esxi 5.5 sur un kimsufi (1ipv4/1ipv6) et j’avais bien réussi, mais la avec la nouvelle version de pfsense et le fait d’avoir des ip failover j’étais paumé… (je pense que l’ipfailover était encore pire a paramétrer que l’esxi en ipv6)

  2. Bonjour et merci pour ce tuto for utile.
    Par contre je n’arrive pas a voir un accès internet depuis mes VM.
    Mes VM connecté sur le LAN voient bien le pfsense en 192.168.1.1
    et moi j’arrive a l’administrer egalement depuis son IP public
    aurais tu une idée ?

    1. Hello Franck, Peut-être un problème de DNS comme Byoyoyo, sinon, arrives-tu à pinger 8.8.8.8 à l’aide de l’interface pfSense ?

  3. Bonjour,

    J’ai suivi ton tuto, il est super bien fait merci.
    Mais comme Franck mes VM n’accedent pas à internet, cependant depuis le shell de pfsense pas de souci je ping google.fr etc…

    Mes VM ping pfsense 192.168.1.1 mais rien en dehors du lan

    Si quelqu’un a une idée ?

    Merci

Leave a Reply