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 :
Let’s go !
pfSense, c’est quoi ?
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.
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 :
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 :
- paramétrer l’IP publique sur l’appliance
- router l’IP de la passerelle OVH à l’interface WAN pfSense
- 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 :
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.
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.
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.
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.
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.
Ensuite, retournez dans la rubrique Packages du menu System, cliquez sur Available Packages et sélectionnez shellcmd.
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 :
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 :
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
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)
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 ?
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 ?
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
J’ai honte…. il manquait me DNS 🙂
Merci encore pour le tuto
L’essentiel c’est que ça fonctionne, bien joué !!
Un grand merci pour ce tuto extrêmement clair. La partie route par défaut sur gateway associée à l’ip principale OVH via commande directement dans le shell pfsense, puis dans le package shellcmd m’a juste sauvé!
Bonjour,
Nous vous remercions pour ce brillant tutoriel qui va grandement nous aider, car nous fait gagner en temps et en efficacité.
A la suite de ce tuto, nous voulions implémenter un VPN site à site avec PFSENSE, auriez vous un tutoriel dans ce sens.
Merci d’avance !!!
Merci pour cette série d’article précise sur un cas concret ! La doc VMWare n’est pas franchement pédagogue 😉