OpenVPN client pfSense <-> OPenVPN serveur Freebox : ajouter les routes ?
-
Bonjour à tous
1/ Mon objectif : Permettre de monter en SMB un disque du NAS de la FreeBox pour faite une synchronisation de contenu d'un serveur connecté au pfSense.
Un petit schéma vaut mieux qu'un long discours...
2/ Contexte / opération réalisées (et qui fonctionnent)
Version de mon pfSense : 2.7.2- Une patte WAN fibre (PPPoE) avec une IP publique fixe
- Une patte LAN
2.1 Sur la FreeBox :
- Activation du serveur OpenVPN en mode routé
- Création d'un utilisateur / mot de passe
- Récupération du fichier de configuration .opvn
- Validation du fichier de configuration avec TunnelBlick sur Mac OS : Ouverture du VPN : OK / Montage du disque en SMB : OK (et accès à une ressource de mon réseau connecté derrière la FreeBox : OK)
2.2 Sur mon pfSense (après avoir ouvert le fichier de configuration .opvn dans un éditeur de texte)
- Création de l'autorité de certification (copie/colle de certificat en section <ca>[...]</ca>)
- Création du certificat et de sa clé privée (copie/colle de certificat en section <cert>[...]</cert> et <key>[...]</key>)
- Configuration du client OpenVPN avec les paramètres suivants :
Server mode : Peer to Peer (SSL/TLS) Device mode : UDP on IPv4 only Interface : WAN_FIBRE Local port : 0 Server host or address : 82.999.999.999 (vous croyez pas que j'allais mettre la vrai IP ? ;o)) Server port : 20244 Username : <mon_nom_user_FB> Password : <mon_mdp_user_FB> TLS Configuration : décoché Peer Certificate Authority : l'autorité de certification précédente Client Certificate : le certificat précédent Data Encryption Algorithms : AES-256-CBC Fallback Data Encryption Algorithm : AES-128-CBC Auth digest algorithm : SHA256 (256-bit) Server Certificate Key Usage Validation : coché IPv4 Remote network(s) : 192.168.31.0/24 (IP de mon LAN Domicile)
J'ai puisé ces informations dans le fichier de configuration .opvn venant de la FreeBox :
client remote 82.999.999.999 20244 (Note : mon accès fibre est en fullstack) proto udp nobind dev-type tun pull dev tun0 redirect-gateway auth-user-pass auth-retry interact fragment 1452 mssfix 1452 explicit-exit-notify 3 cipher AES-256-CBC remote-cert-tls server verify-x509-name "C=FR, O=Freebox SA, CN=Freebox OpenVPN server xxxxxxxxxxxx" # use tls-remote instead of verify-x509-name for deprecated openssl # tls-remote "/C=FR/O=Freebox_SA/CN=Freebox_OpenVPN_server_xxxxxxxxxxx"
Ce qui fonctionne : le VPN s'ouvre et reste ouvert...
Dans statut d'OpenVPN du pfSense j'ai :Status : Connected (Success) Local Address : 212.999.999.999:51441 (l'adresse IP de ma patte Wan pfSense) Virtual Address : 192.168.27.65 Remote Host : 82.999.999.999:20244 (l'adresse IP WAN de ma box domicile)
Et coté Freebox (Paramètres / Serveur VPN / Connexions):
Utilisateur : <mon_nom_user_FB> IP Source : 212.999.999.999:51441 IP Locale : 192.168.27.65
3/ Ce qui ne fonctionne pas...
Impossible d'établir la moindre connexion ou de pinguer l'adresse IP de la Freebox via son adresse IP LAN de mon domicile depuis le pfSenseDans les logs, j'ai effectivement cette erreur :
ERROR: FreeBSD route add command failed: external program exited with error status: 1
J'ai pas mal cherché sur le net et sur ce forum. Le seul message évoquant cette erreur est celui-ci
https://forum.netgate.com/topic/115457/vpn-openvpn-pfsense-freebox-route-add-command-failedEffectivement, tout laisse à penser qu'il manque une déclaration de route au niveau de pfSense.
Si je vais voir la table de routage du pfSense, je n'ai aucune route vers la classe d'IP du LAN de mon domicile (192.168.31.0/24)
La seule IP que je vois dans la table de routage liéé à ma connexion OpenVPN (ovpnc1) est 212.888.888.888 (ce n'est pas l'IP de l'interface WAN de mon pfSense mais une autre)4 / Mais quel est l'itinéraire ?
Retour sur mon Mac pour voir quelle est la table de routage de celui-ci lorsque le VPN est ouvert puis fermé :
une comparaison de la commande netstat -nr -f inet dans les deux états du VPN nous montre que lorsqu'il est ouvert :Destination Gateway Flags Netif default 212.888.888.888 UGScg utun7 (tiens, on retrouve cette IP en route par défaut vers l'interface OpenVPN...) [...] 192.168.27.64/27 212.888.888.888 UGSc utun7 et en adresse de passerelle pour les adresses d'OpenVPN 192.168.31 212.888.888.888 UGSc utun7 aussi pour le LAN de mon domicile [...] 212.888.888.888 192.168.27.66 UHr utun7
5/ Mes questions
- Le fait d'ajouter ces routes permet-il de progresser vers la solution. Je ne connais pas bien OpenVPN et surtout la différence entre client site à site et client nomade.
Ici nous sommes dans le cas où la FreeBox attend la connexion d'un client nomade alors que le client OpenVPN du pfSense est en mode site à site.
Il semblerait que dans le mode nomade le serveur "pousse" la route vers le logiciel client nomade alors que dans le mode site à site le client n'attend pas cette directive (d'où l'erreur "route add command failed").
D'où mon interrogation à propos de l'ajout des routes "à la mano". - Comment ajouter ces routes proprement ?
En m'inspirant de cet article (https://blog.muffn.io/posts/tunneling-specific-traffic-over-a-vpn-with-pfsense/) je n'ai réussi qu'à planter totalement la configuration de connexion internet du pfSense
Si quelqu'un s'est déjà trouvé confronté à cette configuration, je suis à son écoute (mais sans passer par pptp... )
Merci de votre aide (surtout à ceux qui ont lu l'intégralité de mon post).
Bonne journée.