Comment accĂ©der Ă vos machines derriĂšre votre Freebox alors que vous n'ĂȘtes pas chez vous. Ou comment accĂ©der Ă votre rĂ©seau local depuis internet.
Ce billet peut Ă©galement rĂ©pondre Ă la question comment utiliser votre connexion internet de votre domicile pour naviguer sur internet alors que vous nâĂȘtes pas chez vous.
Dans ce billet, nous allons regarder comment faire cela pour des personnes ayant une Freebox et une machine sous Linux.
Ce billet implique que votre Freebox voit votre rĂ©seau interne, et ce nâest certainement pas une solution acceptable pour toute personne considĂ©rant que son rĂ©seau internet doit ĂȘtre protĂ©gĂ© par un Firewall physique (une machine dĂ©diĂ©e).
Cette configuration doit ĂȘtre faite avant dâen avoir besoin, derriĂšre votre Freebox.
Configuration de la « Freebox »
La premiÚre étape consiste à configurer et activer le service VPN de votre Freebox.
Depuis votre navigateur, ouvrez lâinterface dâadministration de votre Freebox: http://maFreebox.Freebox.fr
- Lancer lâapplication « ParamĂštres de la Freebox » et passez en « Mode avancé » si ce nâest pas dĂ©jĂ le cas.
- Initialement tous les services VPN sont désactivés.
- Dans « utilisateurs », cliquer sur ajouter un « utilisateur ».
- Créer un utilisateur avec un « Login » et un « mot de passe » puis « sauvegarder ».
- Sélection « OpenVPN routé » qui est probablement désactivé.
- Activer le service « OpenVPN routé » et « sauvegarder » la configuration pour lâutilisateur concernĂ©,
- Cela téléchargera un fichier nommé
config_openvpn_routed_USERNAME.ovpn
.
- Dans « Ătat », vĂ©rifier que le service soit actif.
Configuration de votre Linux
En premier lieu vous aurez besoin de plusieurs paquets, que vous pouvez installer comme suit :
sudo apt install openvpn bridge-utils network-manager-openvpn network-manager-openvpn-gnome
Il se peut que certains de ces paquets soit dĂ©jĂ prĂ©sent, lâinstallation les ignorera. Sur une machine « headless » (un serveur sans interface graphique) vous prendrez garde Ă ne pas installer le paquet « gnome ».
Ensuite vous devez démarrer le service :
sudo systemctl start openvpn
Puis lâactiver pour se lance au prochain redĂ©marrage de votre machine :
sudo systemctl enable openvpn
Vérifier son état est une bonne idée :
sudo systemctl status openvpn
Alors que vous nâavez pas encore configurĂ© le VPN, constater les interfaces rĂ©seaux disponibles sur votre machine :
ip --json link
Ou pour un affichage plus clair :
ip --json link | jq -c '.[] | select( .flags | index( "UP" ) ) | { ifindex, ifname }'
{"ifindex":1,"ifname":"lo"}
{"ifindex":2,"ifname":"enp3s0"}
{"ifindex":4,"ifname":"docker0"}
Rappelons-nous que la configuration dâOpenVPN se trouve dans le fichier config_openvpn_routed_USERNAME.ovpn
tĂ©lĂ©chargĂ© depuis la Freebox Ă partir de lĂ deux options sâoffre Ă vous :
- DĂ©marrer OpenVNP depuis la ligne de commande : Câest plus contraignant, mais jâobtiens un rĂ©seau plus stable avec cette solution,
- DĂ©marrer OpenVNP depuis le bureau, câest un peu plus compliquĂ© Ă configurer, mais plus simple Ă lâusage.
Configuration du VPN sur Linux depuis la ligne de commande
Pour dĂ©marrer le VPN depuis la ligne de commande c'est plutĂŽt simple, les droits administrateurs sont requis, on ajoute quand mĂȘme une interface rĂ©seau au niveau du systĂšme.
sudo openvpn --config /chemin/fichier/config_openvpn_routed_USERNAME.ovpn
Par exemple :
sudo openvpn --config ~/Downloads/config_openvpn_routed_cclaude.ovpn
Vous devrez donner le mot de passe correspondant Ă votre compte local pour la commande sudo, ensuite le nom dâutilisateur dĂ©fini pour le rĂ©seau VPN ainsi que le mot de passe correspondant.
2022-11-28 13:05:25 DEPRECATED OPTION: --cipher set to 'AES-128-CBC' but missing in --data-ciphers (AES-256-GCM:AES-128-GCM). Future OpenVPN version will ignore --cipher for cipher negotiations. Add 'AES-128-CBC' to --data-ciphers or change --cipher 'AES-128-CBC' to --data-ciphers-fallback 'AES-128-CBC' to silence this warning.
2022-11-28 13:05:25 OpenVPN 2.5.5 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Jul 14 2022
2022-11-28 13:05:25 library versions: OpenSSL 3.0.2 15 Mar 2022, LZO 2.10
Enter Auth Username: cclaude
đ Enter Auth Password: ******************************
2022-11-28 13:05:43 TCP/UDP: Preserving recently used remote address: [AF_INET]123.456.78.90:14814
2022-11-28 13:05:43 UDP link local: (not bound)
2022-11-28 13:05:43 UDP link remote: [AF_INET]123.456.78.90:14814
2022-11-28 13:05:43 [Freebox OpenVPN server deadf00ddeadf00d432bb2b3deadf00d] Peer Connection Initiated with [AF_INET]82.123.456.78:14814
2022-11-28 13:05:44 TUN/TAP device tun0 opened
2022-11-28 13:05:44 net_iface_mtu_set: mtu 1500 for tun0
2022-11-28 13:05:44 net_iface_up: set tun0 up
2022-11-28 13:05:44 net_addr_ptp_v4_add: 192.168.27.66 peer 12.34.56.78 dev tun0
2022-11-28 13:05:44 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
2022-11-28 13:05:44 Initialization Sequence Completed
ip --json link | jq -c '.[] | select( .flags | index( "UP" ) ) | { ifindex, ifname }'
{"ifindex":1,"ifname":"lo"}
{"ifindex":2,"ifname":"enp3s0"}
{"ifindex":4,"ifname":"docker0"}
{"ifindex":10,"ifname":"tun0"}
De maniÚre générale pour récupérer les informations de la connexion VPN si elle est active, vous pouvez utiliser :
Concernant le périphérique réseau :
ip --json link | jq -c '.[] | select( (.flags | index( "POINTOPOINT")) and (.flags | index ("UP")) )'
Si câest la couche IP, vous pouvez utiliser :
ip --json address | jq -c '.[] | select( (.flags | index( "POINTOPOINT")) and (.flags | index ("UP")) )'
Configuration du VPN sur Linux depuis le bureau
Cette partie fera lâobjet dâun autre billet.
Considération autour de la sécurité
- Utilisez votre propre serveur VPN, pas celui de votre opérateur réseau.
- Nâactiver le serveur VPN quâĂ la demande
- Mettez vos machines derniĂšres un Firewall physique, qui sur lequel sera votre serveur VPN.
Liens
- Utiliser le VPN de la Freebox sous Ubuntu
- Script de reformatage du fichier de la configuarion
- Install OpenVPN on Linux Mint 20
኿