Déploiement de Proxmox VE 5 sur un serveur dédié – part 2

Posted by

Cette suite d’articles de 2016 a été remis à jour par Charles et moi. Je vous conseille d’aller lire celui ci plutôt, qui sera plus en phase avec les versions actuelles.

Cet article fait partie d’une suite de 3 articles sur la mise en place de Proxmox VE et sa sécurisation et dont voici les adresses :

Après avoir déployé Proxmox, nous allons poursuivre la mise en œuvre de notre infrastructure de Labs sur notre serveur dédié, en procédant aux étapes suivantes :

  • Sécuriser l’OS
  • Paramétrer les interfaces via la WebUI de Proxmox
  • Installer la VM PFSense
  • Utiliser l’iptables de l’hyperviseur pour router et sécuriser les flux

Basic hardening

Je vous conseille TRÈS VIVEMENT (non en fait c’est obligatoire) d’appliquer les bonnes pratiques élémentaires en matière de sécurisation listées dans ce très bon article rédigé par OVH et qui détaille tous les points ci-dessous.

Si vous voulez creuser un peu plus, regardez également du coté des outils d’audit du genre de Lynis (ex rkhunter), c’est simple à utiliser et ça vous donnera plein de pistes sur des vulnérabilités potentielles : Doc d’installation officielle

Voilà, pour ma part, ce que j’ai mis en place :

Changement du mot de passe root

Si vous avez utilisé un mot de passe simple pour éviter les risques d’erreurs lors de la configuration (comme évoqué dans la part 1), on se connecte via SSH et on paramètre un VRAI password.

Mise à jour du système

Toujours une bonne habitude à prendre avant de commencer, même si à l’heure où j’écris ces lignes la version 5 de Proxmox est sortie depuis seulement quelques jours. Rien de compliqué, on est sur une Debian :

apt-get update; apt-get upgrade
Création d’utilisateur

La création d’un utilisateur « lambda », autre que root, est fortement recommandée. Par défaut l’authentification du portail de Proxmox se base sur PAM donc vous pourrez vous loguer avec, après l’avoir ajouté dans la WebUI.

Configuration du serveur SSH

Désactivez l’accès root et privilégiez le recours au user évoqué ci-dessus puis utilisez une élévation de privilège de type su ou sudo.

Installation de Fail2ban

Là aussi indispensable, il s’installe en une commande, il est déjà configuré avec un grand nombre de règles par défaut qui parsent vos différents log et bannissent toutes les @IP concernées. D’ailleurs, si vous n’êtes pas convaincu de son utilité, je vous mets un (petit) extrait de mon auth.log juste avant son installation :

Voilà, voilà … contrairement à notre ami de Nanjing qui a effectué 161 tentatives en 32h avec des logins plus ou moins improbables … nous on se marre moins tout de suite !!

Au passage, voilà un article sur la configuration de Fail2ban de l’hébergeur Digital Ocean (Ils en font d’ailleurs beaucoup d’intéressants je vous encourage à écumer leurs tutos)

Changement du port d’écoute du serveur SSH

Alors là attention, aucun doute sur la pertinence de la mesure, cela vous permettra d’éviter la grande majorité des tentatives d’accès non autorisées car la plupart des bots se contentent de scanner les ports par défauts des principaux services. Par contre si vous faites ça, vous allez devoir adapter le port SSH dans le script iptables que je vous fournis pas la suite et les tentatives d’intrusion sur le port 22 seront redirigés directement sur le PFSense, ce qui n’est pas forcément mieux. Bref à vous de voir, pour ma part je reste sur le port par défaut mais avec un Fail2ban bien configuré.

Configuration du réseau

Voici le plan réseau de l’infrastructure que nous allons mettre en place (cliquez pour agrandir) :

Le but est de rediriger la totalité du trafic entrant sur l’adresse IP public du serveur vers l’interface WAN du PFSense. Cela permet de gérer la sécurisation et le routage des flux simplement, directement depuis PFSense et surtout en évitant d’avoir à doubler chaque règles de filtrage sur l’iptables.

Paramétrage des interfaces virtuels

Cela peut se faire directement via la WebUI de Proxmox, Les réglages seront simplement automatiquement retranscrits dans le fichier « /etc/network/interfaces« .

  • Se connecter à l’interface d’administration

Via un navigateur, on se rend en HTTPS sur l’IP public via le port 8006 (https://PUBLIC-IP:8006). Si vous souhaitez signer vos certificats pour éviter le genre de message que vous allez rencontrer, n’hésitez pas à lire ce superbe article de Zwindler

  • Sélectionner votre node dans la colonne de gauche, puis naviguer dans System > Network

Vous devriez avoir deux interfaces, en01 et en02 (ou eth0 et eth1 chez Kimsufi), qui correspondent aux deux ports physiques de la carte réseau ainsi qu’une interface virtuel, vmbr0 bridgé sur eno1 qui est l’interface active.

On peut d’ailleurs voir à quoi cela correspond en affichant notre fichier de configuration :

cat /etc/network/interfaces

Qui devrait contenir ceci :

auto lo
iface lo inet loopback

iface eno1 inet manual
iface eno2 inet manual

auto vmbr0
iface vmbr0 inet static
 address xx.xx.xx.xx
 netmask 255.255.255.0
 gateway xx.xx.xx.xx
 bridge_ports eno1
 bridge_stp off
 bridge_fd 0

On voit que l’interface eno1 est configuré en « manual », sans adresse IP puisque elle est « portée » par vmbr0, et qu’eno2 n’est pas utilisée.

Création des bridges Linux

On reprend en configurant conformément au schéma ci-dessus :

  • Cliquer sur « Create » et sélectionner « Linux Bridge« 

Le réseau « VmWanNET » (10.0.0.0/30) sera donc volontairement choisit pour limiter à deux le nombre d’adresses atribuables, celle-ci et le WAN du PFSense. Ici pas de bridge sur une interface réelle pour la vmbr1 puisque « WAN » n’existe pas au niveau de l’hyperviseur, mais cela facilitera la correspondance lors du paramétrage de PFSense.

  • Cliquer (à nouveau) sur « Create » et sélectionner (encore) « Linux Bridge« 

Cette fois on configure l’interface vmbr2 qui fera parti du réseau « PrivNET » (192.168.9.0/24), et qui sera utilisée plus tard par l’interface « LAN » du PFSense  :

IP address : 192.168.9.1
Subnet mask : 255.255.255.0
Bridges Ports : LAN

Une fois terminé, cela donne :

  • Rebooter l’hyperviseur

Il suffit de cliquer sur « Restart » en haut à droite. C’est impératif pour prendre en compte proprement les modifications, c’est pas moi qui le dis, c’est marqué au dessus de l’encadré affichant le log : « Pending changes (Please reboot to activate changes) » … allez promis c’est la seule fois où ce sera nécessaire.

Après le redémarrage, vous pouvez vérifier le contenu du fichier « interfaces » :

auto lo
 iface lo inet loopback

iface eno1 inet manual

iface eno2 inet manual

auto vmbr0
 iface vmbr0 inet static
 address xx.xx.xx.xx
 netmask 255.255.255.0
 gateway xx.xx.xx.xx
 bridge_ports eno1
 bridge_stp off
 bridge_fd 0

auto vmbr1
 iface vmbr1 inet static
 address 10.0.0.1
 netmask 255.255.255.252
 bridge_ports WAN
 bridge_stp off
 bridge_fd 0

auto vmbr2
 iface vmbr2 inet static
 address 192.168.9.1
 netmask 255.255.255.0
 bridge_ports LAN
 bridge_stp off
 bridge_fd 0

Je vous conseille de le conserver quelques part puisque en cas de réinstallation, un simple copier/coller suivi d’un reboot vous permettra de tout reconfigurer rapidement. Nous poursuivrons le paramétrage et la sécurisation par la suite.

Déploiement de PFSense

Création de la VM

  • Télécharger l’ISO de PFSense

Rendez-vous sur le site officiel pour récupérer la dernière version stable de la Community Edition, de type « install« , au format ISO et pour archi AMD64 (64bits). On sélectionne ensuite le volume de stockage souhaité, ici « local« , puis on clique sur Content > Upload

Mais on peut également, surtout si votre débit d’upload est poussif, la télécharger directement depuis le serveur dans le répertoire des ISOs :

cd /var/lib/vz/template/iso
wget https://frafiles.pfsense.org/mirror/downloads/pfSense-CE-2.3.4-RELEASE-amd64.iso.gz
gunzip pfSense-CE-2.3.4-RELEASE-amd64.iso.gz
  • Créer la VM pour PFSense

Voilà les paramètres que j’utilise, ceux qui n’y figure pas sont laissés par défaut :

OS

 - Linux/Other OS types : Other OS types

CD/DVD

Use CD/DVD disc image file (iso)
 - Storage : local
 - ISO image : pfSense-CE-2.3.4-RELEASE-amd64.iso

Hard Disk

 - Bus/Device : VirtIO / 0
 - Storage : local
 - Size : 8 GB
 - Format : QEMU (qcow2)

CPU

 - Sockets : 1
 - Cores : 2
 - Type : Défaut (kvm64)

Memory

 Mémoire fixe avec ballooning activé
 - Taille : 2048 MB

Network

 Bridged mode (Accès par pont)
 - Bridge : vmbr1
 - Model Intel E1000

/!\ Pour la carte réseau SURTOUT pas de VirtIO sans installer le driver requis /!\
Pour plus détails => https://forum.pfsense.org/index.php?topic=72907.0

  • Créer la seconde interface réseau

Assurez-vous d’être dans la « Server View » dans le menu en haut à gauche, puis sélectionnez votre VM PFSense nouvellement crée. Enfin, cliquez sur Hardaware > Add > Network Device

La configuration est la même que pour la première mais pontée sur vmbr2.

Installation de l’OS

  • Démarrer la VM via le bouton « Start »
  • Ouvrir une console VNC avec le bouton « Console »

Laisser le boot se terminer, si ce n’est pas encore fait, jusqu’à voir s’afficher le premier écran de l’installeur :

Libre à vous de choisir les réglages qui vous conviennent, valider avec le dernier choix du menu.

  • Choisir « Quick/easy Install »

  • Valider à nouveau et l’installation se lance
  • Sélectionner le choix par défaut « Standard Kernel« 
  • Autoriser le reboot

Vérifiez le boot order de la VM pour bien démarrer sur le disque local, vous pouvez également éjecter l’ISO.

Configuration des interfaces

Une fois la VM redémarrée, vous arrivez sur le menu principal de la console de PFSense :

  • Taper « 1 » (pas trop fort) pour assigner les interfaces, puis configurer comme suit :
 - Paramétrage des VLANs : No (n)
 - WAN interface name : em0
 - LAN interface name : em1
 - Optional 1 interface name : Aucun (appuyer sur entrée)
 - Valider (avec y) si :
 WAN -> em0
 LAN -> em1
  • De retour dans menu général  taper « 2 » pour configurer les @IP des interfaces
Taper "1" pour le WAN (em0 - static)
 - DHCP : No (n)
 - @IP : 10.0.0.2
 - Masque : 30
 - Gateway : 10.0.0.1
 - DHCP6 : No (n)
 - WAN IPv6 address : Aucune (appuyer sur entrée)
 - HTTP revert : No (n)
 - Valider (avec entrée) si :
IPv4 WAN address => 10.0.0.2/30
  • A nouveau  « 2 » pour configurer les @IP des interfaces
Taper "2" pour le LAN (em1 - static)
 - @IP : 192.168.9.254
 - Masque : 24
 - Gateway : Aucune (appuyer sur entrée)
 - @IPv6 : Aucune (appuyer sur entrée)
 - DHCP server : No (n)
 - HTTP revert : No (n)
 - Valider (avec entrée) si :
IPv4 LAN address => 192.168.9.254/24
  • Rebooter la VM en tapant « 5 » puis « y »
  • A l’issue, taper « 7 » pour tester le ping vers 10.0.0.1 (l’adresse de vmbr1) et ainsi vérifier la connectivité au sein du VmWanNET

Finalisation via la WebUI

  • Se connecter à la WebUI via un navigateur à l’adresse https://192.168.9.254 …

… Quoi ? … Ça ne marche pas ? … Sûr ? … C’est con …

Bon pour ceux qui suivent encore, félicitations ! Pour les autres, l’interface LAN de PFSense n’est pour l’instant pas accessible depuis l’extérieur … et c’est tant mieux car le password et le login sont toujours ceux par défaut. La solution la plus simple est donc de créer une VM avec n’importe quel OS, du moment qu’il possède une interface graphique et un navigateur web (et que ce n’est pas un Windows). Une Ubuntu Desktop, à télécharger sur le site officiel, fera parfaitement l’affaire.

Je ne vais pas revenir sur la création de la VM, sachez juste que 5 Go de disque et 512 Mo de RAM suffisent. N’oubliez pas de bridger la carte réseau sur vmbr2 pour accéder au réseau LAN. Vous pouvez également, une fois la VM crée, modifier le paramètre Hardware > Display en « VMWare compatible » c’est qui vous permettra de disposer d’autres résolutions plus confortable que le minuscule 800×600.

Une fois l’OS installé, il faut tout de même paramétrer le réseau manuellement puisque nous n’avons pas (encore) de serveur DHCP fonctionnel :

- IP : 192.168.9.10 (Peu importe tant qu'on reste dans 192.168.9.0/24)
- Netmask : 255.255.255.0
- Gateway : 192.168.9.254
- DNS : 8.8.8.8
  • Se connecter à la WebUI via un navigateur à l’adresse https://192.168.9.254 (non mais vraiment cette fois)
Username : admin
Password : pfsense

Suivez le (White) Wizard

Rapport à ma VM PFsense qui se nomme Olorin … pertinent pour un pare-feu …

« You Shall Not Pass ! » … ok si vous l’avez toujours pas j’abandonne.

  • Choisir un hostname (non pas celui-là, c’est le mien) et le(s) serveur(s) DNS souhaité(s)
  • Valider ou modifier le FQDN du serveur NTP

Pour la suite rien à modifier en principe puisque nous avons fait les réglages via la console précédemment.

  • Vérifier la configuration de l’interface WAN
IP Address : 10.0.0.2
Subnet Mask : 30
Upstream Gateway : 10.0.0.1
  • Vérifier la configuration de l’interface LAN

LAN IP Address : 192.168.9.254
Subnet Mask : 24

  • Changer le mot de passe administrateur
  • Recharger la configuration et l’accueil du dashboard s’affiche

Configuration du réseau (suite)

Routage et NAT

Particulièrement pour cette partie, je vous encourage à garder le plan réseau à portée de vue.

Pour l’instant, le WAN du PFSense communique bien avec le vmbr1 ,normal me direz vous, ils sont sur le même segment réseau et WAN est ponté sur vmbr1 dans Proxmox. Maintenant nous allons faire le nécessaire pour pouvoir sortir sur internet depuis la patte WAN du PFSense et donc également depuis le LAN par la suite.

  • Pour cela, créer un petit script sur le serveur Proxmox
vi /root/kvm-networking-up.sh
  • Coller les lignes suivantes :
#!/bin/sh

## IP forwarding activation
echo 1 > /proc/sys/net/ipv4/ip_forward

# Point PFSense WAN as route to VMs
ip route change 192.168.9.0/24 via 10.0.0.2 dev vmbr1

# Point PFSense WAN as route to VPN
ip route add 10.2.2.0/24 via 10.0.0.2 dev vmbr1

Comme indiqué dans les commentaires :

  • La première ligne active le routage
  • La deuxième indique au serveur de sortir par vmbr1 puis de passer par le WAN du PFSense pour communiquer avec les VMs. Cela permet d’isoler vmbr2 du reste de « PrivNET », cette sécurité sera renforcée, lors de la configuration d’iptables par un blocage complet des flux sur vmbr2.
  • Même chose pour la dernière mais pour communiquer avec le(s) client(s) du VPN que nous configurerons dans la suite de l’article.

Puis pour qu’il soit lancé automatiquement au boot, lors du démarrage de vmbr1 :

  • Lui permettre de s’exécuter
chmod +x /root/kvm-networking-up.sh
  • Paramétrer son appel dans le fichier « interfaces »
vi /etc/network/interfaces

Ajouter la ligne en gras à la fin du bloc de configuration du bridge vmbr2 :

[...]
auto vmbr1
 iface vmbr1 inet static
 address 10.0.0.1
[...]

auto vmbr2
 iface vmbr2 inet static
[...]
 bridge_fd 0

post-up /root/kvm-networking-up.sh

Comme je vous ai promis qu’on ne rebooterait plus au début de cette article, on va simplement l’exécuter manuellement pour cette fois :

/root/kvm-networking-up.sh

[Edit zwindler]M4vr0x a oublié qu’il a déplacé une règle IPtable pour rediriger le traffic de l’IP externe vers le pfsense… La ligne suivante ne marche pas encore, mais à l’étape d’après[/Edit]

  • Relancer la console VNC du PFSense et taper « 7 » pour vérifier le ping vers l’internet (genre 8.8.8.8)

Sécurisation de l’hyperviseur via iptables

Voilà on a presque terminé mais pendant qu’on s’amusait, et malgré les mesures prises au début de ce tuto, une armée de bots (et pas que des chinois), des hordes de BlackHat ainsi que l’intégralité de la NSA, du GCHQ et de … l’ANSSI ? … se tirent la bourre pour essayer de pénétrer sur votre petit serveur sans défense.

Je n’aurais donc que trois choses à dire :

  1. Si vous ne savez pas ce qu’est le GCHQ, il faut absolument lire ce magnifique article !
  2. Si vous ne savez pas ce qu’est la NSA … là je ne peux plus rien pour vous
  3. Nous n’allons pas mourir sans combattre et nous allons au moins … essayer de les ralentir !

Création des règles

Nous allons créer un script pour exécuter toutes les commandes iptables requises. Je vous encourage à ne pas automatiser son lancement au boot avant d’être totalement sûr que tout fonctionne bien.

Pour ceux qui ont pris iptables en deuxième langue au collège, je vous donne directement le contenu du script (à copier sur le serveur Proxmox) :

Pour les autres, je vous conseille de bien lire (et comprendre tant qu’à faire) ce qui suit jusqu’à la fin avant de vous lancer. J’ai commenté quasiment chaque ligne mon script le plus explicitement possible, donc je vais simplement vous expliquer le rôle de chacune des parties :

VARIABLES : On commence par la variabilisation des noms de bridges, des @IP et des réseaux. Cela vous permettra de l’adapter rapidement à votre configuration si elle diffère. Quoi qu’il en soit, il faut absolument définir la variable « PublicIP » avec celle de votre serveur.

CLEAN ALL & DROP IPV6 : Ensuite on supprime toutes les règles existantes.

Petit point d’attention, le script, légèrement bourrin, flush toutes les tables et supprime toutes les chaines personnalisées vides à chaque exécution. Si vous voulez éviter ça, pour garder votre/vos chaines Fail2ban existantes par exemple, je vous conseille de plutôt spécifier les tables et chaines à nettoyer.

DEFAULT POLICY : On positionne les polices par défaut à DROP : tout ce qui ne sera pas explicitement autorisé sera interdit (comme à l’armée … \o/ ça faisait longtemps).

CHAINS : On crée des chaines personnalisées pour éviter la répétition des options.

GLOBAL RULES : Elles permettent les communications from/to l’interface locale, préservent les connections déjà actives et autorisent la réponse au ping.

RULES FOR PrxPubVBR : On passe à la configuration des flux pour l’interface bridge vmbr0, c’est ici que tout se joue.

L’idée est simple, on ne va autoriser que les services du Proxmox auxquels on souhaite pouvoir accéder depuis internet via l’IP public (donc le moins possible). TOUS les autres flux seront redirigés sur l’interface WAN du PFSense ce qui nous permettra, comme expliqué au début, d’éviter une pénible gestion de deux firewall chainés. Une fois que le VPN sera configuré on pourra d’ailleurs désactiver l’accès externe à la WebUI. Pour le SSH on pourra garder un accès de secours en cas de problème avec le futur VPN.

RULES FOR PrxVmWanVBR : Pour vmbr1, c’est très simple, on autorise seulement les connexions, en provenace du LAN des VMs et du/des client(s) VPN,  à sshd et l’interface web de Proxmox.

RULES FOR PrxVmPrivVBR : Pour vmbr2, encore mieux, on laisse tout fermé !

De plus, comme paramétré précédemment, aucune route ne passe par ce bridge. C’est un moyen simple et assez efficace d’isoler au maximum cette interface du réseau auquel elle appartient. Le mieux aurait été d’utiliser une configuration similaire au mode « promiscuous » des Vswitchs d’ESX mais je n’ai pas trouvé d’équivalent pour KVM. Une autre solution utilisant la seconde interface physique du serveur est à l’étude par mon expert en sécurité et fera peut être l’objet d’un article spécifique ou d’une MAJ future. D’ailleurs j’en profite :

Merci Nico, Merci Zwindler !

La clusterisation de nos cerveaux (non ce n’est pas sale) m’a fait gagner beaucoup de temps :-D

Et voilà ! (avec l’accent américain) Vous avez bien bossé et vous disposez d’une infra totalement fonctionnelle et relativement bien sécurisé, GG !

Il nous restera bien sûr à configurer les règles adéquates sur PFSense pour les services de vos futures VMs auxquels vous souhaiterez accéder depuis l’extérieur et configurer un serveur VPN afin d’y accéder directement au chaud depuis votre nouveau LAN.

Nous allons voir tout ça dans la troisième et dernière partie de cette article par ici.


Vous aimez ce blog ? Partagez-le avec vos amis !   Twitter Facebook Linkedin email

Vous pouvez également soutenir le blog financièrement :
Tipeee

212 comments

  1. Salut,

    J’ai à peu près la même conf que toi au niveau proxmox + pfsense.
    Et le problème, c’est qu’à la lecture de cet article je me pose des questions sur ma configuration !
    Est-ce que j’ai les même fonctionnalité que toi il me manque des trucs ? C’est sécure mon bouzin ?

    En textuel :
    A part quelques ports (interface web proxmox, ssh) je transfère tout au PFSense qui lui n’autorise aucun trafic sauf ceux que j’autorise.
    Bon après la petite faile de sécu c’est que l’interface web de PFSense est joignable depuis le WAN, mais avec un mdp long comme mon bras (vive keepass) et sur un autre port que le 443. Le ssh du proxmox est aussi sur un autre port (avec fail2ban) .

    En iptables sur le proxmox, cela donne plus ou moins (dans l’exemple ci-dessous le ssh =22)

    iptables -A PREROUTING -d $IpProxmox –dport 1:21 -j DNAT –to-destination 10.0.0.2
    iptables -A PREROUTING -d $IpProxmox –dport 23:8005 -j DNAT –to-destination 10.0.0.2
    iptables -A PREROUTING -d $IpProxmox –dport 8007:65535 -j DNAT –to-destination 10.0.0.2
    iptables -A POSTROUTING -s 10.0.0.0/24 -j SNAT –to-source $IpProxmox

    Note : J’ai pris iptables en troisième lange, mais je ne suis vraiment pas doué pour les langes étrangères !

    En attandant le(s) prochain(s) article(s) : Merci pour ceux-ci et les autres et … A+.

    PS, pour la config du ssh : https://blog.arnaudminable.net/secure-shell-mon-amour-dechu/ .

    1. Salut Gannon,

      Concernant l’accès à la WebUI depuis l’exterieur, ça constitue effectivement un potentiel vecteur d’attaque, c’est pour ça que j’utilise de mon coté accés VPN sur le PFSense (ce sera traité la semaine prochaine dans la part 3). Ca te permet de ne plus garder que le SSH. Après vu que tu as un password très long, un fail2ban pour apache et un port personnalisé, tu devrais quand même pouvoir dormir tranquille.

      Pour ce qui est des règles iptables :
      – Il te manque l’option -t pour spécifier que tes cibles concernent la table NAT
      – C’est surement juste un souci de copier/coller mais attention, les options sont -–dport (pas –dport) et –to-destination (pas -to-destination). peut être qu’iptables comprend quand même, à tester. ;-)
      – Tes commandes PREROUTING doivent être différenciées par protocole (TCP/UDP). Tu peux aussi grouper simplement tes 3 commandes en une seule en utilisant l’option « ! –dports » qui te permet de rediriger TOUS les ports à l’exception de ceux que tu spécifies. Imagine si tu as dix port à ouvrir … tu vas devoir découper tes 65535 ports en 11 règles !
      – Pour la commande POSTROUTING, à priori aucun problème pour utiliser la cible SNAT au lieu de MASQUERADE (Doc NAT), c’est d’ailleurs même peut être plus pertinent, dans notre cas de figure, je vais creuser ça.

      Voilà ce que ça donnerait pour toi :
      iptables -A PREROUTING -t nat -d $IpProxmox -p tcp –match multiport ! –dports 22,8006 -j DNAT –to 10.0.0.2
      iptables -A PREROUTING -t nat -d $IpProxmox -p udp -j DNAT –to 10.0.0.2
      iptables -A POSTROUTING -t nat -s 10.0.0.0/24 -j SNAT -–to-source $IpProxmox

      Pour ton niveau de LV3, je te rassure je ne suis pas un expert non plus, en revanche ça me fait penser que je suis tombé sur
      explainshell.com il y a peu de temps : Tu colles ta commande et ça t’affiche l’extrait du MAN pour chaque options, je connaissais pas ce genre de site et ça existe probablement depuis longtemps mais je trouve l’idée géniale.

      Et merci à toi pour tes encouragements !

  2. Salut,
    Très bon article, je suis en pleins dans le même type de recherche en ce moment et depuis logntemps … J’aurais aimé savoir quel logiciel vous utilisez pour votre schéma ?

  3. Will you please show your « route -n », « ifconfig -a » and « cat /etc/network/interfaces » from your proxmox after all is setup? I am stuck where ping from my pfsense is going out eht0 on the proxmox but i dont see pings coming back… tcpdump shows the packets source ip as my WAN interface of pfSense IP address.

    1. Hi M,

      If the source adress of your ICMP packets is the PFSense WAN IP on tcpdump, i’d say that the masquerade is missing. Could you check this line does exist in you FW script :

      ### MASQUERADE MANDATORY
      # Allow WAN network (PFSense) to use vmbr0 public adress to go out
      iptables -t nat -A POSTROUTING -s $VmWanNET -o $PrxPubVBR -j MASQUERADE

      Anyway, here is my routing table :

      Kernel IP routing table
      Destination Gateway Genmask Flags Metric Ref Use Iface
      0.0.0.0 [PublicGateway] 0.0.0.0 UG 0 0 0 vmbr0
      10.0.0.0 0.0.0.0 255.255.255.252 U 0 0 0 vmbr1
      10.2.2.0 10.0.0.2 255.255.255.0 UG 0 0 0 vmbr1
      [PublicNetwork] 0.0.0.0 255.255.255.0 U 0 0 0 vmbr0
      192.168.9.0 10.0.0.2 255.255.255.0 UG 0 0 0 vmbr1

      The interfaces configuration is exactly the one shown in the article and this is my ifconfig :

      eno1: flags=4163 mtu 1500
      ether a4:5d:36:c5:73:e8 txqueuelen 1000 (Ethernet)
      RX packets 4301450047 bytes 4347234480909 (3.9 TiB)
      RX errors 0 dropped 88512 overruns 0 frame 0
      TX packets 7815336760 bytes 9884841301476 (8.9 TiB)
      TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
      device interrupt 17

      eno2: flags=4098 mtu 1500
      ether a4:5d:36:c5:73:e9 txqueuelen 1000 (Ethernet)
      RX packets 0 bytes 0 (0.0 B)
      RX errors 0 dropped 0 overruns 0 frame 0
      TX packets 0 bytes 0 (0.0 B)
      TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
      device interrupt 18

      lo: flags=73 mtu 65536
      inet 127.0.0.1 netmask 255.0.0.0
      inet6 ::1 prefixlen 128 scopeid 0x10
      loop txqueuelen 1000 (Local Loopback)
      RX packets 2285809 bytes 1300526507 (1.2 GiB)
      RX errors 0 dropped 0 overruns 0 frame 0
      TX packets 2285809 bytes 1300526507 (1.2 GiB)
      TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

      tap100i0: flags=4419 mtu 1500
      ether 8a:82:cf:78:cb:7b txqueuelen 1000 (Ethernet)
      RX packets 1247318628 bytes 1404888209584 (1.2 TiB)
      RX errors 0 dropped 0 overruns 0 frame 0
      TX packets 768489416 bytes 693949973029 (646.2 GiB)
      TX errors 0 dropped 545 overruns 0 carrier 0 collisions 0

      tap100i1: flags=4419 mtu 1500
      ether 7a:89:c2:15:f8:2d txqueuelen 1000 (Ethernet)
      RX packets 765082057 bytes 689245264249 (641.9 GiB)
      RX errors 0 dropped 0 overruns 0 frame 0
      TX packets 1247536613 bytes 1398608211292 (1.2 TiB)
      TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

      tap101i0: flags=4419 mtu 1500
      ether 3a:f2:9d:cf:f4:14 txqueuelen 1000 (Ethernet)
      RX packets 722009645 bytes 755185397364 (703.3 GiB)
      RX errors 0 dropped 0 overruns 0 frame 0
      TX packets 321174015 bytes 177674714104 (165.4 GiB)
      TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

      tap122i0: flags=4419 mtu 1500
      ether 5a:d8:6b:8a:84:39 txqueuelen 1000 (Ethernet)
      RX packets 1172135 bytes 1402384030 (1.3 GiB)
      RX errors 0 dropped 0 overruns 0 frame 0
      TX packets 3544657 bytes 3438554517 (3.2 GiB)
      TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

      vmbr0: flags=4163 mtu 1500
      inet [PublicAdress] netmask 255.255.255.0 broadcast [PublicBroadcast]
      inet6 [PublicAdress] prefixlen 64 scopeid 0x20 ether a4:5d:36:c5:73:e8 txqueuelen 1000 (Ethernet)
      RX packets 2688283745 bytes 4180670655642 (3.8 TiB)
      RX errors 0 dropped 7365 overruns 0 frame 0
      TX packets 7813244840 bytes 9852540372858 (8.9 TiB)
      TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

      vmbr1: flags=4163 mtu 1500
      inet 10.0.0.1 netmask 255.255.255.252 broadcast 10.0.0.3
      inet6 fe80::2b:64ff:fe06:f33e prefixlen 64 scopeid 0x20 ether 8a:82:cf:78:cb:7b txqueuelen 1000 (Ethernet)
      RX packets 7821219770 bytes 9741803578766 (8.8 TiB)
      RX errors 0 dropped 0 overruns 0 frame 0
      TX packets 2667352615 bytes 4276301320912 (3.8 TiB)
      TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

      vmbr2: flags=4163 mtu 1500
      inet 192.168.9.1 netmask 255.255.255.0 broadcast 192.168.9.255
      inet6 fe80::b49d:48ff:feae:5f11 prefixlen 64 scopeid 0x20 ether 7a:89:c2:15:f8:2d txqueuelen 1000 (Ethernet)
      RX packets 609642 bytes 78790422 (75.1 MiB)
      RX errors 0 dropped 0 overruns 0 frame 0
      TX packets 4 bytes 260 (260.0 B)
      TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

      Still, if i were you i’d look closely and make test on your iptable rules script.
      Try to open all and ping again before wrack your brain on interfaces/route configurations.
      Hope it helps.

  4. Thank you greatly for your comment. I forgot to run the « echo 1 > /proc/sys/net/ipv4/ip_forward » after rebooting the proxmox server, and that resolved the issue. However, now I can ping from VM and when doing a tcpdump on eth0 of the proxmox I see the traffic is being NATed, but when I try to connect to a website or port 80 from the VMs, the traffic is not being NATed and tcpdump on eth0 shows it trying to exit proxmox using the WAN IP of the pfSense.

    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
    01:58:13.335707 IP 178.32.xx.xx > 104.196.xx.xx: ICMP echo request, id 23078, seq 1, length 64
    01:58:13.922392 IP 104.196.xx.xx > 178.32.xx.xx: ICMP echo reply, id 23078, seq 1, length 64
    01:58:15.027455 IP 178.32.xx.xx > 104.196.xx.xx: ICMP echo request, id 23078, seq 2, length 64
    01:58:15.119712 IP 104.196.xx.xx > 178.32.xx.xx: ICMP echo reply, id 23078, seq 2, length 64
    01:58:16.029143 IP 178.32.xx.xx > 104.196.xx.xx: ICMP echo request, id 23078, seq 3, length 64
    01:58:16.121360 IP 104.196.xx.xx > 178.32.xx.xx: ICMP echo reply, id 23078, seq 3, length 64
    01:58:17.030772 IP 178.32.xx.xx > 104.196.xx.xx: ICMP echo request, id 23078, seq 4, length 64
    01:58:17.123005 IP 104.196.xx.xx > 178.32.xx.xx: ICMP echo reply, id 23078, seq 4, length 64
    01:58:18.032563 IP 178.32.xx.xx > 104.196.xx.xx: ICMP echo request, id 23078, seq 5, length 64
    01:58:18.124799 IP 104.196.xx.xx > 178.32.xx.xx: ICMP echo reply, id 23078, seq 5, length 64
    01:58:19.034202 IP 178.32.xx.xx > 104.196.xx.xx: ICMP echo request, id 23078, seq 6, length 64
    01:58:19.126264 IP 104.196.xx.xx > 178.32.xx.xx: ICMP echo reply, id 23078, seq 6, length 64
    01:58:20.035763 IP 178.32.xx.xx > 104.196.xx.xx: ICMP echo request, id 23078, seq 7, length 64
    01:58:20.127932 IP 104.196.xx.xx > 178.32.xx.xx: ICMP echo reply, id 23078, seq 7, length 64
    01:58:26.291260 IP 10.0.0.2.58305 > 104.196.xx.xx.80: Flags [S], seq 3234914785, win 29200, options [mss 1460,sackOK,TS val 288961 ecr 0,nop,wscale 7], length 0
    01:58:27.289143 IP 10.0.0.2.58305 > 104.196.xx.xx.80: Flags [S], seq 3234914785, win 29200, options [mss 1460,sackOK,TS val 289211 ecr 0,nop,wscale 7], length 0
    01:58:29.293163 IP 10.0.0.2.58305 > 104.196.xx.xx.80: Flags [S], seq 3234914785, win 29200, options [mss 1460,sackOK,TS val 289712 ecr 0,nop,wscale 7], length 0
    01:58:33.301226 IP 10.0.0.2.58305 > 104.196.xx.xx.80: Flags [S], seq 3234914785, win 29200, options [mss 1460,sackOK,TS val 290714 ecr 0,nop,wscale 7], length 0
    01:58:41.325366 IP 10.0.0.2.58305 > 104.196.xx.xx.80: Flags [S], seq 3234914785, win 29200, options [mss 1460,sackOK,TS val 292720 ecr 0,nop,wscale 7], length 0
    01:58:57.357616 IP 10.0.0.2.58305 > 104.196.xx.xx.80: Flags [S], seq 3234914785, win 29200, options [mss 1460,sackOK,TS val 296728 ecr 0,nop,wscale 7], length 0

    Any suggestions?

  5. Here are the current NAT settings:

    ~# iptables -t nat -n -L
    Chain PREROUTING (policy ACCEPT)
    target prot opt source destination
    DNAT tcp — 0.0.0.0/0 0.0.0.0/0 multiport dports !22,8006 to:10.0.0.2
    DNAT udp — 0.0.0.0/0 0.0.0.0/0 to:10.0.0.2

    Chain INPUT (policy ACCEPT)
    target prot opt source destination

    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination

    Chain POSTROUTING (policy ACCEPT)
    target prot opt source destination
    MASQUERADE all — 10.0.0.0/30 0.0.0.0/0

  6. Follow up, I can hit ports 80 and 443 from the pfsense through the masquerade on the proxmox, but my VMs behind the pfSense are not able to…. watching the tcpdump on eth0 of proxmox i see the pfSense traffic as properly NAT translated but VM traffis is not for some reason. Could it be a limit on the ephemeral port number? The pfSense was using 34209, where the VM is using 48946?

  7. Pour securiser encore plus, je sais pas si c’est une bonne idée de chiffrer les partitions ? Au moins le NAS ?

    1. Je vais répondre à la place de M4vr0x (qui aura peut être une réponse meilleure/différente de moi) : chiffrer les données, oui, mais dans quel but ?

      Si c’est pour empêcher un attaquant externe de les récupérer ça ne sert à rien puisque s’il prend la main sur une machine compromise (ProxMox ou VM), il aura la main sur les données qui lui seront servies par le NAS, qui croira s’adresser à un programme légitime.

      Si c’est pour empêcher le provider de récupérer vos données lorsque vous résiliez le serveur (ou s’il le clone ou s’il débranche le disque et lit sans que vous le sachiez), oui ça peut être légitime. Cependant, ça me parait nécessiter un effort conséquent de la part du provider pour un gain faible dans le cas de M4vr0x, qui n’héberge pas de données sensibles (sauf s’il stocke des backups de fichiers personnels, qui elles pourront être chiffrées à part).

      Chiffrer à un coût sur les performances. Même s’il est faible, je suis de ceux qui pensent qu’il vaut toujours mieux se demander si un traitement (quel qu’il soit) à un intérêt par rapport au gain apporté (ici, par rapport à ce qu’en retire un attaquant potentiel si on ne le fait pas).

      Ça aurait un intérêt nettement plus important s’il hébergeait un service web, des données personnelles ou commerciales. Et je ne parle même pas du cas où il aurait utilisé du stockage managé par un cloud provider (type AWS S3 ou autre). Dans ce dernier cas, chiffrer me parait obligatoire car le fournisseur de service à accès direct aux données, puisque c’est lui qui les administre, et peut avoir un intérêt économique à les lire !

  8. Salut, c’est encore moi.
    Je viens de m’apercevoir que Kimsufi ne fournissait plus le model de mon serveur mais fournissait pour le même prix le même mais avec l’espace disque doublé (2T au lieu de 1T).
    Et, j’ai décidé de tester ton archi pour voir.
    Seul pb, je n’arrive pas à joindre l’internet avec mon pfsense.

    Quand je fais un traceroute depuis l’interface lan, j’ai 10.0.0.1 comme dernier saut valide.
    J’en déduis donc que j’ai du faire une gaffe quelque part puisque Proxmox n’arrive pas à passer de son réseaux interne à l’internet mais je vois pas où …

    Si quelqu’un avait une idée…
    Merci par avance pour l’aide.

    1. As-tu écris et exécuté le script « kvm-networking-up.sh » que M4vr0x décrit dans l’article ? Ça ressemble à une règle IPTables manquante

    2. re, j’ai recommencé et c’est bon, cela fonctionne. Au faite pour moi il manquait la règle le pfsense (wan) à aller sur l’Internet.
      iptables -t nat -A POSTROUTING -s $VmWanNET -o $PrxPubVBR -j MASQUERADE

      Au passage, toutes les connections utilisant http/https ( apt-get update upgrade et wget ) étaient très lente jusqu’à ce que je m’aperçoive elles essayent tous l’IPV6 avent l’IPV4 (ce qui est normal, c’est par défaut). Solution : commenter les paramètres IPV6 dans interfaces.

  9. Salut M4vr0x, tout d’abord merci pour les supers tutos, ensuite petites questions.

    Le VmWanNet que tu créer, est-il présent uniquement à cause de l’absence d’IP FO chez Kimsufi ou a-t-il une autre utilité ? Penses-tu qu’il soit préférable de se passer de ce VmWanNet et d’utiliser une IP FO directement pour le WAN Pfs et une autre pour le Proxmox si on a accès à cette option (mon cas)?

    Bonne continuation et encore merci !

  10. Bonjour,
    D’abord merci pour le tuto, je viens de me lancer dans dans la virtualisation et commencé à suivre votre tuto. Deux choses à savoir de mon côté j’ai deux cartes réseaux: eth0 et eth1 et une interface virtuel, vmbr0 qui brige sur eth0 activé.
    J’ajoute un vmbr1 qui est brigé sur eth1 activé.
    Je suis tout le reste du tuto avec ces mêmes adresses Ip.
    Après la CONFIGURATION DES INTERFACES, je redémarre, la VM PFSense et quand je lance le ping sur 10.0.0.1 ou 10.0.0.3 il m’affiche down tous les packets sont perdus et le ping ne passe pas. Pourriez-vous me dire ce qui se passe avant que je continuer la FINALISATION VIA LA WEBUI
    D’avance merci pour votre aide

  11. Il y a peut être une bonne raison mais pourquoi attacher vmbr1 sur l’ETH1 ?

    Que le ping ne passe pas pour 10.0.0.3 : c’est normal. Le masque réseau proposé par M4vr0x n’accepte que 10.0.0.1 et 10.0.0.2 (10.0.0.0/30).

    Pour ce qui est du fait que le ping vers 10.0.0.1 (j’imagine que vous le faites bien depuis PFSense !), c’est soit un problème d’IPTable sur le proxmox (la fameuse 10.0.0.0/30), soit un problème de binding des interfaces sur le pfsense.

  12. Bonjour,
    Oui, je viens de faire les modifications sur mes brige comme ceci:
    vmbr0 brigé sur eth0
    vmbr1: ports membres mis en WAN
    vmbr2: ports membres mis en LAN
    En gardant la même configuration que toi, le ping ne de 10.0.0.1 ou de 10.0.0.2 ne passe toujours pas depuis PFSense.
    Je n’ai pas encore installé Iptable pour le moment car je voulais d’abord voir si le ping allait fonction comme chez toi, mais malheureusement non.
    Une autre question qui viendra un peu plus loin, j’ai un bloc d’adresse Ip (pré) sur le même réseau, si je souhaites avoir 3 VMs avec ces Ips en DHCP est ce qu’il faudra juste modifier ces adresses publics 10.0.0.1/30 car mes Ip sont de cette forme X.X.X.X/30 ?
    A bientôt

  13. Normalement le trafic vers 10.0.0.1 devrait fonctionner si tu re-déroules bien toutes les étapes du tuto. M4vr0x (qui a écrit l’article) l’a fait 3 fois et je l’ai aussi fais, ça fonctionne.
    Pour ce qui est est la 2ème question, les machines virtuelles ne seront pas en 10.0.0.0/30, ce réseau est réservé aux 2 IP 10.0.0.1 de l’hyperviseur et 10.0.0.2 de pfsense il ne faut donc rien mettre d’autre dessus.
    D’ailleurs elles ne sont même pas sur cette vmbr, ils faut les mettre sur le vmbr dit LAN avec des IPs du type 192.168.9.0/24, sur le réseau interne géré par pfsense
    Pour ce qui est du DHCP, le plus imple est d’ailleurs de déléguer ce rôle à pfsense qui le fait très bien.

    1. Visiblement la configuration est bonne côté pfsense

      Est ce que la VM est bien branchée sur vmbr1 (vtnet0) et vmbr2 (vtnet1) ?

  14. Bonjour max,
    Si tu vois bien mon lien ci-dessus j’ai mis en LAN : 192.168.9.1 et non 192.168.1.1
    Alors je ne comprends pas ta réponse.
    Merci d’être plus claire.

    1. Dans la capture d’écran de ton pfsense le LAN est en 192.168.1 d’où la réponse de max. Ça n’explique pas pourquoi tu ne ping pas 10.0.0.1 depuis pfsense (ou inversement) mais c’était bien vu donc merci max :)

  15. Zwindler excuse-moi d’être lourd, mais ce lien que je vous présente montre bien que le réseau LAN est bien 192.168.9.1 voir l’image: http://www.zupimages.net/up/17/42/8aoo.png
    Alors je nesais pas comment vous faites pour voir que celui-ci s’affiche en 192.168.1.1 ?
    Je me pose bien la question.
    Car le ping ne passe toujours pas chez moi depuis pfsense

    1. Visiblement je n’ai pas été clair dans mon message précédent : le ton que vous prenez avec les personnes qui essayent de vous aider ne me plait pas du tout. Alors si ce n’était qu’à moi, passe encore, je suis admin, j’accepte cette éventualité. Mais « max », que je ne connais absolument pas, a fait l’effort de vous donner une piste et vous l’envoyez balader (au lieu de remercier!).
      max parlait de la première capture, dans votre message du 20/10/2017 à 17 h 27 : http://www.zupimages.net/up/17/42/yq1s.png On voit très distinctement 192.168.1.1/24

      Pour ce qui est de votre problème, je ne peux redire que ce que j’ai déjà dis : il n’y a pas de raisons que la carte WAN en 10.0.0.2/30 ne communique pas avec la carte virtuelle sur le vmbr1 de l’hôte proxmox en 10.0.0.1/30. Ça n’a pas de rapport avec le tuto, c’est du réseau.

      Si ça ne fonctionne pas et que vous ne voyez vraiment pas ce que cela peut être, que vous êtes bloqué, etc. il vous reste toujours la possibilité de tout recommencer et suivre (à nouveau) pas à pas les étapes décrites dans l’article.

  16. Hello,
    Je viens de tout refaire et ça fonctionne, désolé pour toutes ces questions j’ai vu là ou j’avais fais l’erreur.
    car mon LAN était configurer avec deux Ips différents.
    Encore merci pour votre patiente et à bientôt

  17. Bonjour,

    Merci pour ces articles forts intéressants! C’est bien dans l’actualité et surtout bien détaillé/expliqué!

    J’ai une question peut être bete mais pourquoi le Pfsense n’est pas sur l’eth0 avant l’hyperviseur?

  18. En réalité ce n’est pas possible (si je ne dis pas de bêtises) dans l’exemple de l’article. L’eth0 (en0 dans l’article), c’est l’IP publique du serveur dans le cas où on a acquis un serveur chez un hébergeur.
    Elle est branchée seule sur vmbr0. On ne peut pas y ajouter d’autres IP, tout simplement parce qu’on n’a pas la main sur l’adressage IP chez l’hébergeur (surtout chez Kimsufi!).

    La solution que M4vr0x a privilégié ici, dans ce cas précis, est donc bien de créer un bridge virtuel vmbr1 qui nous permet d’avoir un adresse virtuel, interne à l’hyperviseur. Et du coup si on veut mettre les VMs dans un autre plan d’adressage distinct, il faut bien faire un vmbr2.

    Clairement, avoir le PFSense en tant que VM de l’hyperviseur, c’est un compromis, mais que je trouve acceptable pour un « lab ». En terme de sécurité, il faut imaginer que les VMs sont bien coupées du monde extérieur puisque l’ensemble du trafic passe par le firewall, qui est en amont de tout, SAUF l’interface web de proxmox et SSH. Et encore, on peut couper leur accès en direct si on utilise la solution du VPN proposé par M4vr0x.

    L’idéal serait d’avoir une machine supplémentaire (un petit serveur kimsufi à 6€/mois par exemple) avec pfsense dessus, et qui serait aussi le frontal pour Proxmox, mais c’est plus cher et il faut le sécuriser ;-).

  19. Bonjour à tous, dans le tuto il y a marqué :
    Taper « 2 » pour le LAN (em1 – static)
    – @IP : 192.168.9.254
    – Masque : 24
    – Gateway : Aucune (appuyer sur entrée)
    – @IPv6 : Aucune (appuyer sur entrée)
    – DHCP server : No (n)
    – HTTP revert : No (n)
    – Valider (avec entrée) si :
    IPv4 LAN address => 192.168.9.254/24

    alors qu on demande dans les commentaires d’avoir un lan en 192.168.9.1.

    Il faut prendre quoi 9.254 ou 9.1 ?

    1. Salut Wirr,

      Si tu suis le plan d’adressage que j’ai choisis et illustré dans l’article, l’interface LAN de ta VM PFSense doit être en 192.168.9.254. (Cf mon magnifique schéma réseau) ;-)
      192.168.9.1 est attribuée à l’interface vmbr2 de l’hôte Proxmox (l’hyperviseur).

  20. humm du coup ce que vous avez dit a Gourmand sur son screen http://www.zupimages.net/up/17/42/yq1s.png
    il faut bien laisser en 192.168.9.254

    désolé avec toutes ces adresse ip je me perd un peux. J’ai bien un retour du ping 10.0.0.1 mais comme lui je n’ai pas de retour ping :

    Relancer la console VNC du PFSense et taper « 7 » pour vérifier le ping vers l’internet (genre 8.8.8.8)
    SÉCURISATION DE L’HYPERVISEUR VIA IPTABLES

    merci pour ton aide

    1. La subtilité pour Gourmand c’était surtout qu’il mettait 192.168.1 et pas 192.168.9 (1 et pas 9). Après peut être que j’ai confondu entre 1 et 254, c’est possible je n’ai pas écris l’article et je ne peux pas vérifier sur mon infra (un peu différente).

      Merci pour le retour en tout cas

  21. peut on faire en sorte que pfsense gere le dhcp sur toutes les vms qui seront crée ? j’essaye d’installer xpenology mais comme je connais pas l’ip que lavm c’est atribué du coup je peux pas configurer l’adresse ip

    1. Oui il est possible de configurer un serveur DHCP dans PfSense, ça permet d’avoir une plage d’IP pour les VMs qui sont sur le même réseau virtuel plus facilement (le temps de leur attribuer une IP fixe, ou a minima de fixer un bail DHCP).

      Ce n’est pas détaillé dans l’article de M4vr0x si je ne m’abuse mais c’est assez simple à mettre en place de mémoire.

  22. Bonjour,
    J’avais un peu abandonné car je ne pouvais plus avancé.
    Deux choses:
    – On me demande de me connecter sur l’adresse https://192.168.9.254
    Malheureusement cela ne passe pas chez moi.
    Alors j’ai crée une deuxième VM avec Ubuntu 17, mais curieusement il m’est impossible de faire les MAJ, je ne sais pas si c’est normale, du coup je n’ai pas encore fait Iptable.
    Ma question est ce normale que https://192.168.9.254… ne passe pas ?
    Merci à vous

  23. Salut, et tout d’abord merci pour ce tuto.
    J’ai terminé l’étape du routage j’ai mis en place le petit script kvm-networking-up mais malheureusement je ne ping pas les dns de google depuis la vm pfsense.

    Je suis à cours d’idée, vous pouvez m’aider ?

    1. Est ce que pfsense pingue bien 10.0.0.1 (Proxmox sur vmbr1)
      Est ce que le script /root/kvm-networking-up.sh a bien été exécuté (routes actives, /proc/sys/net/ipv4/ip_forward à 1)

  24. Bonjour a tous, j’ai un petit souci. Voila j’ai pu installer xpenology derrière pfsense. Grâce au nat que j’ai configuré su pfsense j’accède bien au serveur. par contre quand je veux Telecharger quoi que ce soit via doawnload station, configurer le provider de mon serveur ldap synology que j’ai chez moi ou que je souhaite utiliser l’application CMS de synology rien ne fonctionne. J’ai bien les ports routé au niveau du nat de pfsense.

    Du coup je comprends pas pourquoi ça bloque et ou ça bloque, ne serait ce pas l’ip table crée sur le serveur qui bloque certain port ?

  25. Bonsoir,
    Je souhaiterai savoir si l’on peu faire de l’aliasing ?
    Je pose la question car je suis entrain de configurer mes interfaces on utilisant une IP du même réseau et voici le message qu’il me retourne: « Je ne peux pas configurer une interface avec l’ip du même réseau » « http://zupimages.net/up/17/47/y02m.png
    Auriez-vous une idée de comment faire ?
    L’idée c’est de ne pas mettre em0: 10.0.0.2 mais c’est de mettre quelque chose de ce genre em0: 198.27.92.2/30 et en gateway: 198.27.92.5
    D’avance merci

  26. Bonjour tout d’abord merci pour cette article cependant il manque des petit choses d’où ma demande dans la section configuration du réseau (suite )
    Routage et NAT je voulait savoir ou l’on créer le script ? sur le serveur en lui même ? ou sur pfsense ? voilà je vous remercie
    Je vous souhaite une bonne journée

    Cordialement

    1. Bonjour,

      Les scripts sont à créer sur le serveur Proxmox. Ce n’est pas écrit explicitement effectivement mais l’auteur le laisse entendre et ça n’aurait pas de sens ailleurs de tout de façon (pas de notions de vmbr sur le pfsense, pas de sens d’un point de vue concepts réseau, etc).

      Je vais l’écrire en toute lettre pour ne plus laisser place au doute

  27. Si c est ce que je comprends de ta question Aloïs :
    « Pour ceux qui ont pris iptables en deuxième langue au collège, je vous donne directement le contenu du script (à copier sur le serveur Proxmox) : »

    Donc directement sur le serveur ou proxmox est installé et non sur ta vm pfsense

  28. Hello,
    tout d’abord merci pour ce tuto !
    J’ai réalisé presque scrupuleusement le tuto (presque car j’ai mis 192.168.1 au lieu de 192.168.9), tout fonctionnait à merveille, mais j’ai fais plein d’essai en tout genre et j’ai ensuite tout recommencé. Depuis, c’est la galère ! En repartant de zero, mes VMs ne sortent plus, et ne se ping même plus entre elle (après avoir activé les iptables). J’arrive à acceder au pfsense de l’extérieur, mais la parti LAN est complétement isolée… J’ai refais étape par étape, je ne trouve rien qui cloche au niveau de la config.
    Aurez-tu une petite idée ?

    1. La phrase « VMs ne sortent plus, et ne se ping même plus entre elle » m’interpelle.

      Si elles sont sur le même LAN (192.168.1.0/24 chez toi si je comprend bien), elles ne passent pas par pfsense et encore moins par IPTables pour communiquer entre elles. Elles discutent en « direct ».

      Est ce qu’elles sont bien toutes sur le même vmbr (idéalement le 2 si tu as suivi le tuto) ?

      Pour la partie script IPTables, attention à la variable, à changer dans ton cas puisque tu es un rebelle qui change les IPs ;-) :
      ## Network/Mmask of PrivNET
      PrivNET= »192.168.9.0/24″

  29. Actuellement j’ai uniquement le pfsense et une Vm de test.
    Sans activer les règles iptables, j’ai accès à pfsense depuis la VM, et n’ai pas accès à psfsense depuis l’exterieur, jusque là ok.
    J’active les regles iptables, je n’ai plus accçs à pfsense depuis la vm, et j’ai accès à pfsense depuis l’exterieur…
    les IP ont été modifiée correctement dans les règles iptable :
    ## Proxmox bridge holding Public IP
    PrxPubVBR= »vmbr0″
    ## Proxmox bridge on VmWanNET (PFSense WAN side)
    PrxVmWanVBR= »vmbr1″
    ## Proxmox bridge on PrivNET (PFSense LAN side)
    PrxVmPrivVBR= »vmbr2″

    ## Network/Mask of VmWanNET
    VmWanNET= »10.0.0.0/30″
    ## Network/Mmask of PrivNET
    PrivNET= »192.168.1.0/24″
    ## Network/Mmask of VpnNET
    VpnNET= »10.2.2.0/24″

    ## Public IP => Set your own
    PublicIP= »94.23.xxx.xxx »
    ## Proxmox IP on the same network than PFSense WAN (VmWanNET)
    ProxVmWanIP= »10.0.0.1″
    ## Proxmox IP on the same network than VMs
    ProxVmPrivIP= »192.168.1.1″
    ## PFSense IP used by the firewall (inside VM)
    PfsVmWanIP= »10.0.0.2″

    Ce que je ne comprend vraiment pas, c’est que j’ai accès à pfsense depuis la VM avant d’activé les iptables.
    Ma vm est configuré comme ça :
    192.168.1.200 (IP)
    255.255.255.0 (Masque)
    192.168.1.254 (Passerelle)
    8.8.8.8 (DNS)

    Je ne comprend plus rien :(

  30. Bonsoir!
    Premierement, merci pour ce chouette tuto avec un joli plan pour que l on s y retrouve bien! :) Ce qui est tres pratique pour les débutants comme moi…
    Donc j ai bien compris et suivi la démarche jusqu au passage ou on nous demande de parametrer le reseau manuellement avec:
    – IP : 192.168.9.10 (Peu importe tant qu’on reste dans 192.168.9.0/24)
    – Netmask : 255.255.255.0
    – Gateway : 192.168.9.254
    – DNS : 8.8.8.8
    Et la je pense que je vais poser une question de débile mais ce paramétrage, il se met ou? Dans la VM Ubuntu que je viens de créer? Sinon je vois pas ou parametrer ca… Dans Ubuntu, j ai parametrer une « wired connection » avec ces infos, mais impossible d ouvrir une page web a partir de la VM….
    Est ce que j ai raté un truc?
    Merci par avance et bonne soirée! :)
    Zig

  31. Hello, je peux essayé de te répondre :)
    Oui, ce paramétrage est bien à faire sur la VM, mais pour sortir il faut avoir appliqué les règles IP tables, est-ce le cas ? Si oui, arrive tu à acceder au pfsense via son ip (192.168.9.254) ?

  32. Hello, de nouveau moi !
    J’ai tout recommencer, et cette fois ça fonctionne !
    Je n’ai pas su trouver l’erreur que j’ai fait, dommage.
    Quoi qu’il en soit merci de partager ton savoir, ton blog a fini dans mes favoris !
    Merci ;)

  33. Alors effectivement j ai essayé de lancer chrome mais ca ne peut, peut etre, pas fonctionner a ce stade du tuto…
    En tout cas, l étape suivante du tuto qui est « Se connecter à la WebUI via un navigateur à l’adresse https://192.168.9.254 (non mais vraiment cette fois) » ne marche pas non plus, alors que j ai scrupuleusement tout respecté…
    Voila pourquoi je pense avoir fait une annerie dans le setup de cette phase réseau… On est bien d accord que c est dans Ubuntu que je vais aller rentrer :
    – IP : 192.168.9.10 (Peu importe tant qu’on reste dans 192.168.9.0/24)
    – Netmask : 255.255.255.0
    – Gateway : 192.168.9.254
    – DNS : 8.8.8.8
    Correct?

    Merci par avance! ;)

  34. Alors déjà merci pour le retour, j ai effectivement pu passer à l étape d’après!
    Mais ça merdouille de nouveau…
    Sur la création des règles pour iptables.sh a copier sur le serveur Proxmox, la ca va un peu vite pour moi…
    J ai créé un fichier iptables.sh avec le contenu indiqué (genre juste « nano iptables.sh ») puis j ai essayé de le rendre executable avec un « chmod +x iptables.sh » j ai essayé de l’éxécuter avec un start ou juste « iptables.sh » mais ca me renvoit toujours une erreur…
    Bon c est vraiment a taton ce que j essaie la, donc si vous avez des conseils pour m aiguiller, je suis bien évidemment preneur! :)
    Merci par avance et bonne soirée!

  35. Aaahhh…. C’était juste le petit « sh » du début qu il me manquait!!!
    Bon ben c est cool, maintenant ca marche!
    Encore merci pour votre réactivité et votre aide, c est tres sympa! :)

  36. Hello, me gain !

    J’ai de nouveau mon souci que je décrivais précédemment, à savoir, impossible de sortir avec mes VM, et pourtant je n’ai strictement rien touché !
    J’avais donc une petite question, les règles iptables, doivent-elles être exécutées à chaque reboot du serveur hôte.
    J’ai essayé tous les cas de figures, mais ça ne veut plus…

  37. Re,

    j’ai compris le soucis, si j’exécute les règles iptables automatiquement au démarrage, elles ne sont pas appliquées !
    En les lançant manuellement tout est OK, as-tu une astuce pour que se soit automatique ? J’ai mis dans post-up comme le kvm… j’ai testé une tâche cron au reboot, mais même effet.

    1. Le script ne doit être exécuté que quand le réseau est bien initialisé. Du coup c’est pour ça qu’on délègue l’exécution du script aux interfaces réseaux via le biais du network/interfaces et notamment le fameux post-up que tu cites

      auto vmbr2
      iface vmbr2 inet static
      […]
      bridge_fd 0
      post-up /root/kvm-networking-up.sh

      Petite question, est ce que le script /root/kvm-network-up.sh est bien exécutable (chmod +x /root/kvm-network-up.sh) ?

  38. Oui, mais celui-ci ne me pose pas de problème.
    quand je mets rajoute dans /etc/network/interfaces :
    post-up /root/iptables.sh
    Au reboot, les règles sont bien présente (iptables -S) mais ne fonctionne pas.
    Si je supprime la ligne et que j’exécute manuellement le script (après reboot), ça marche…

  39. Salut,

    Super tuto, merci !
    Cependant j’ai une petite question, je n’arrive pas à utiliser la commande « apt-get- update » depuis le serveur proxmox ainsi que la commande wget. Dois-je ajouter quelque chose au script iptables ?

  40. Hello,

    Super article :)
    J’ai eu quelques soucis pour ajouter le ftpbackup d’OVH. J’ai ajouté les règles iptables suivantes et cela semble avoir fixé mon problème. Alors je vous les partages ;)

    # ——————–
    # RULES FOR PrxPubVBR
    # ——————–
    # Allow NFS
    iptables -A INPUT -i $PrxPubVBR -d $PublicIP -p tcp -m multiport –sports 10053,111,2049,32803,875,892 -m state –state ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -o $PrxPubVBR -s $PublicIP -p tcp -m multiport –dports 10053,111,2049,32803,875,892 -m state –state NEW,ESTABLISHED -j ACCEPT

    Have fun!

  41. J’avais toujours des soucis dans l’interface Proxmox car il ne voyait pas le partage NFS distant (storage ‘ftpback’ is not online (500)), pourtant, le répertoire était bien présent dans /mnt…

    Avec ces règles sa passe mieux, mais elles sont bourrin car elle autorises tout le trafic depuis le ftpbackup d’OVH :
    iptables -A INPUT -s -j ACCEPT
    iptables -A OUTPUT -d -j ACCEPT

    Désolé pour le bruit mais je n’ai pas réussi a éditer mon derniers commentaire.

  42. J’ai finalement trouvé la solution à mon problème, je la partage au cas si ça intéresse quelqu’un.
    Il fallait modifier le fichier /etc/gai.conf en décommettant la ligne suivante à
    « # For sites which prefer IPv4 connections change the last line to ».

  43. Merci à tous pour vos retours !

    Je me demande si il ne faudrait pas ouvrir un forum pour pouvoir échanger plus simplement et plus en détail que par commentaires interposés, mais je n’ai pas de temps pour la modération des spams.

    A réfléchir & merci encore !

  44. Bonjour,
    J’ai finis toute l’étape 2 mais quand j’essaye de ping l’extérieur (8.8.8.8) avec ma vm pfSense sa me dit: ping: sendto: No route host

    Help please

  45. Je viens de résoudre mon problème!
    J’avais oublié ou mal rentrer la gateway sur pfSense sur le WAN (10.0.0.1) !

  46. Bonjour !
    J’ai suivi le tuto à la lettre mais je me heurete à un soucis lors du ping de pfSense vers le wan
    Je ping bien du pf vers proxmox wan (10.0.0.1), le proxmox ping bien le wan (8.8.8.8) mais de pf vers l’exterieur ça ping pas !
    Le script de routage est ok et l’iptables aussi !
    Des pistes ?

  47. Merci, effectivement, github est bloqué par le proxy de mon entreprise..
    J’ai suivit la procédure à la lettre mais j’ai un souci de débit. J’ai l’impression que mes bridges sont en 100Mb alors que j’ai une bande passante qui est a 1Gb. J’ai fait des recherches, je n’ai pas trouvé d’où peut venir ce problème.

  48. Je fais un speedtest directement dans le proxmox, je suis a 700Mbps, je fais un speedtest dans mes VMs, je suis à 20Mbps.

    1. De mémoire, j’avais des soucis de perfs en partie liés à pfsense. La partie firewalling induit forcément un overhead, qui peut dans certains cas être très pénalisant (après tout c’est un équipement actif qui fait goulet d’étranglement).

      Deux idées => vérifier que les CPUs de pfsense ne saturent pas à 100% lors d’un téléchargement (ou d’un speed test). Si c’est le cas, ajouter des vCPUs et tenter de faire du tuning sur le pfsense. J’avais commencé un article sur le sujet que je n’ai malheureusement jamais publié (et maintenant il est probablement caduc depuis le temps).

  49. Zwindler,
    Lors d’un speedtest, mon cpu est seulement à 30% de charge et 500Mo de ram est utilisé sur les 1Go alloués. J’ai déjà essayé de mettre 2Go de ram. Les débits étaient toujours entre 20-30Mbps

  50. Bonjour,
    Merci beaucoup pour ce tuto.
    J’ai repris les mêmes adresses (sauf ip publique) et j’ai beau vérifier maintes fois toute la config et les scripts mais rien à faire, pfSense et la VM n’accèdent pas à l’extérieur. Le ping de pfSense vers 10.0.0.1 ou vers 192.168.9.1 ou vers la VM est ok. J’ai bien le port forwarding à 1 et les règles semblent bien être activées.
    Je ne sais plus où chercher !

  51. Salut,

    Toi d’abord merci pour ce superbe tutoriel clair et complet.

    Cependant j’ai une petite question. Est-ce normal que la résolution DNS ne fonctionne plus sur la machine hôte ( serveur dédié ou il y’a proxmox) lorsque j’excute le script Iptables ?

  52. Bonjour zwindler.
    Merci pour avoir partagé vos connaissances avec nous.

    J’ai été particulièrement séduit par votre schéma. Du coup, je veux aussi faire un pour mon réseau. J’ai testé LibreOffice Draw sans succès. J’ai également essayé avec Inkspace que je ne sait pas utilié, Dia, netnotpad sans succès.
    S’il vous plait, j’aimerai connaitre le logiciel que vous avez utilisé?

    Cordialement.
    Askoday

  53. Bonjour Askoday,

    C’est un ami (@M4vr0x) qui a écrit l’article. Il me l’avait dit (moi aussi, j’aime bien) mais je ne m’en souviens plus. Je vais voir si mon message le « réveille » pour qu’il puisse nous répondre ;-)

  54. Bonjour Zwindler, m4vr0x,

    J’essaie de reproduire votre architecture et je me retrouve face à un problème.
    J’ai une VM qui fait office de serveur web et je cherche à l’atteindre depuis l’extérieur, mais impossible de l’atteindre. Je peux voir ma page depuis le réseau LAN sans aucun soucis et pourtant j’ai bien mis la redirection de port dans les règles du pfSense.
    Au niveau de l’iptables.sh j’ai copier/coller votre code donc pas d’erreurs possibles et j’ai modifié correctement les IPs dans les variables.

    Est-ce que vous auriez une idée d’où peut provenir le problème?

    Merci d’avance pour votre réponse.

  55. Salut Zwindler,
    Je suis en train d’installer mon petit réseau virtualisé et je suis confronté à un problème ;
    En effet, je souhaiterai avoir accès à l’admin de mon hyperviseur à travers l’interface VMBR2 ! De ce fait j’ai ajouté à la fin de ton fichier, des lignes pour autoriser tout le traffic sur la VMBR2. Comme il n’y a pas de passerelle donnée, je me dis que ça ne pose pas de soucis de sécurité, si ? Et dans la suite, c’est de pouvoir utiliser que le port 80 et les ports de supervision (ssh, vnc…) de Proxmox…

    Cependant j’ai un problème curieux : depuis PFSense je peux taper un ping sur ma machine, cependant, depuis les autres VM dans le réseau LAN, nada… Pourtant la carte VMBR2 est bien LAN !! Et je peux pinguer depuis PFSense mon hyperviseur… Des idées ?
    à bientôt !

    Merci pour toutes ces infos !

  56. Bonjour à vous,

    Merci pour cette excellent article! J’ai une question concernant une étape qui ne semble pas fonctionner de mon côté. Quand je fais la configuration des deux interfaces de pfsense … je serais normalement capable de ping 10.0.0.1 qui est l’ip de « proxmox vmbr1″ mais cela ne fonctionne pas … J’ai fait le redémarrage de proxmox et pfsense re-validé mes configurations plusieurs fois sans trouver d’erreur. Est-ce que vous pouvez m’aider ?

    impossible de ping 10.0.0.1  » proxmox vmbr1″ à partir de pfsense
    Impossible de ping 10.0.0.2  » pfsense wan » à partir de proxmox

    Merci à vous

  57. Bonjour,

    Dans un premier temps, je tenais à te remercier pour ce tuto.

    Je te contacte que j’ai un petit soucis et je n’arrive pas en trouver la source.

    Depuis mon PfSense, je peux pinger les adresses suivantes : 10.0.0.1 et 8.8.8.8
    En revanche, depuis pve, je n’arrive pas à ping la 10.0.0.2.
    Voici mes conf :
    conf pve : https://imgur.com/a/fXZpk0g
    conf pfsense : https://imgur.com/a/BkHq4oC

    Je me tiens à votre entière disposition pour toute information complémentaire.

    Merci pour votre aide.

  58. Bonjour à tous,
    Tout d’abord, merci pour ce tuto. chez moi tout marche comme sur des roulettes. En revanche, j’ai le même problème qu’Atom plus haut. Dans mon LAN, je voudrais avoir un VM WHM et au autre Owncloud. Je peux y acceder par le LAN sur ubuntu. J’ai beau rediriger les ports 2087,2086 etc vers 192.168.9.20:2087 sur pfsense ça ne marche pas. Moi j’ai pris iptables en 4eme langue, il y aurait il dans la config iptables.sh une règle manquante pour permettre de communiquer depuis l’exterieur vers le lan en passant par pfsense? Merci d’avance pour votre aide

  59. Bonjour,
    j’ai un probleme,
    quand je fais un ping 8.8.8.8 depuis mon IPFIRE j’ai ce message « From 10.0.0.1 icmp_seq=362 Destination Host Unreachable.
    voici ma table de routage
    Table de routage IP du noyau
    Destination Passerelle Genmask Indic Metric Ref Use Iface
    0.0.0.0 [gateway-public] 0.0.0.0 UG 0 0 0 enp1s0
    0.0.0.0 [gateway-public] 0.0.0.0 UG 0 0 0 vmbr0
    10.0.0.0 0.0.0.0 255.255.255.252 U 0 0 0 vmbr1
    10.2.2.0 10.0.0.2 255.255.255.0 UG 0 0 0 vmbr1
    10.130.69.0 10.0.0.2 255.255.255.0 UG 0 0 0 vmbr1
    RXPUBLIC 0.0.0.0 255.255.255.0 U 0 0 0 enp1s0
    RXPUBLIC 0.0.0.0 255.255.255.0 U 0 0 0 vmbr0

    j’ai bien le masquerade
    iptables -t nat -A POSTROUTING -s $VmWanNET -o $PrxPubVBR -j MASQUERADE

    quelqu’un peut m’aidé s’il vous plait.
    Merci.

  60. Bonjour, tout d’abord merci pour ce tuto ! oui pareil je n’arrive pas à Ping 8.8.8.8 par exemple. Pour info j’utilise un proxmox version 5. J’ai essayé ce tuto 3 fois et toujours le même souci :-\

    Merci bcp pour l’aide

  61. Bonjour,
    je vous remercie aussi pour ce tuto, mais comme certains je suis bloqué après avoir appliqué le script iptable mon réseau 10.0.0.0/30 ne communique pas avec l’extérieur. Impossible de faire un ping vers l’ext depuis la VM pFsense… je pense qu »il doit avoir un souci avec la règle de translation mais toujours pas trouvé…
    Merci pour votre aide

  62. Salut,
    De mémoire j’ai rencontré le même souci que toi, et j’ai trouver « la cause ».
    En faute, que tu execute le script IPTable directement après reboot, comme le premier script, le problème se produit.
    Si tu exécute manuellement le script après reboot, plus de souci…

  63. Salut à vous,
    Personnellement j’ai réussi à régler mon problème, je vous conseille de vérifier vos routes car pour ma part c’est cela qui me posait problème.

    Les routes sur votre serveur proxmox doivent ressembler à cela:
    default via ***.***.***.*** dev vmbr0 proto static
    10.0.0.0/30 dev vmbr1 proto kernel scope link src 10.0.0.1
    10.2.2.0/24 via 10.0.0.2 dev vmbr1
    ***.***.***.0/** dev vmbr0 proto kernel scope link src ***.***.***.***
    192.168.9.0/24 via 10.0.0.2 dev vmbr1

  64. Merci pour ta réponse. Malheureusement rien ni fait, automatique ou manuel ça ne marche pas. Je viens de faire pas mal de test et je n’arrive pas à faire la translation entre le réseau 10.0.0.0/30 porté par le vmbr1 et l’extérieur. J’ai beau mettre
    echo 1 > /proc/sys/net/ipv4/ip_forward
    et
    iptables -t nat -A POSTROUTING -s ‘10.0.0.0/30’ -o vmbr0 -j MASQUERADE
    rien à faire, aucun ping ne passe vers l’extérieur depuis l’interface vmbr1
    Si qqun peut m’aider je suis prêt à lui filer mon compte root tellement je m’arrache les cheveux dessus.

  65. En effet ca ne fonctionne pas. Le seul problème que j’ai pu résoudre c’est pinger l’ip de pfsense depuis proxmox (pour pouvoir le faire il faut rajouter une règle pour autoriser ICMP dan pfsense). Après effectivement je n’arrive toujours pas à ping l’extérieure (8.8.8.8) depuis pfsense

    1. Pour information, de nombreuses personnes m’ont remonté avoir utilisé ce tutoriel avec succès. En revanche, il y a peut être une opération qui est mal expliquée (je ne sais pas laquelle) qui explique que pour vous ça ne fonctionne pas.

      Mais je peux affirmer que le tutoriel en lui même fonctionne, du coup je ne peux que vous conseiller de bien tout relire depuis le début. Si vous trouvez l’endroit qui pose problème, je pourrais clarifier.

  66. Bonjour zwindler,
    Je reprends le tuto au calme j’espère que je vais trouver où je coince et sinon je t’en fait part.
    Merci !

  67. Hello matakapo, super merci à toi. De mon côté j’ai essayé plusieurs fois sur un proxmox 5.2-3 et pfsense 2.4.3 le tout from scratch. Une petite précision le système de fichier est un ZFS mais je ne pense pas que c’est ca qui poserait problème.
    Après j’ai remarqué que sur le proxmox 5.2-3 il y a une sorte de « ebtables » dans la partie Firewall du Datacenter à ‘YES’. Mais que ca soit ‘NO’ ou ‘YES’ ca ne change rien.

    Merci

  68. J’ai exactement le même problème que Med après plusieurs tentatives. Le ping depuis PFSense vers 8.8.8.8 ne passe à priori pas.
    Je vais retenter une dernière fois ce weekend après j’abandonnerais l’idée.

  69. Je pense que j’ai trouvé l’origine de mon problème !
    Une fois que j’ai configure les ponts vmbr0 et vmbr1 après le reboot du proxmox la table de routage du proxmox (route -n) fait apparaître 2 routes par défaut. Une, qui utilise l’interface enp1s0 (équivalent de eth0 ou eno1) et une seconde qui utilise vmbr0. Logiquement il ne devrait en avoir qu’une (vmbr0).
    ~# route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    0.0.0.0 xxx.xxx.xxx.xxx 0.0.0.0 UG 0 0 0 enp1s0
    0.0.0.0 xxx.xxx.xxx.xxx 0.0.0.0 UG 0 0 0 vmbr0

    (les xxx.xxx.xxx.xxx remplacent la default gateway de l’adresse public que vous donne votre opérateur.)

    Tel quel, ça ne gène pas le proxmox pour accéder à l’extérieur, par contre lorsque que l’on met en place le routage et le NAT entre le réseau 10.0.0.0/30 et vmbr0 et bien le réseau 10.0.0.0/30 rattaché au vmbr1 n’arrive pas à aller vers l’extérieur. Donc aucun ping ne passe depuis la VM PFSense vers 8.8.8.8

    POUR RAPPEL, les commandes à passer sur le proxmox pour permettre le routage et le NAT:
    ~#echo 1 > /proc/sys/net/ipv4/ip_forward (mise en place du routage)
    ~#iptables -t nat -A POSTROUTING -s ‘10.0.0.0/30’ -o vmbr0 -j MASQUERADE (mise en place du NAT)

    Il suffit donc (si vous avez un table de routage comme affiché précédemment) de supprimer la première ligne et normalement ça marche !! :
    ~#route del default gw xxx.xxx.xxx.xxx

    FAITE BIEN ATTENTION à ce que vous faites :
    – supprimer les mauvaises lignes de la table de routage du proxmox pourrait avoir des conséquences non désirées (comme ne plus avoir accès au promox et être obligé de faire un reboot hardware)
    – la suppression dans la table de routage que je présente n’est pas permanente si vous rebootez le proxmox, il faudra la refaire car il y a de très grandes chances que la double route par défaut soit à nouveau dans la table de routage.

    En espérant avoir aidé certains !

  70. Merci pour le retour matakapo !!

    J’ai l’impression en relisant les commentaires que vous êtes plusieurs à avoir ces 2 routes redondantes, et donc le même problème.
    0.0.0.0 [gateway-public] 0.0.0.0 UG 0 0 0 enp1s0
    0.0.0.0 [gateway-public] 0.0.0.0 UG 0 0 0 vmbr0

    Je me demande vraiment d’où ça vient car sur ma version de proxmox, je n’ai pas du tout le même comportement. Qu’est ce qui peut expliquer ces différences ?

  71. Très bonne question à laquelle pour l’instant je n’ai pas de réponse.
    Ma version de proxmox est 5.2-5, j’en ai un autre que je dois bientôt éteindre qui est en 5.0-23 je ferais le test dessus pour voir si le comportement diffère.

  72. Effectivement, j’ai ceci chez moi :
    root@skynetserver:~# route -n
    Table de routage IP du noyau
    Destination Passerelle Genmask Indic Metric Ref Use Iface
    0.0.0.0 91.121.87.254 0.0.0.0 UG 0 0 0 enp1s0
    0.0.0.0 91.121.87.254 0.0.0.0 UG 0 0 0 vmbr0
    10.0.0.0 0.0.0.0 255.255.255.252 U 0 0 0 vmbr1
    91.121.87.0 0.0.0.0 255.255.255.0 U 0 0 0 enp1s0
    91.121.87.0 0.0.0.0 255.255.255.0 U 0 0 0 vmbr0
    192.168.9.0 10.0.0.2 255.255.255.0 UG 0 0 0 vmbr1

  73. oui tu as exactement le même problème.
    D’ailleurs j’ai supprimer aussi l’équivalent de cette ligne qui à mon avis n’a pas d’utilité :
    91.121.87.0 0.0.0.0 255.255.255.0 U 0 0 0 enp1s0

  74. Bonjour,
    Je vous remercie de votre tuto très clair qui m’à beaucoup aidé lors de ma configuration.
    Je rencontre cependant un problème lors du ping vers l’extérieur depuis Pfsense, celui-ci me dit « no route to host ».
    Je suis également intrigué par le fait que lorsque je fais un ifconfig j’ai mon interface eno3 et vmbr0 qui sont identiques pour l’inet/netmask/broadcast (ce qui n’est pas le cas dans un exemple cité en commentaire) et me demande si le soucis peut provenir de la ? (je précise que eno3et vmbr0 sont bridgé ensembles).
    Egalement lorsque je fais un iptables -S il n’y a aucune règle par rapport au nat qui apparait.

    Si vous avez une piste je suis preneur :)
    Bien à vous, merci.

  75. Hello ! Merci pour ce magnifique tuto.
    Concernant la cohabitation avec fail2ban, comment ça se passe ? Il faut faire un ‘service fail2ban restart’ à la fin du script des ‘iptables’ afin de restorer les IP bannies ? Ou est-ce possible de faire un flush de toutes les règles sauf celles de ‘iptable’ ?
    Merci!

  76. Peut-être une piste pour StarStorms car je n’ai pas la même config que dans le tuto, en effet, avec la dernière version de PVE, en tout cas celle proposé par OVH (PVE5), l’IP publique doit être renseignée directement sur l’interface physique (eno1 par exemple), et donc les vmbr0, vmbr1 et vmbr2 du tuto deviennent respectivement eno1, vmbr0 et vmbr1.
    Je crois que c’est une histoire de nombre d’adresse MAC autorisé ou un truc comme ça… Dès que j’ai trouvé la soluce, j’ai pas forcément cherché plus loin !

    De plus, pour activé le forward, il faut taper deux lignes :

    echo 1 > /proc/sys/net/ipv4/conf/eno1/proxy_arp
    echo 1 > /proc/sys/net/ipv4/ip_forward

    De plus, les vmbr0 et vmbr1 ne sont pas bridgé, le champ est vide car je n’ai pas pu mettre WAN et LAN dedans (message d’erreur), mais ça n’a gêné en rien le bon fonctionnement du tuto.

    Tout marche impec (ping 8.8.8.8 depuis PfSense, idem depuis les VM du LAN), faut juste que je pige comment bien configurer PfSense pour gérer les flux des VM maintenant.

    PS : dites-moi si quelque chose vous semble bizarre dans ma config :)

  77. Kmt, merci pour vos indications !
    C’est en effet cohérent avec les informations que je voyait sur ma carte réseau ainsi que le fait que j’ai effectivement un PVE5 fournit par OVH.
    Cependant j’ai appliqué les modifications mais le problème semble être le même.
    Pour avoir une idée après modifications mon fichier /etc/network/interfaces ressemble à cela:

    auto lo
    iface lo inet loopback

    iface eno2 inet manual

    iface eno1 inet manual

    iface eno4 inet manual

    iface eno3 inet static
    address PUBLICADRESS
    netmask 255.255.255.0
    gateway PUBLICGATEWAY

    auto vmbr0
    iface vmbr0 inet static
    address 10.0.0.1
    netmask 255.255.255.252
    bridge_ports WAN
    bridge_stp off
    bridge_fd 0

    auto vmbr1
    iface vmbr1 inet static
    address 192.168.9.1
    netmask 255.255.255.0
    bridge_ports LAN
    bridge_stp off
    bridge_fd 0
    post-up /root/kvm-networking-up.sh

    auto vmbr2
    iface vmbr2 inet manual
    bridge_ports none
    bridge_stp off
    bridge_fd 0

    Malgré l’adaptation du port de toutes les machines et des IPtables (ainsi que le kvm-networking) le ping vers l’extérieur du pfsense reste impossible, le reste du réseau interne fonctionne parfaitement.
    J’ai également fait attention aux deux commandes que vous m’avez transmit.
    J’ai peut être oublié de modifier quelque chose.
    Je vais continuer a chercher mais si vous avez eu la même config que moi je serait curieux de savoir comment vous avez fait :)
    un grand merci d’avance.

  78. Bonjour Med,
    Voici ce que me donne mon route -n

    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    0.0.0.0 217.xx.xx.xx 0.0.0.0 UG 0 0 0 eno3
    10.0.0.0 0.0.0.0 255.255.255.252 U 0 0 0 vmbr0
    10.2.2.0 10.0.0.2 255.255.255.0 UG 0 0 0 vmbr0
    192.168.9.0 10.0.0.2 255.255.255.0 UG 0 0 0 vmbr0
    217.xx.xx.0 0.0.0.0 255.255.255.0 U 0 0 0 eno3

    Avant de faire la modification indiquée par Kmt eno3 était vmbr0 et vmbr0 était vmbr1, fondamentalement ça reste pareil.
    A savoir que si je ne fais pas les modifications indiqué précédemment je me retrouve avec les deux routes actuellement sur eno3 dupliquée sur vmbr0 (et celles actuellement sur vmbr0 sur vmbr1).

    J’ai pas mal écumé les commentaires de ce post et globalement mes routes/config iptables/nat sont pareils que toutes celles indiquée (avant et après les modifications vmbr0->eno3, vmbr1->vmbr0, vmbr2->vmbr1), j’avoue ne vraiment pas voir d’ou vient le problème.

  79. Bonjour,

    Un grand merci, cela fonctionne super bien, ça vas me permettre de lâcher mon serveur Soyoutart avec une ip failover et de réduire la facture tous en continuent à hébergé mais service perso et à tester d’autre, à m’amuser.
    Merci

  80. Bonjour, en effet après la surpression de la route en plus ca marche beaucoup mieux ^^ Merci beaucoup !

    Sinon une question : comment je peux faire pour accéder à un service hébergé sur une VM dans le réseau 192.168.9.0/24 depuis le proxmox (192.168.9.1) ? en fait je n’arrive même pas à pinger la machine cible (192.168.9.100).

    Merci pour votre aide

  81. Bonjour,
    super sujet que j’ai parcourus et mis en oeuvre sans trop d’embûches !
    Juste sur le script « iptables.sh » -> il faut l’exécuter à chaque démarrage de la machine, bon c’est rare d’avoir à redémarrer mais ça peut arriver.
    Comment peut-on automatiser l’exécution de ce script ?
    J’ai fait quelques tentatives dans le fichier « /etc/network/interfaces » sans trop de succès, j’ai même dû passer par le rescue pour débloquer le serveur…

    1. Merci pour le retour.

      Effectivement j’ai eu plusieurs retours dans ce sens. Personnellement, lorsque M4vr0x (l’auteur du post) et moi utilisions cette architecture, nous n’avions jamais eu ce souci (et pourtant on l’a installé une bonne dizaine de fois) donc je ne sais pas trop quoi conseiller. On ne sait pas trop ce qui coince et que je n’ai plus de quoi reproduire.

      On peut éventuellement imaginer lancer un script en toute fin de boot avec systemd mais je ne suis pas convaincu que ce soit mieux vu que le script dans network/interfaces ne se lance qu’une fois les interfaces disponibles. Ca ne devrait pas avoir d’impact de le lancer là ou de le lancer à la main.

  82. Hello zwindler,

    D’abord merci pour cette conf qui marche parfaitement !
    J’aurais une question concernant la possibilité d’utiliser un service cloud (type owncloud / nextcloud).
    Ce type de service support la création d’une règle nat et de sa règle firewall associée dans pfSense pour y accéder depuis l’extérieur, or cela suppose d’ouvrir le port 80 ou 443, ce qui redirigerait le traffic de l’ip public vers une une seule VM interne. J’ai également des doutes niveau sécurité pour cette histoire.

    Penses-tu qu’il ne serait pas plus judicieux d’inclure une DMZ à cette infra ?
    Si oui, sais-tu par ou il faudrait commercer ? Ajouter une nouvelle carte réseau à l’hyperviseur ?
    Quid des règles Iptables dans ce cas ?

    Merci pour ton éventuel retour ou à l’aide de la communauté :)

    1. Qu’est ce qui t’inquiète au niveau sécurité dans le fait de rediriger 443 sur une seule VM ?

      Une DMZ, c’est bien, mais faut savoir pourquoi on la met sinon c’est contre productif.

      Dans le cas où tu as plusieurs serveurs Web, tu vas vouloir mettre un reverse proxy type nginx, ha proxy ou autre. On pourrait éventuellement le mettre en DMZ car s’il se fait trouer, il sera plus difficile de rebondir sur le net interne puisque seul le 443 sera ouvert entre le reverse et le lan interne. Pour autant, il ne faut pas oublier que contrairement à un réseau d’entreprise où tout ces rôles sont bien distincts, ici on a tout dans un même serveur. Si c’est l’hyperviseur qui est troué, DMZ ou pas DMZ, ça changera rien. Et les éventuels hackers iront au plus simple, donc bon…

      Donc en conclusion, pour ce que tu veux faire, une DMZ me paraît overkill : super complexe, source d’erreurs et d’indispo, pour un bénéfice quasi nul.

  83. @dj59 il y a un « plugin » haproxy sur pfSense, je suis en train de le mettre en plus sur mon infra, ça marche au poil en HTTP, en HTTPS j’ai plus de mal avec les règles SNI qui ne s’exécutent pas je ne sais trop pourquoi (je termine sur le « default » tout le temps peu importe le domaine).
    Mais cette solution me semble la plus adaptée, certes on ouvre 80 et 443, mais derrière selon le hostname ciblé on peut diriger vers la VM voulue.

  84. @zwindler & @Dough

    Merci pour vos retours, je ne connais pas encore le reverse proxy je me renseigne à ce sujet car oui l’idéal serait de pouvoir ouvrir le 443 sur plusieurs VM ou CT car la solution actuelle oblige l’utilisation d’une seule et même VM pour un port spécifiquement ouvert.

    Je vais étudier ca !

  85. @dj59 c’est bian la solution qu’il te faut.

    Je suis toujours en galère par contre pour ma redirection dite « SNI » pour le point d’entrée HTTPS:443, je ne parviens pas à rediriger vers la machine souhaitée, ça va direct sur le « default », à croire que je n’arrive pas à faire appliquer les règles données…

    Après je ne sais pas si la version de HAproxy incluse dans pfSense est idéale (1.7.11) alors que la dernière version est à 1.8.13… on n’a d’ailleurs pas vraiment la main sur le fichier de configuration de HAproxy à travers pfSense, il faut se contenter de l’interface qui peut potentiellement bloquer certaines fonctionnalités/options (?)

    A voir sinon pour dédier un CT/VM à cet usage ^^

    1. Personnellement je l’aurai mis à part, mais c’est purement philosophique : 1 VM = 1 fonction. D’ailleurs moi je mettais une reverse proxy nginx pour servir de frontal à mes VMs, extérieur à pfsense

      Après si ça marche (visiblement non pour toi ;-p) ya pas de raison technique à ne pas l’utiliser.

  86. Bonjour les amis

    Excellent tutoriel m’a beaucoup aidé à construire mon architecture. Mais j’ai une question lorsque j’exécute le script Firewall. de la MV je ne peux pas ping out et je ne peux même pas ping la machine pfsense et vice versa. ils pourraient me donner un indice pour voir où se trouve le problème.

    Salutations

  87. Salut.

    Comment puis-je rendre possible de naviguer à partir des MVs, en suivant l’ensemble du processus du manuel, j’arrive à ping google depuis le pfsense, mais les MVs ne ping internet, ni entre eux.

    Je vous remercie

  88. Bonjour… et merci pour ton super tuto.
    Petite precision me concernant, meme si je suis rompu a linux (utilisateur depuis près de 10 ans) et a sa console que je prefere a l’environnement graphique, et meme si j’ai deja eu l’occasion de me frotter a l’installation de service, je reste un nabot quand au routing et iptables.

    J’explique mon probleme.
    J’ai suivi le tuto jusqu’a la fin de l’episode 3. Tout c’est plutot bien passé. J’ai un vpn « fonctionnel » j’arrive a m’y connecter, a avoir du net other the tunnel en mettant le serveur en peer to peer mais en remote ou en peer to peer aucun moyen de pinguer quelques machines que ce soit.
    Je ne ping pas le client connecté ni le pfsense (10.2.2.1) en testant je me rends compte que pve ne ping ni le pfsense (10.0.0.2 ni 192.168.9.254) pourtant pf et vm ont un accès au web.
    voici la table route de proxmox
    root@s4d-h1ll:~# route -n
    Table de routage IP du noyau
    Destination Passerelle Genmask Indic Metric Ref Use Iface
    0.0.0.0 91.121.71.254 0.0.0.0 UG 0 0 0 vmbr0
    10.0.0.0 0.0.0.0 255.255.255.252 U 0 0 0 vmbr1
    10.2.2.0 10.0.0.2 255.255.255.0 UG 0 0 0 vmbr1
    91.121.71.0 0.0.0.0 255.255.255.0 U 0 0 0 vmbr0
    192.168.9.0 10.0.0.2 255.255.255.0 UG 0 0 0 vmbr1

    celle ci me semble correct au vu de vos resultats a tous.
    Merci de me guider dans mon apprentissage

  89. Hello.

    Tout d’abord un grand merci pour ce tutoriel, je bloquais depuis un moment pour mettre en oeuvre ce type de config, votre article à rendu ma comprehension plus limpide !
    Par contre, petite question: lors de la création des Linux Bridges sous PVE, je ne peux pas valider LAN ou WAN dans le champ « port du bridge », j’obtiens un msg d’erreur « bridge ‘vmbr1’ – unable to find bridge port ‘WAN’ (500) »
    Une piste sur ce soucis ?

  90. Salut Zwindler & co :)

    Pensez-vous qu’il soit recommandé d’installer le service dhcp (isc ?) au sein de l’hyperviseur Proxmox ou sur une VM du LAN interne ?

    Merci !

    1. Le mieux c’est de ne rien installer du tout sur hyperviseur. J’ai l’habitude de dire « une machine = une fonction ». Et là, en plus, on ne parle pas de n’importe quelle machine, mais de l’hyperviseur, qui est critique pour tout le reste. Donc je dirai VM

    1. Oui personnellement je l’ai utilisé ça marche très bien aussi.

      Mais j’avais l’impression dans la question que justement dj59 n’utilisait pas pfsense (peut être à tort).

  91. En fait je n’y avais même pas pensé pour pfsense !
    Et du coup pfsense peut aussi faire office de serveur DNS car pour le moment j’utilise le DNS 8.8.8.8 ?
    Merci encore ;)

  92. Merci Dough mais ce que j’aimerais faire c’est de pouvoir pinguer mes vm via leur nom et actuellement ça ne marche pas seul le ping par IP est ok.
    Je bute un peu sur ce type de services, qu’est le DNS.
    J’aimerais d’ailleurs pouvoir rattacher un nom de domaine au serveur dédié, je consulte plein de tuto mais je suis un peu perdu…
    :)
    Sinon le DHCP est ok sous pfSense et j’ai mis les ip dns de Cloudfare mentionné.

  93. Bonjour,

    Merci pour ces tutos sur ProxMox :)
    Ca donne envie de poser des serveurs et de faire un gros lab dans la chambre :p

    J’ai juste une questions sur une règle OUTPUT iptables qui me semble étonnante.

    Allow LAN to access internet

    iptables -A OUTPUT -o $PrxPubVBR -s $PfsVmWanIP -d $PublicIP -j ACCEPT
    Là si je comprends bien, on laisse un paquet sortir sur l’interface Internet s’il a pour source le firewall pfsense et pour destination l’adresse ip publique du serveur.
    Si c’est bien cela :
    – Ce paquet provenant de pfsense et pas de proxmox, il doit passer par la règle FORWARD, pas par la règle OUTPUT, je me trompe ?
    – Ensuite la destination : l’ip publique du serveur ? A quel flux pensez-vous là ?

    Merci d’avance,
    Didier

  94. Bonjour,
    Je viens de découvrir le site et trouve vos tutoriels instructifs, même pour quelqu’un qui a plus de 20 ans de clavier sous linux.
    Une petite question: avec quel outil avez-vous fait vos graphiques ? (j’utilise encore un crayon pour en dessiner mais je dois présenter un concept utilisant un hyperviseur proxmox avec opnsense, selks, debian et centos dedans à d’autres personnes).

    1. Bonjour, merci beaucoup pour le retour.

      C’est noyé dans les commentaires, mais M4vr0x (l’auteur « invité » qui a rédigé ce groupe de 3 tutos) utilise un outil sous Mac (shame on him ;-) )

      Pour les schémas j’utilise OmniGraffle qui n’existe que pour MacOS.

  95. bonjour à tous merci pour ce tuto
    Je suis pas sys admin, je suis plus dans le web ^^ mais comme ça m’intéresse je tente de le faire ^^.

    Donc est ce que le driver VirtIO c’est toujours d’actualité ? car j’ai crée une vm ubuntu, j’ai bien accès a pfSense par contre internet depuis non . Et je ping bien la 10.0.0.1

    Autre question, au niveau des iptables lorsque j’active le script = gros gros bordel accès à plus rien. Mais comme j’ai pas pris Iptables à l’école j’ai du mal à comprendre pourtant il n’y a rien par rapport au vpn dans le script. Des pistes aussi de ce côté ? merci de votre aide et encore une fois merci pour le tuto

  96. Ok, donc après analyse de iptables j’ai donc trouver ce qui va pas chez moi (pas dans ma tête hein, enfin quoi que… :) . Quoi qu’il en soit c’est fonctionnel , il me reste la dernière étape et à moi les serveurs prod et pré prod pour développer tranquille à la maison ^^. Merci ^^

  97. Bonjour,
    J’ai un souci avec le pfsense, qui à tendance à merdouiller, je fois le rebooter pour que je puisse ré accéder aux VM.
    Je cherche à automatiser ce reboot, et j’ai besoin pour cela, depuis proxmox, de faire un ping sur le pfsense, sauf que ça ne fonctionne pas, je n’arrive pas, depuis proxmox, à pinguer une machine sur le LAN.
    Je pense qu’il faut établir une règle iptables pour cela, mais j’en suis incapable.
    Est-ce possible d’avoir un peu d’aide à ce niveau ?
    Merci.

  98. Bonjour, j’ai le même problème que IDMontchat avec un PFSense qui n’arrive plus a faire sa résolution de noms DNS Lookup Failed lorsque je ping google.fr
    Quelqu’un a-t-il déjà eut le problème et surtout compris comment le résoudre ?
    Merci d’avance

  99. Bonjour,

    Je viens de suivre le tuto ou gardant les mêmes configurations !
    Arriver à l’étape du ping de google depuis pfsense rien…

    Pouvez vous m’aider ?

  100. Bonsoir,

    Tout d’abord merci beaucoup pour ces tutos hyper instructifs pour un novice en sysadmin comme moi qui installe un serveur pour bidouiller :)

    J’ai deux questions cependant :

    J’ai vu que Proxmox possédait un firewall intégré : pourquoi ne pas l’utiliser au lieu de passer par des iptables longues comme le bras ? C’est potentiellement beaucoup plus facile a gérer via la webUI en plus.
    Et pourquoi ne pas avoir ajouté un reverse proxy devant les VM en sortie de vmbr2 (j’ai cru comprendre que ça rajoutait encore une couche de sécurité).

    Merci pour vos éclaircissements !

    1. Très bonne remarque.

      Je me demande si M4vr0x l’a écrit ou pas dans l’article ?

      Quoiqu’il en soit, l’idée à la base, c’était d’avoir vraiment une infrastructure qui ressemble à ce qu’on pourrait faire en entreprise, à ceci près que le composant Firewall est généralement externe.
      Le fait d’avoir une VM séparée dédiée au rôle firewall permet d’avoir une plus grande isolation.
      Le deuxième avantage, c’est que PFsense est beaucoup plus flexible/puissant en terme de règles de FWalling que celui de Proxmox, plus basique.
      Enfin, PFsense ajoute des fonctionnalités supplémentaires que M4vr0x (l’auteur du post) et moi utilisons, comme le serveur OpenVPN ou le DHCP par exemple.

      Pour autant, je reconnais que cela ajoute pas mal de complexité, notamment la partie IPtables pour rediriger l’ensemble du trafic sur le FW (pour simuler la séparation hyperviseur/FW alors que tout est dans la même boite). On pourra effectivement très bien se satisfaire d’un Proxmox avec le firewall intégré et un reverse proxy en frontal. Ca dépend vraiment de ton besoin, en fait.

  101. Merci pour ta réponse zwindler.

    Pour préciser ma remarque par rapport au firewall mon idée était de conserver le pfsense car hyper pratique de bien des cotés (vpn etc), et de remplacer les règles « iptables » qui protègent le Proxmox par le firewall intégré à Proxmox.

    Entre temps j’ai posé la question au sysadmin de ma boite qui m’a répondu que ça revenait probablement au même car Proxmox étant une distrib linux, les règles de son firewall seront de toute manière transformées en iptables (bon a part que gérer des règles en WebUI c’est un peu plus digeste que de vilaines lignes de commandes pour le quidam moyen :P).

    Il a bon ? Et du coup je peux essayer de retranscrire les iptables au niveau du firewall de Proxmox sans perdre en sécu ? (sous réserve de ne pas faire d’erreurs bien sur :P)

  102. Bonjour,
    Je viens d’essayé de suivre le tuto, mais je rencontre un problème pour la création des réseaux.
    Lorsque je souhaite créer un nouveau Bridge et que dans le formulaire je saisi « Wan » dans « Bridge Port », j’obtiens le message  » bridge ‘vmbr1’ – unable to find bridge port ‘Wan’ (500) ».
    Donc, soit j’ai loupé une étape soit ça à changé.
    zwindler, aurais-tu une idée ?

    Merci d’avance pour ton aide.
    Nono

  103. Salut à tous,

    D’abord, merci pour ce tuto vraiment pas mal détaillé.

    J’ai juste un petit commentaire à faire :
    Si comme moi après l’application du script pour l’iptables (à faire sur proxmox), vous ne parvenez plus a résoudre des URL, que ce soit avec apt ou ping ou wget, il faut désactiver l’IPv6 comme ceci en root :
    sysctl -w net.ipv6.conf.all.disable_ipv6=1
    sysctl -w net.ipv6.conf.default.disable_ipv6=1

    Une fois OK, vous pourrez a nouveau résoudre des adresses DNS :)

    Bonne journée ;)

    1. Super merci beaucoup pour ce retour. Je vais refaire un environnement de zéro et je mettrai à jour le tuto dans la foulée avec toutes les remarques en commentaire pour plus de clarté.

      Merci encore

  104. Je répond à mon prôpre message précédent :
    « Bonjour, j’ai le même problème que IDMontchat avec un PFSense qui n’arrive plus a faire sa résolution de noms DNS Lookup Failed lorsque je ping google.fr
    Quelqu’un a-t-il déjà eut le problème et surtout compris comment le résoudre ?
    Merci d’avance »

    le problème venais de la VM de pfsense qui n’avait pas assez de cœurs attribués (2). Depuis que j’en ai mis 4 je n’ai plus de déco.

  105. Bonjour,

    J’ai bien suivi toutes les indications du script contenant les règles iptables.

    Par contre j’ai eu un problème de ping dans le subnet 192.168.9.0 pour lequel je cherche une explication :

    Après le démarrage de proxmox et vérification de l’application correcte du script kvm-networking-up.sh dans /etc/network/interfaces et execution manuelle du script iptables fourni dans l’article, je n’arrivais plus à faire le ping suivant : depuis une vm 192.168.9.20 vers PfSense 192.168.9.254 ( c’était ok avant l’applicaion du script fourni ).

    Pour trouver l’origine du problème, j’ai démarré proxmox et exécuté le script iptables fourni, instruction par instruction :

    J’ai trouvé qu’en commentant la ligne suivante, le script complet ne produisait ensuite plus ce problème :

    iptables -P FORWARD DROP

    Que s’est il passé pour que un ping à l’intérieur du subnet 192.168.9.0 soit perturbé à ce point ?

    Salutations
    Michel

  106. Bonjour,

    Pour étayer ma question, je joins les deux parties divergentes dans la sortie de la commande « iptables -L », après l’application du script de l’article :

    Avec le script original de l’article :

    Chain FORWARD (policy DROP)
    target prot opt source destination
    ACCEPT all — anywhere anywhere ctstate RELATED,ESTABLISHED
    ACCEPT tcp — anywhere 10.0.0.2
    ACCEPT udp — anywhere 10.0.0.2
    ACCEPT all — 10.0.0.0/30 anywhere
    PVEFW-FORWARD all — anywhere anywhere

    Le même script, mais sans la ligne « iptables -P FORWARD DROP » :

    Chain FORWARD (policy ACCEPT)
    target prot opt source destination
    ACCEPT all — anywhere anywhere ctstate RELATED,ESTABLISHED
    ACCEPT tcp — anywhere 10.0.0.2
    ACCEPT udp — anywhere 10.0.0.2
    ACCEPT all — 10.0.0.0/30 anywhere
    PVEFW-FORWARD all — anywhere anywhere

    Salutations
    Michel

  107. Bonjour,
    Je vous remercie pour le descriptif complet.
    J’ai suivi à la lettre (sauf que mon adressage est différent, mon LAN derrière le Pfsense est en 172.17.0.0/16)

    J’ai besoin de partager un espace de stockage important entre Proxmox et certains de mes conteneurs LXC. Pour celà j’ai configuré un partage NFS (le serveur est le proxmox lui-même pour ne pas avoir à gérer l’espace de stockage du partage dans une VM ou un conteneur dont le disque ne pourrait pas être réduit facilement par la suite).
    Du coup je galère un peu à placer la bonne règle IPtable pour autoriser NFS (donc les ports 111 et 2049) sur vmbr2 / ProxVmPrivIP (172.17.0.1)

    J’ai tenté ceci :
    iptables -A INPUT -i $PrxVmPrivVBR -s 172.17.0.0/16 -p udp -m multiport –sports 111,2049 -j ACCEPT
    iptables -A OUTPUT -o $PrxVmPrivVBR -d 172.17.0.0/16 -p udp -m multiport –sports 111,2049 -j ACCEPT

    Mais ça ne fonctionne pas bien mieux.
    – J’ai besoin d’aide pour formuler peut être mieux mes iptables d’une part,
    – d’autre part je ne sait pas où bien les placer dans le script. Ligne 162 ?
    # ———————–
    # RULES FOR PrxVmPrivVBR
    # ———————–
    ICI ?

    NO RULES => All blocked !!! <– yes sir ! That’s my problem for now :)

    Merci de votre aide

  108. zwindler 10 décembre 2018
    Super merci beaucoup pour ce retour. Je vais refaire un environnement de zéro et je mettrai à jour le tuto dans la foulée avec toutes les remarques en commentaire pour plus de clarté.

    Bonjour Zwindler,
    Quitte à refaire un environnement de zéro et pour rebondir sur la remarque de jh pourquoi ne pas intégrer directement pfsense à la place de iptable + Reverse proxy pour atteindre les différents service web grâce à différents sous-domaines ?

    Cela sera surement plus digeste et plus user friendly, c’est la seule chose qui manque à ce superbe tuto je trouve :)

    Encore merci à toi pour ton investissement et bonne année !
    Jérémy

    1. On est d’accord, le script IPtables est difficilement compréhensible et débuggable.

      Le souci à tout passer sur pfsense, c’est justement que pfsense n’est pas en première ligne. Il y a l’hyperviseur d’abord… C’est tout le souci. On est obligé de le sécuriser lui car c’est lui qui est en frontal d’Internet.

      Ce que je pensais faire, c’était passer par le firewalling interne à Proxmox, a minima pour transférer tout le trafic utile vers le PFsense, puis gérer le firewalling dans pfsense ensuite (ou carrément se passer de pfsense ?).

  109. Disons que pfsense a pour lui la simplicité de son interface et surtout la flexibilité de ses packages. Effectivement on peut s’en passer, mais quitte à rester user-friendly je trouve qu’il a sa place ;)
    Ton idée me parait bien, on redirige tous le traffic « utile » sur le PFsense et on bloque le reste avec le firewall de Proxmox, un petit coup de reverse proxy pour chaque VM et le tour est joué.
    D’ailleurs j’isolerais également tous les services web type messagerie/serveur web dans un sous-réseau dédié et le reste des applis type plex/nextcloud etc dans un autre sous réseau sans accès depuis l’extérieur (avant de tomber sur le port de redirection bon courage ^^).

  110. Très bon tuto mais lorsque je veux créer le Vmbr1 il me dit que WAN n’existe pas… Ai-je loupé quelque chose ?

    Merci

    1. Bonjour,

      Rebooter l’hyperviseur
      Il suffit de cliquer sur « Restart » en haut à droite. C’est impératif pour prendre en compte proprement les modifications, c’est pas moi qui le dis, c’est marqué au dessus de l’encadré affichant le log : « Pending changes (Please reboot to activate changes) » … allez promis c’est la seule fois où ce sera nécessaire.

      Vous avez suivi cette étape ?

  111. oui mais cela lorsque l’on crée l’interface. Moi il me refuse carément de la créer car il dit bridge vmbr1 – unable to find bridge WAN (500) et il ne me crée rien du tout… Il ne me demande donc pas le reboot

  112. et pour terminer lorsque j’edite le fichier interfaces et reboot le serveur les vmbr1 et 2 aparaissent bien. Je crée ma VM PFSense avec les memes parametres. La creation et le link vmbr1 ok
    et lorsque je demarre la vm j’ai l’erreur :

    Virtual Environment 5.3-5

    Rechercher
    Machine Virtuelle 100 (PFSense) sur le nœud monnouveaupc

    Vue Dossier
    Logs
    ()
    no physical interface on bridge ‘vmbr1’
    kvm: network script /var/lib/qemu-server/pve-bridge failed with status 6400
    TASK ERROR: start failed: command ‘/usr/bin/kvm -id 100 -name PFSense -chardev ‘socket,id=qmp,path=/var/run/qemu-server/100.qmp,server,nowait’ -mon ‘chardev=qmp,mode=control’ -chardev ‘socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect=5’ -mon ‘chardev=qmp-event,mode=control’ -pidfile /var/run/qemu-server/100.pid -daemonize -smbios ‘type=1,uuid=cb830758-092d-4484-8425-6455b51b80f1’ -smp ‘2,sockets=1,cores=2,maxcpus=2’ -nodefaults -boot ‘menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg’ -vnc unix:/var/run/qemu-server/100.vnc,x509,password -cpu kvm64,+lahf_lm,+sep,+kvm_pv_unhalt,+kvm_pv_eoi,enforce -m 2048 -device ‘pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f’ -device ‘pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e’ -device ‘vmgenid,guid=4512ae97-2a91-4c40-95f4-ea403ea243a8’ -device ‘piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2’ -device ‘usb-tablet,id=tablet,bus=uhci.0,port=1’ -device ‘VGA,id=vga,bus=pci.0,addr=0x2’ -device ‘virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3’ -iscsi ‘initiator-name=iqn.1993-08.org.debian:01:3860b97a99fd’ -drive ‘file=/var/lib/vz/template/iso/pfSense-CE-2.4.4-RELEASE-p1-amd64.iso,if=none,id=drive-ide2,media=cdrom,aio=threads’ -device ‘ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=200’ -device ‘virtio-scsi-pci,id=scsihw0,bus=pci.0,addr=0x5’ -drive ‘file=/dev/pve/vm-100-disk-0,if=none,id=drive-scsi0,format=raw,cache=none,aio=native,detect-zeroes=on’ -device ‘scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100’ -netdev ‘type=tap,id=net0,ifname=tap100i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown,vhost=on’ -device ‘virtio-net-pci,mac=2E:89:03:07:0A:75,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=300’ -machine ‘type=pc » failed: exit code 1

  113. Bonjour,
    Pourrais-tu expliquer brièvement comment mettre en place un reverse proxy sur cette architecture exacte ?

    Par exemple pour atteindre :
    – la VM1 depuis internet en tapant : plex.zwindler.fr
    – la VM2 depuis internet en tapant : shinken.zwindler.fr

    Tu le met en place sur le Firewall ou tu rajoute une autre machine virtuelle dans l’architecture spécialement pour le reverse proxy ?
    Merci d’avance !!

    John

  114. Bonjour,

    Avec la 5.3.11 impossible de créer la Wan&Lan sans être lié avec une interface physique … ???
    Une idée ?

  115. Bonjour, Super tuto, et tout fonctionne parfaitement !, serais-ce possible d’avoir un tuto pour ajouté d’autres ip public static a ce setup ci svp.

    Merci

  116. @J-luc : même problème, résolu en éditant directement le fichier /etc/network/interfaces
    Attention, j’ai deux serveur chez Kimsufi (même modèle) mais le nom de la carte réseau n’était pas le même, donc bien bien faire attention à ce point sous peine de crasher son serveur et être bon pour une reinstall.

  117. Bonjour,
    très bon tutorials, ça m’a beaucoup aidé à mettre en place mon infra.
    J’ai un petit soucis pour mettre en place un ipsec entre mon lan et un lan distant.J’ai suivi le tutorial de netgate.
    le tunnel est up, je peux pinger depuis 192.168.9.xx et faire des ssh sur le lan distant (172.27.xxx.yyy), par contre ni le ping ni le ssh ne marche de l’autre côté. est ce qu’il y a qcq chose de particulier à rajouter (rules, iptables…?.
    Merci

  118. Salut,
    j’aimerai savoir si ton WAN de ton serveur est sur quel range d’ip car j’ai pas bien compris.

    Réseau: 192.168.1.0/24

    Proxmox:
    – enp4so (Care réseau) , sont bridge est vmbr0 (192.168.1.20 / enp4s0)
    – vmbr1 : 10.0.0.1/30 > WAN
    – vmbr2: 192.168.9.1 / 24 > LAN

    Y’aura t’il pas un problème sur ce point ?

  119. Merci M4vr0x !!!
    C’est Nico (celui du merci à la fin qui ne fait rien de sale avec son cerveau même clusterisé …)
    Je n’ai tjrs pas de wiki perso, et mes backups … enfin bref au top de retrouver toutes ces infos en ligne, ça juste marche et je n’ai fait aucun effort hormis m’ouvrir une bière et faire du copier coller et apprécier cette petite nostalgie en relisant le script iptables.
    Bon tu me connais et je vais bien finir par en faire (des efforts) et je conseille de passer l’host en mode sans IP publique et de transférer l’IP publique sur la première VM = pfsense, ou autre dans mon cas …
    pas d’ip = pas de problème mais bon trop la flemme de lancer l’accès iLO.
    Merci Encore !!!

  120. Hello,
    Bravo pour cet article et merci beaucoup !
    J’ai suivi ces deux premières partie et une fois à la fin, je me suis rendu compte que le trafic n’était pas redirigé vers la VM PfSense, j’ai tenté de ping 10.0.0.2 depuis l’hote Proxmox mais ca ne fonctionne pas, en revanche, dans l’autre sens, ca fonctionne sans problème, est-ce normal ?

  121. Hello,
    Déjà merci beaucoup pour cet article. Je rencontre un petit problème, après avoir finit complètement ces deux parties, impossible d’accéder à ma VM PfSense depuis internet. Je me suis donc dit que ça devait venir des règles Iptables, et j’ai tenté de pinger ma VM depuis l’hote Proxmox, mais la impossible, le ping fonctionne dans l’autre sens sans soucis, mais depuis 10.0.0.1 vers 10.0.0.2 ca échoue, est-ce normal ?

  122. Bonjour,

    Merci @m4vr0x pour cet excellent tuto!
    J’ai eventuellement une petite suggestion d’amélioration (a moins que quelqu’un d’autre ne l’ai deja siganlé, j’avoue n’avoir pas lu les 180 commentaires précédents :-) ):
    En installant les règles iptables de façon violente avec iptables -F, on désactive le filtrage intelligent sur ssh de fail2ban.
    Pour le réactiver, il suffit d’ajouter la commande suivante a la fin du script iptables.sh:
    service fail2ban restart

    Et pendant que j’y suis, le tuto n’explique pas comment activer le script iptables.sh au boot. En ce qui me concerne je l’ai simplement copié dans le répertoire if-pre-up.d:
    cp /root/iptables.sh /etc/network/if-pre-up.d/iptables
    chmod a+x /etc/network/if-pre-up.d/iptables

    En hopant que ca help…
    Olivier

  123. Salut !
    J’ai suivi ton tuto quelques mois déjà, cela fonctionne très bien sur un host Kimsufi.
    Cependant j’essaie de joindre depuis l’hyperviseur une machine qui se trouve sur le LAN (remontée de statistiques du serveur Proxmox).
    Proxmox dispose de l’@IP 192.168.9.1 qui est théoriquement sur le même LAN mais je ne parviens pas à joindre les autres machines qui sont connectées au bridge vmbr2.
    Les VM connectées au vmbr2 communiquent parfaitement entre elles.
    Est-ce à voir avec IPtables ou plutôt du routage ?
    Je suis preneur de pistes ^^

  124. Salut @Dough, as tu pu résoudre ton problème de communication depuis l’hyperviseur, j’ai la même problématique ?

    Merci d’avance.

  125. Non je n’y suis pas parvenu.
    Je peux y arriver en changeant la route comme suit : ip route change 192.168.0.0/24 via 192.168.0.1 dev vmbr2
    En fait je me demande si il ne faut pas paramétrer quelque chose côté pfSense avec la route énoncée dans l’article (?)

  126. Bonjour @Dough et @Loucas,
    Pour permettre la communication depuis l’hyperviseur vers le bridge vmbr2, il faut effectivement corriger le routage qui peut par defaut se trouver dirirge vers vmbr1 au lieu de vmbr2. Ci apres l’etat du routage avant la correction:

    $ netstat -rn 
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
    0.0.0.0         91.121.87.254   0.0.0.0         UG        0 0          0 vmbr0
    10.0.0.0        0.0.0.0         255.255.255.252 U         0 0          0 vmbr1
    10.2.2.0        10.0.0.2        255.255.255.0   UG        0 0          0 vmbr1
    91.121.87.0     0.0.0.0         255.255.255.0   U         0 0          0 vmbr0
    192.168.9.0     10.0.0.2        255.255.255.0   UG        0 0          0 vmbr1
    

    On voit que la route vers le subnet 192.168.9.0/24 est envoyee vers vmbr1 au lieu de vmbr2.

    Pour corriger ce type de probleme, d’abord utiliser la commande ip route list pour identifer la regle de routage erronee, puis la supprimer avec ip route del (sans chercher, simplement en copiant/collant apres le del le resultat affiché par list), et ensuite ajouter la bonne regle avec ip route add (il suffit de changer le bridge et le subnet), et ensuite le ping nous confirme que ca marche:

    ip route del 192.168.9.0/24 via 10.0.0.2 dev vmbr1

    ip route add 192.168.9.0/24 via 192.168.9.1 dev vmbr2

    ping 192.168.9.254

    PING 192.168.9.254 (192.168.9.254) 56(84) bytes of data.
    64 bytes from 192.168.9.254: icmp_seq=1 ttl=64 time=0.501 ms
    64 bytes from 192.168.9.254: icmp_seq=2 ttl=64 time=0.247 ms

    <br />La deuxieme correction utile a mon avis consiste a autoriser la connexion ssh sortante depuis l'hyperviseur vers les le LAN des vm. En effet l'interdire n'ajoute pas variment de securite, puisque quiconque a acces a l'hyperviseur a deja partie gagnee et peut ajouter la regle en question (IMHO).
    Voici donc la fin du script  `iptables.sh` qui corrige ce point:
    

    ———————–

    RULES FOR PrxVmPrivVBR

    ———————–

    All blocked except ssh from hypervisor to LAN

    iptables -A OUTPUT -o $PrxVmPrivVBR -s $ProxVmPrivIP -p tcp –dport 22 -j ACCEPT
    « `

    En hopant que ca aide…

    Olivier.

  127. Bonsoir,
    Je suis un peu surpris par les 2048MB de RAM alloués dans le tutp a la vm pfSense. Sur une petite KS avec seulement 8GB de RAM ca ne laisse pas grand chose pour le reste…
    Quelqu’un a deja essaye des valeurs plus petites et confirmé que c’est insuffisant?
    Par exemple 1GB? 768MB ?? Moins? En ajoutant du swap?
    Sur la page officielle de doc on trouve par exemple les infos suivantes:
    The minimum hardware requirements for pfSense 2.4.4-RELEASE-p10 are:
    – CPU 600 MHz or faster
    – RAM 512 MB or more
    – 4 GB or larger disk drive (SSD, HDD, etc)
    – One or more compatible network interface cards
    – Bootable USB drive or CD/DVD-ROM for initial installation

    suivi d’un avertissement:
    The minimum requirements are not suitable for all environments; see Hardware Sizing Guidance for details.
    Et dans le guide sus-mentionné en avertissement, on trouve cette info concernant la memoire requise en fonction du nombre connexions (en fonction des etats, mais sachant qu’il y a 2 etats par connexion):
    It is safer to overestimate the requirements. Based on the information above, a good estimate would be that 100,000 states consume about 100 MB of RAM, or that 1,000,000 states would consume about 1 GB of RAM.
    Donc pour 50,000 connexions ouvertes, il faut prevoir 100MB de RAM.
    2GB semble donc necessaires seulement pour 1 millions de connexions… Mais là il faudra peut-etre penser a lacher la kimsufi a 8GB RAM et un debit max de 100Mbits pour un bon gros Xeon et un interface wan a 10Gb, non?
    Olivier

  128. Merci @Olivier
    Au final c’est exactement ce que j’avais réalisé, en ouvrant même tout sur la règle iptables (pas de filtre protocole) : tout est Ok ^^
    C’est clair que si l’accès HV est gagné au final tout est accessible quoiqu’il arrive.

    Pour la mémoire allouée à pfSense je pense que tu peux démarrer à 1Go sans problème et augmenter si vraiment le besoin se fait ressentir.
    Sur mes dédiés j’ai 16+Go de RAM, mes VM pfSense ont 2Go de RAM et n’en utilisent même pas 45%.
    Sur mon HomeLab la VM pfSense n’a que 1Go de RAM et est à tout juste 55% et pourtant je pense qu’il gère bien plus de traffic que mes dédiés ^^

  129. Salut,
    Au lieu d’installer une machine ubuntu desktop pour seulement acceder a l’ihm de pfsense :
    simplement faire un tunnel ssh depuis votre poste ( ssh -D 8080 root@ipproxmox , ou putty pour windows)
    changer les parametre du proxy socks (127.0.0.1:8080) de votre navigateur , et tapez sur : https://iplandupfsense.

  130. Ce guide est une bonne base pour une première approche avec Proxmox et pfSense, malgré tout le passage avec la flopée de règles iptables m’interpèlle.

    En soit c’est le rôle de pfSense de gérer la partie réseau, pas de l’hyperviseur Proxmox (qui gère la partie système). Donc est-ce qu’on ne pourrait pas transposer tout cela vers pfSense? (question réthorique)

    Maintenant vraie question: est-ce que quelqu’un (qui a suivi ce guide ou vient à passer par là) l’a déjà fait? Sinon je m’y colle.

    1. Hello,

      Merci pour le retour. Effectivement, la complexité des règles iptables sont un point qui remonte régulièrement. J’en ai parlé avec M4vr0x et il a dit à demi mot qu’il allait retravailler une version plus à voir et surtout avec du networking plus simple. On ne pourra pas TOUT transposer vers pfsense. Il faut bien que le trafic entrant (et sortant) de l’hyperviseur passe par l’hyperviseur avant d’être servi à pfSense. Mais on peut grandement simplifier, c’est certain.

      Je vais donc le tanner jusqu’à ce qu’il le fasse ahahah ;)

  131. Bonjour,

    j’ai suivi tout ce tuto avec beaucoup de plaisir !
    Personnellement j’utilise un sous-domaine géré par cloudflare donc j’ai dû configurer pfsense pour cette partie en plus

    En revanche j’ai un soucis: mon sous-domaine du coup pointe par défaut sur pfsense (ca c’est logique) et j’aurai voulu activer le certificat let’s encrypt sur l’hyperviseur avec l’ouverture du port 80

    Mais là pas moyen de s’en sortir malgré l’ajout des règles dans iptables et l’ouverture dans le firewall pfsense –> pas moyen d’accéder au compte ACME ou de télécharger des templates
    Une idée ?

  132. bonjour,

    j’ai la meme configuration que vous mais par contre j’arrive pas à aller sur internet depuis mon LAN (echec ping 8.8.8.8)

    il y’a t(il quelques choses à corriger ?

  133. Pour ceux qui n’arrivent pas à sortir (par exemple ping 8.8.8.8) depuis les machines du LAN, il faut faire une règle Outbound NAT. J’ai remarqué que sur les dernières versions de PFsense, l’automatisation des règles Outbound ne se faisaient pas. Du coup, il faut créer la règle en manuel :
    WAN // Réseau privé // * // * // * // WanAdress // *

  134. Bonjour,

    Merci pour ce super tuto!
    Je m’en étais servi l’année dernière tout fonctionnait sans problème.
    Seulement voila, j’essaye de refaire la conf et cette fois dès que je lance le script pour les iptables mon serveur devient inaccessible que ce soit en ssh ou depuis l’interface web de proxmox.
    Quelqu’un aurait une idée du problème j’ai tout revérifié et je suis à court d’idées….

    1. Beaucoup de gens remontent que le script IPtables ne fonctionne pas (mais d’autres remontent eux que ça marche). Malheureusement, il est assez touffu et je pense que dans certains cas il est faux (selon la topologie réseau du provider par exemple ? je ne vois que ça pour expliquer que des fois ça marche et des fois non).

      Pour débuguer, je te conseille de lancer les commandes du script une par une jusqu’à ce que ça bloque, ça nous donnera une piste pour corriger

  135. Bonjour à vous deux,

    Merci énormément pour ce travail !!!!

    Je me pose une question concernant la petite partie sur la gestion des certificats, comment peut-on mettre un certificat sur notre Proxmox alors que le trafic est redirigé vers le PFSense. Dans un second point je souhaite mettre un HAproxy afin de rediriger nom de domaine par service : Exemple : plex.exmple.com ???

    Merci d’avance pour votre retour

    1. Il faut suivre tuto suivant, et rediriger tout le trafic sur la HAproxy (M4vr0x donne l’exemple avec un Plex, il suffit de remplacer plex par haproxy)

      Pour la partie LE, je répond à ton commentaire sur l’autre post (Signez la console web Proxmox avec Let’s Encrypt, c’est trivial)

  136. Merci Zwindler,

    D’accord, au départ je souhaitais utilisé HAproxy directement depuis Pfsense…

    Si je comprends bien en faite j’effectue une redirection du port 80 et/ou 443 sur un serveur nginx qui me fait office de serveur proxy web de plus comme évoqué dans votre commentaire sur l’autre post celui-ci pourra gérer les certificats let’encrypt.

    J’ai déjà mis ce type d’infra par contre l’avantage j’avais une IP failover donc plus simple ;), Quand c’est pour du perso en mode pauvre un kimsufi c’est parfait !!!!

  137. Bonsoir à tous,

    en rebond de mon dernier post, je vous propose un utilitaire intéressant pour effectuer la bascule vers vos différents services via un reverse-proxy :

    Vous faites tourner une instance docker sur une VM avec cette outil dessus afin de rediriger les flux de plus il gère automatiquement les certificats

    https://nginxproxymanager.jc21.com/

  138. Salut,
    Je me suis arraché les cheveux avec du ping/dig qui marche bien et rien dans un navigateur depuis une VM dans le LAN.
    « En fait, quand on utilise des VM avec des périphériques émulés via VirtIO, il est nécessaire de cocher une petite case bien planquée dans System/ Advanced/ Networking -> [x] Disable hardware checksum offload » (source : https://community.scaleway.com/t/quelquun-a-t-il-reussi-a-foutre-un-putain-de-pfsense-avec-promox/3915/4 )
    Ca tient à pas grand chose parfois.

  139. Bonjour à tous,

    Merci pour ce tuto bien remplis, qui m’a été très utile, j’ai appris plein de choses.
    Par contre, je bloque sur une chose, tout fonctionne bien, PFSense avec les pilotes VIRTIO, les VM, etc… sauf que le débit est bridé au alentour de 23Mo/s Max à la sorti de vmbr1, soit au WanPFSense et donc au niveau du LAN, alors que sous Proxmox, les débits dépasse largement les 120Mo/s
    Pour info, j’ai testé sous 3 serveurs différent (OneProvider), j’ai la même chose partout…

    Je soupçonne un soucis au niveau de l’Iptables, mais je débute dans l’Iptables et je ne trouve pas de quel endroit pourrais venir le problème…

    Au plaisir de vous lire :)

Comments are closed.