Accéder à un LAN depuis internet (partage fichiers, serveur, …) avec VPN

Le VPN permet d'établir une connexion entre deux réseaux à travers un tunnel chiffré.
Les entreprises l'utilisent notamment pour le télétravail, ainsi l'employé se trouve connecter au réseau de l'entreprise depuis sa connexion internet.

Il existe des solutions pro avec des boitiers ou des routeurs grands publics.
Ici nous allons comment accéder à son réseau local LAN depuis internet avec un VPN avec un serveur sur internet.
C'est une solution 100% Linux.

acceder-a-un-lan-depuis-internet-avec-vpn-partage-fichiers-serveur

Introduction

Pour accéder à un réseau local LAN depuis internet avec un VPN, on peut installer un serveur VPN dans son LAN.
Certains routeurs VPN proposent aussi des fonctionnalités de VPN.

Ici nous allons voir une autre architecture pour le grand public mais qui demande des connaissances informatiques pour être mise en place.

L'idée ici est d'avoir un serveur dédié sur internet, par exemple un serveur OVH.
On peut opter pour un VPS car cela ne demande de grandes ressources systèmes.
Sur ce dernier on installe un serveur VPN comme OpenVPN ou WireGuard.
Puis dans son réseau local, on installe un raspberry PI que l'on connecte au VPN.
Le raspberry reste connecté en permanence au serveur VPN.
Enfin on accède au LAN via le VPN établi par le raspberry sur le serveur OVH.

L'architecture dans cet article :

Schéma accéder à un LAN depuis internet avec VPN (partage fichiers, serveur, ...)
  • Un serveur OVH avec
    • 54.xxxx
    • Le VPN en 192.168.10.1
  • Un LAN en 192.168.1.X avec le routeur/box internet en 192.168.1.1
  • Le raspberry PI :
    • sur le LAN en 192.168.1.254
    • en VPN avec 192.168.10.6

Accéder à un LAN depuis un VPN (partage fichiers, serveur, etc)

Installer le serveur VPN

L'installation du VPN ne sera pas détaillé étant donné qu'il y a déjà des articles sur le site :

Comme il s'agit d'un serveur en ligne, on peut aussi installer le VPN à travers pihole :

Les connexions Client-to-client sur OpenVPN et Wireguard

Ensuite il faut que la communication entre les clients VPN puissent se faire.
Sur OpenVPN, il faut ajouter l'option suivante dans la configuration du serveur :

client-to-client

Ensuite si vous avez un filtre iptables, on autorise le forward entre les interfaces.
Sur Wiregard, ce sera donc entre les interfaces wg0 :

iptables -A FORWARD -i wg0 -o wg0 -j ACCEPT

On voit ici que les paquets sont dropés mais qu'en ajoutant la règle iptables, le test de ping est concluant.

La connexion entre clients sur WireGuard

Vous pouvez autoriser sur les IP comme ceci :

iptables -A FORWARD -s 192.168.10.0/24 -d 192.168.10.0/24 -j ACCEPT

Tester la connexion VPN depuis internet

On commence par une tentative de connexion SSH entre le serveur et le raspberry.
Ici on voit qu'en la connexion SSH s'effectue sans problème.

Tester la connexion VPN depuis internet

Puis ci-dessous un PC connecté à internet hors du LAN.
On établit la connexion VPN avec Wireguard et on fait un test de ping du raspberry qui se fait parfaitement.

Tester la connexion VPN depuis internet

Enfin on tente de se connecter en SSH au raspberry PI depuis un PC sur internet via le VPN.
Là aussi cela fonctionne.

Se connecter en SSH au raspberry PI depuis un PC sur internet via le VPN

Accéder aux services réseaux du LAN depuis internet

Dernière étape, utiliser le raspberry PI comme passerelle pour accéder à des services réseaux du LAN.
Ici nous avons un NAS à l'adresse 192.168.1.100.

Accéder aux services réseaux du LAN depuis internet

Iptables donne la possibilité de rediriger un port local vers une autre machine.
Il s'agit donc d'un transfert de ports.
La syntaxe pour rediriger le port 8080 vers l'adresse IP 192.168.1.100.

sudo iptables -t nat -A PREROUTING -jDNAT -p tcp --dport 8080 --to-destination 192.168.1.100

Ici lorsqu'on se connecte au raspberry avec son IP du VPN 192.168.10.6:8080, on tombe sur l'interface WEB du NAS

Accéder aux services réseaux du LAN depuis internet

Dans le même style, on peut donc accéder par le VPN au partage du fichier du NAS du LAN.
Pour cela, on redirige le port 445 comme ceci :

sudo iptables -t nat -A PREROUTING -jDNAT -p tcp --dport 445 --to-destination 192.168.1.100

On voit que l'on peut accéder aux partages de dossier Windows depuis internet sans problème.

Accéder aux partages de fichiers du LAN depuis internet

Bien entendu, la copie n'est pas rapide et reste dépend de la liaison VPN.
Ici comme le LAN a un accès internet par une ADSL, la copie de fichier par le partage de fichiers n'est pas rapide.

Accéder aux partages de fichiers du LAN depuis internet

Enfin on peut aussi accéder au LAN depuis un smartphone via la 4G/5G ou depuis une connexion internet toujours grâce au VPN.

Accéder aux services réseaux du LAN depuis internet

Conclusion

Voici donc un exemple d'architecture qui donne accès à son LAN depuis internet de manière sécurisé.
Aucun port et service du réseau du LAN n'est directement exposé sur internet car nous n'avons fait aucun transfert de port depuis le routeur / box internet.
Tout se fait à travers le VPN.
Il faut toutefois que le serveur dédié ne soit pas compromis.

Nous avons utilisé 100% de logiciel libre Linux, soit donc 0 euro de licence.
Le seul coût est le serveur dédié.

Il existe d'autres solutions notamment pour se connecter à distance à son NAS par internet :