PréambuleBonjour,
Ayant moi même bien profité de ce forum pour toute mes questions existentielles sur le Free, il me parait normal d'y contribuer aussi de temps en temps.
L'objet de ce Tuto est de réaliser une connexion à la FREEBOX REVOLUTION à distance, et de passer par la FREEBOX pour tout type de flux (Internet et autre). Je l'ai fait dans le but de bénéficier d'une IP Française depuis l'étranger et de pouvoir joindre les machines de mon réseau local. On trouve un peu de tout sur les forums, mais c'est un peu façon puzzle, je vais essayer de condenser cela.
Restrictions :
- Le Firmware de la Freebox est 3.4.1 au moment ou j'écris le post. Comme il y a un certain nombre de bugs corrigés à chaque release, il se peut que mes remarques ne soient plus valables dans un firmware ultérieur
- Le Client utilisé sera Windows 10, cela peut être différent pour un Mac , IOS, ou Android
- Abonnés Fibre ATTENTION : Nos amis de FREE par défaut partagent joyeusement notre IP publique avec d'autres Freenautes en partageant les ports par range suivant l'abonné ! Cela provoque une restriction sur les ports utilisables et notamment sur ceux qui sont configurés par défaut pour le VPN. Il faut demander une IPV4 privée via l'interface abonné de FREE ce qui est très rapide (30mn) puis rebooter la freebox. Ce petit détail m'a fait perdre un temps considérable car ce n'est précisé nulle part. La meilleure façon de le vérifier est d'aller dans l'interface FREEBOX OS >> OPTIONS >> GESTION DES PORTS >> CONNEXIONS ENTRANTES. Si des ports sont en rouge, c'est que vous avez une restrictions sur ceux ci et donc aucune chance que cela fonctionne
Accès VPN en mode BridgeRappelLe mode "Bridge" permet une liaison au niveau transport (niveau 2) entre le client et le réseau de destination. Concrètement, la machine va se comporter comme si elle était sur le réseau distant, sans restrictions. Cela est utile par exemple pour taper le NAS de la Freebox à distance depuis l'explorateur Windows, ou faire passer des protocoles exotiques (IPX ...) qui ne sont pas routables. L'inconvénient est que le broadcast passe également dans le tuyau ...
1/ Configuration FREEBOXDans l'interface du FreeboxOS :
Aller dans OPTIONS >> PARAMETRES >> VPN >> Utilisateurs.
- Ajouter un utilisateur via le "+"
- saisissez un login et mdp
- laisser en IP Dynamique
Aller dans OPTIONS >> PARAMETRES >> VPN >> OpenVPN Bridgé
- Cocher "activer"
- Choisir le port
- Choisir le protocole (perso j'ai mis TCP juste au cas d'une connexion internet de mauvaise qualité)
Vous notez au passage la possibilité de télécharger le fichier de configuration (.ovpn) lié à votre utilisateur créé précédemment.
Téléchargez le et mettez le de côté, il servira à configurer le client OPENVPN plus tard.
2/ Configuration Client sous Windows 10Tout d'abord télécharger le client OpenVPN (pour cet exemple la version était 2.4.1) ici >>
https://openvpn.net/index.php/open-source/downloads.htmlLancer l'installer en laissant les options par défaut mais en vérifiant bien qu'il va installer l'interface réseau virtuelle (TAP) et l'IHM (GUI).
Aller dans %USERPROFILE%\OpenVPN\Config et copier le fichier de configuration téléchargé depuis la freebox.
La configuration du client est terminée !
3/ On se connecte !Connectez vous à un fournisseur internet autre (comme un partage internet d'un téléphone par exemple).
Lancer "OpenVPN GUI"
en mode administrateur. Si vous ne le faites pas , la connexion ne se fera pas correctement car il y a modification des tables de routage et des configurations IP des interfaces.
Faire un clic droit sur l'icone OpenVPN dans la taskbar et choisir la connexion correspondant à votre fichier de configuration (config_openvpn_bridge_<user name>)
Si vous avez tout bien fait, l'icone va passer au vert et vous allez constater les choses suivantes :
- l'IP de votre connexion sur la carte virtuelle TAP est une IP de votre sous réseau local de la FREEBOX
- vous avez accès à l'ensemble des machines du réseau local de la Freebox
- vous voyez le NAS de la Freebox dans l'explorateur
- ... mais tout autre flux de destination passe par votre provider internet local !! Notamment on ne sort pas sur internet via la Freebox, mais par l'accès internet du PC
Cela peut être un choix intéressant en terme de performance mais dans mon cas , je souhaite justement depuis l'étranger ressortir par la Freebox pour surfer sur Internet
Voici donc une alternative pour lancer tout le flux dans le VPN :
Editer le fichier de configuration situé dans %USERPROFILE%\OpenVPN\Config. Il doit ressembler à cela :
client
remote <IP publique FREEBOX> <PORT>
proto tcp-client
nobind
dev-type tap
pull
dev tap0
auth-user-pass
auth-retry interact
etc... etc...
Modifiez le en rajoutant les 2 lignes suivantes :
client
remote <IP publique FREEBOX> <PORT>
proto tcp-client
nobind
dev-type tap
pull
dev tap0
#----------MODIF----------------------------------------
route-gateway 192.168.0.254
redirect-gateway def1
#----------/MODIF----------------------------------------
auth-user-pass
auth-retry interact
etc... etc...
"192.168.0.254" représente l'adresse IP de la Freebox sur votre réseau local. Adaptez si vous n'avez pas une conf standard.
Cela aura comme effet de mettre une route par défaut vers la Freebox pour tous les flux , au travers du VPN. Autre modification : une route entre votre ISP et l'IP publique Freebox afin de maintenir le tunnel malgré ce changement de route par défaut (faire un "Route print -4" pour le vérifier)
Voila ! Normalement vous savez tout faire en mode bridge ! Vérifiez bien via un site du style "
www.mon-ip.fr" que lorsque vous surfez, vous passez bien par la freebox et non par le provider local.
Accès VPN en mode RoutéRappelLe mode "routé" permet d'atteindre le réseau de la freebox en IP (Niveau 3). Cela permet notamment de sortir sur Internet via la Freebox, ce qui correspond à mon cahier des charges ! En revanche tout autre protocole ne pourra pas passer dans le VPN, ce qui fait une différence notable avec le mode "bridgé". Ce mode est pour moi complètement buggé pour Windows 10 et si l'on lit les forum, ce n'est sois-disant pas possible de le faire marcher pour des raisons de topologie ... On va voir que c'est tout à fait possible de le faire marcher... moyennant quelques modifs.
Sur Android, en utilisant un bon client VPN à savoir "OpenVPN for Android", ça marche nativement par contre. On voit que nos amis développeurs n'aiment pas Microsoft, c'est mal. Moi je suis comme notre nouveau président j'aime tout le monde !!
Comme la configuration du serveur VPN poussée au client ne fonctionne pas sous Windows (erreur du style
"inconfig adresses are not in the same /30 subnet (topology net30)"), j'ai tenté de deviner au travers des logs ce que pouvait être la conf IP de l'ensemble. Donc pour moi, ça devrait ressembler à ça (une fois le tunnel monté) en supposant que vous avez laissé la config par défaut de la freebox en 192.168.0.254 :
CLIENT WINDOWS (192.168.27.65) <=====> (192.168.27.94)
SERVEUR VPN FREEBOX (192.168.0.xx) <=========>
FREEBOX (192.168.0.254)
1/ Configuration de la FREEBOXRéaliser les mêmes étapes que pour la configuration bridgé sauf que vous pourrez gardez l'utilisateur créé précédemment et bien sur cette fois ci il faut aller dans "OpenVPN Routé". Prendre un autre port TCP ou UDP et choisir IPV4 comme protocole supporté.
Récupérer le fichier de configuration lié à votre utilisateur qui va s'appeler maintenant
config_openvpn_routed_<user_name>.ovpn et mettez le de côté (on va le modifier plus tard). Ce fichier marchera parfaitement sur un client Android par ailleurs.
2/ Configuration du client sous Windows 10Installer le client OPENVPN comme expliqué dans le mode bridge et
executez le en mode administrateur.
Copiez le fichier de config récupéré précédemment dans le répertoire %USERPROFILE%\OpenVPN\Config
3/ On se connecte ! Connectez vous à un fournisseur internet autre (comme un partage internet d'un téléphone par exemple).
Lancez la connexion (bien choisir le "routed" cette fois ci). Normalement , la connexion partira en erreur et la raison invoquée sera dans le log
"inconfig adresses are not in the same /30 subnet (topology net30)". Si vous voulez en voir plus il faudra rajouter une directive dans le fichier de configuration "verb 4" qui rendra la log bavarde.
Cela provient si je lis bien les logs d'une config "pushée" par le serveur OpenVPN FREE qui semble poser problème. l'adresse IP du client est 192.168.27.65 et celle de la terminaison de tunnel 212.27.38.253 , qui ne sont pas vraiment sur le même subnet !
L'astuce est donc d'ignorer une partie des paramètres poussés par le serveur OPENVPN et de rajouter les bonnes valeurs côté fichier de conf client.
Editez le fichier "%USERPROFILE%\OpenVPN\Config\config_openvpn_routed_<user_name>.ovpn" . Avant modif, ça doit ressembler à cela :
client
remote <IP Publique FREEBOX> <PORT VPN>
proto tcp-client
nobind
dev-type tun
pull
dev tun0
redirect-gateway
auth-user-pass
auth-retry interact
etc... etc...
Modifiez le comme tel :
client
remote <IP Publique FREEBOX> <PORT VPN>
proto tcp-client
nobind
dev-type tun
pull
dev tun0
#----------MODIF----------------------------------------
topology subnet
ifconfig 192.168.27.65 255.255.255.224
pull-filter ignore "ifconfig"
route-gateway 192.168.27.94
#----------/MODIF---------------------------------------
redirect-gateway
auth-user-pass
auth-retry interact
etc... etc...
La directive
pull-filter ignore "ifconfig" va empêcher le serveur OpenVPN de la FREEBOX de pousser une configuration IP sur l'interface de la carte réseau virtuelle.
On fixe également du coup son IP (192.168.27.65) et le masque (255.255.255.224), on change la topologie de "net30" à "subnet" (google est ton ami pour comprendre pourquoi) et on fixe la passerelle sur ce que je suppose être la terminaison du VPN côté Freebox (192.168.27.94).
Notez au passage que via la directive "redirect gateway", l'ensemble du flux part bien dans le VPN.
Vérifiez bien via un site du style "
www.mon-ip.fr" que lorsque vous surfez, vous passez bien par la freebox et non par le provider local.
Et voila , tout marche comme sur des roulettes , donc c'était possible