Installation de opnsense sur le serveur frontal protectli

Installation via un ISO téléchargeable : j’ai fait booter le serveur sur une clef USB contenant l’iso.

Une fois installé, j’ai procédé à la configuration suivante des interfaces opnsense :

  • adresse IP interface LAN : 10.0.10.1/24
  • adresse IP v4 interface WAN : 192.168.1.101 (j’ai fixé l’ipv4 statiquement)
    • puis dans la box internet j’ai réservé cette IP à l’adresse MAC du serveur protectli
  • adresse IP v6 interface WAN : adresse IPV6 distribuée par le DHCPv6 de la box internet (cf. après)
    • puis j’ai ensuite réservé l’adresse IPv6 à l’adresse MAC du serveur protectli

De souvenir, l’adresse IPv6 a été obtenue après redémarrage d’opnsense, ou simplement un rechargement des interfaces.
Après avoir réservé l’adresse IPv6 sur la box internet, il se peut que vous deviez redémarrer votre box internet pour que ça soit bien pris en compte, avant même de redémarrer opnsense !
L’utilisation d’IP v6 est obligatoire si votre vous fournisseur d’accès vous a distribué une IP v4 en CGNAT, c’est à dire une IP partagée.

Configuration de l’interface WAN

Il est important de noter qu’il faut décocher « block private networks » dans l’interface WAN : When set, this option blocks traffic from IP addresses that are reserved for private networks as per RFC 1918 as well as loopback, link-local and Carrier-grade NAT addresses. This option should only be set for WAN interfaces that use the public IP address space.

Configuration de l’interface LAN

L’interface WG0 créée par l’instance wireguard

Cette interface n’a pas a être configurée, elle apparaît lorsqu’une instance wireguard est créée. Il s’agit d’une interface virtuelle.
Lorsque le serveur wireguard reçoit un paquet UDP, ce paquet arrive sur l’interface WAN d’opnsense. Ensuite le serveur wireguard décrypte son contenu pour y extraire la requête cliente, et injecte le paquet extrait sur l’interface virtuelle WG0.

Firewall rules

Dans les règles firewall suivantes il n’y a pas besoin de spécifier une règle pour les paquets de retour.
Par exemple lorsqu’un paquet de source 10.0.7.2 (mon client vpn) et de destination 10.0.10.101 arrive sur l’interface virtuelle WG0, ce paquet « passe » l’interface car il y a une règle qui autorise les paquets de source 10.0.7.0/24
En revanche il n’est pas nécessaire de définir une règle pour autoriser le paquet de retour qui viendra de la source 10.0.10.101 car le parefeu d’opnsense est stateful :

  • le pare-feu mémorise cette connexion dans une table d’états
  • Il sait que cette connexion est « valide » et autorise automatiquement les paquets de retour (ex: depuis 10.0.10.0/24 vers 10.0.7.0/24) sans besoin de règle explicite

Firewall rules : interface WAN

Firewall rules : interface LAN

Firewall rules : interface WG0

Box internet avec une IP en CGNAT

Le CGNAT est une technologie utilisée par les fournisseurs d’accès internet pour réduire la consommation d’adresses IP. En gros plusieurs box sont derrière une IP fixe, et entre ces box et le point disposant de l’ip fixe (l’ISP), il y a un routeur qui fait du NAT pour faire correspondre les flux internet vers les bonnes box internet.
Et donc en gros nous partageons une même IP avec d’autres box internet, mais un port est utilisé pour identifier les requêtes… Et donc par exemple nous ne pouvons pas de l’extérieur espérer contacter le port d’écoute de wireguard serveur (par exemple 54678) sur notre box internet.

C’est le cas avec ma box internet Red SFR. Ainsi j’ai du activer IPv6 et DHCPv6 sur la box internet.

Activation de IP V6 + DHCP IP V6 sur la box internet

IP V6 permet de passer outre ce CGNAT puisqu’en IP V6 il n’y a pas de notions de NAT, nous pouvons accéder directement notre routeur opnsense depuis l’ip v6 qu’il va obtenir par la box internet.
Sur la box internet nous activons l’ip v6 et le DHCP ip v6, la box internet peut ainsi distribuer une IP v6 à qui le demande.
==> opnsense demande une ipv6 pour son interface WAN et l’obtiens.
==> Ensuite nous réservons cette IPV6 pour opnsense sur l’interface d’admin de la box (réservation via l’adresse MAC du routeur opnsense)

==> En IP V6 nous pourrons contacter le port 54678 sur notre routeur, même si l’ip v4 de notre box est en CGNAT.

Le VPN Wireguard

Dans opnsense : Création d’une instance WireGuard et d’un peer WireGuard

  • instance wireguard : c’est le serveur wireguard dans opnsense
    • l’instance wireguard écoute sur un port en UDP (ici sur le port 54678)
    • choix de l’ip 10.0.7.1/24 pour l’instance wireguard
  • peer wireguard : c’est un client wireguard qui sera autorisé à se connecter au serveur wireguard
    • vous pouvez lui attribuer l’ip 10.0.7.2/24
  • le peer wireguard a sa propre paire de clef privée/publique, sa clef publique est enregistrée dans la définition du peer dans opnsense, mais la clef privée elle est seulement présente dans le client WireGuard (donc en dehors de opnsense)
  • l’instance wireguard a sa propre paire clef privée/publique enregistrée dans opnsense, mais les clients WireGuard eux ne connaissent que la clef publique du serveur

L’instance wireguard a son propre réseau indépendant des autres réseaux, vous pouvez par exemple choisir arbitrairement de travailler sur le réseau 10.0.7.0/24 (attention à que votre poste client, là où vous aurez votre client wireguard, n’ait pas une route définit pour 10.0.7.0/24, cela m’est arrivé j’avais un relicat d’une route professionnelle).

Autorisation du traffic internet vers le serveur wireguard/opnsense (firewall de la box internet)

Par défaut le firewall de la box internet bloque tout le traffic ipv6.
==> Nous autorisons uniquement le traffic UDP à destination de l’ipv6 de opnsense et sur le port d’écoute de wireguard choisit (54678 dans mon cas)


Tester la connectivité UDP sur le port 54678 et votre IP v6

nmap -6 -p 54678 -sU -Pn 2a02:8428:2fe3:3e01:cccc:bbbb:111:aaaa
Starting Nmap 7.94 ( https://nmap.org ) at 2026-04-01 22:46 Paris, Madrid (heure dÆÚtÚ)
Nmap scan report for 2A02-8428-2FE3-3E01-CCCC-BBBB-0111-AAAA.rev.sfr.net (2a02:8428:2fe3:3e01:cccc:bbbb:111:aaaa)
Host is up (0.0010s latency).

PORT      STATE         SERVICE
54678/udp open|filtered unknown
MAC Address: 64:62:66:4D:2D:44 (Protectli)

Nmap done: 1 IP address (1 host up) scanned in 17.86 seconds

Le traffic atteint l’interface WAN de notre opnsense.
Remarque : j’ai volontairement modifié l’adresse IPV6 et l’adresse MAC.

Installation et configuration d’un client wireguard

Sur un PC windows il faut installer le client wireguard et ensuite créer une configuration VPN.

[Interface]
PrivateKey = <YOUR_CLIENT_PRIVATE_KEY_HERE>
Address = 10.0.7.2/32
DNS = 8.8.8.8, 192.168.1.1

[Peer]
PublicKey = <WIREGUARD_SERVER_PUBLIC_KEY_HERE>
AllowedIPs = 10.0.7.0/24, 10.0.10.0/24
Endpoint = [2a02:8428:2fe3:3e01:cccc:bbbb:111:aaaa]:54678
PersistentKeepalive = 25

Address : 10.0.7.2/32 ==> c’est l’IP de notre client wireguard dans le réseau wireguard. C’est une IP que l’on a choisit librement et que l’on a définit dans le wireguard peer de opnsense.

AllowedIPs = 10.0.7.0/24, 10.0.10.0/24 ==> le traffic à destination de ces IP passera par le tunnel wireguard. Tout le reste passera par d’autres routes disponibles sur votre laptop.

Dans powershell nous pouvons lister les routes (lorsque le vpn est activé) via la commande ‘route print’ et nous verrons les routes suivantes relatives à AllowedIPs :

         10.0.7.0    255.255.255.0         On-link          10.0.7.2      5
       10.0.7.255  255.255.255.255         On-link          10.0.7.2    261
        10.0.10.0    255.255.255.0         On-link          10.0.7.2      5
      10.0.10.255  255.255.255.255         On-link          10.0.7.2    261

On peut tester la connexion, lorsque celle-ci se fait alors on observe une petite coche verte et la connexion est marquée comme activée :

On peut se connecter sur l’UI d’opnsense à travers l’IP privée 10.0.10.1 que nous pouvons accéder grâce au VPN.

Description du flux

Une fois le VPN client activé, lorsque j’essaie d’accéder à https://10.0.10.1 voici ce qu’il se passe :

  • la destination 10.0.10.1 est-elle dans la plage AllowedIPs ? oui ==> le paquet https à destination de 10.0.10.1 part dans le tunnel wireguard, il prend comme ip source 10.0.7.2 l’ip du client wireguard dans le tunnel wireguard
  • wireguard encrypte ce paquet, et l’enveloppe dans un paquet UDP avec :
    • source IP publique client, port source négocié
    • destination IP endpoint wireguard client + port d’écoute du serveur wireguard (54678 dans notre cas)
  • le paquet arrive sur l’interface WAN d’opnsense (le endpoint que nous avons définit dans le client wireguard), sur le port d’écoute 54678
  • l’instance serveur wireguard décrypte le paquet, on retrouve le paquet initial source 10.0.7.2 et destination 10.0.10.1

Connexion du serveur proxmox au LAN

il suffit de changer l’ip du serveur proxmox pour qu’il soit accessible dans le réseau LAN, et également réserver l’ip de proxmox afin qu’il ne change pas d’ip. Tout ceci est expliqué ici : https://codetodevops.com/2026/04/09/homelab-v2-partie-3-changer-lip-de-proxmox-et-notion-de-bridge/