
Mettez en place votre propre serveur VPN IPsec en seulement quelques minutes, avec IPsec/L2TP, Cisco IPsec et IKEv2. Prend en charge Ubuntu, Debian, CentOS/RHEL, Alpine Linux et Raspberry Pi OS. Inclut des scripts de configuration client et de gestion.
English | 简体中文 | 繁體中文 | 日本語 | Русский
Configurez votre propre serveur VPN IPsec en quelques minutes, avec IPsec/L2TP, Cisco IPsec et IKEv2.
Un VPN IPsec chiffre votre trafic réseau, de sorte que personne entre vous et le serveur VPN ne puisse espionner vos données lorsqu'elles transitent par Internet. Cela est particulièrement utile sur les réseaux non sécurisés, par exemple dans les cafés, les aéroports ou les chambres d'hôtel.
Nous utiliserons Libreswan comme serveur IPsec, et xl2tpd comme fournisseur L2TP.
Fonctionnalités :
Également disponibles :
Tout d'abord, préparez votre serveur Linux* avec une installation d'un système d'exploitation pris en charge.
Utilisez cette commande en une ligne pour configurer un serveur VPN IPsec :```bash wget https://get.vpnsetup.net -O vpn.sh && sudo sh vpn.sh
Vos identifiants de connexion VPN seront générés aléatoirement et affichés une fois terminé.
> [!TIP]
> Installez optionnellement [WireGuard](https://github.com/hwdsl2/wireguard-install), [OpenVPN](https://github.com/hwdsl2/openvpn-install) et/ou [Headscale](https://github.com/hwdsl2/headscale-install) sur le même serveur.
<details>
<summary>
Voir le script en action (enregistrement du terminal).
</summary>
**Note :** Cet enregistrement est à des fins de démonstration uniquement. Les identifiants VPN dans cet enregistrement ne sont **PAS** valides.
<p align="center"><img src="https://raw.githubusercontent.com/hwdsl2/setup-ipsec-vpn/HEAD/docs/images/script-demo.svg"></p>
</details>
<details>
<summary>
Cliquez ici si vous ne parvenez pas à télécharger.
</summary>
Vous pouvez également utiliser `curl` pour télécharger :```bash
curl -fsSL https://get.vpnsetup.net -o vpn.sh && sudo sh vpn.sh
URLs de configuration alternative :```bash https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/vpnsetup.sh https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/vpnsetup.sh
Si vous ne pouvez pas télécharger, ouvrez [vpnsetup.sh](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/vpnsetup.sh), puis cliquez sur le bouton `Raw` à droite. Appuyez sur `Ctrl/Cmd+A` pour tout sélectionner, `Ctrl/Cmd+C` pour copier, puis collez dans votre éditeur préféré.
</details>
Une image [Docker](https://github.com/hwdsl2/docker-ipsec-vpn-server) pré-construite est également disponible. Pour les autres options et la configuration du client, lisez les sections ci-dessous.
\* Un serveur cloud, un serveur privé virtuel (VPS) ou un serveur dédié.
## Communauté
- 📬 [Abonnez-vous aux mises à jour du projet](https://selfhostedstack.beehiiv.com/subscribe?utm_campaign=vpn) (1 à 2 e-mails/mois) — obtenez des guides gratuits de déploiement VPN et IA (PDF)
- 💬 Rejoignez la communauté [r/selfhostedstack](https://www.reddit.com/r/selfhostedstack/) pour discuter
- ⭐ Mettez une étoile au dépôt si vous le trouvez utile — cela aide les autres à le découvrir
## Prérequis
Un serveur cloud, un serveur privé virtuel (VPS) ou un serveur dédié, avec une installation de :
- Ubuntu 26.04, 24.04 ou 22.04
- Debian 13, 12 ou 11
- CentOS Stream 10 ou 9
- Rocky Linux ou AlmaLinux
- Oracle Linux
<details>
<summary>
Autres distributions Linux prises en charge.
</summary>
- Raspberry Pi OS (Raspbian)
- Kali Linux
- Alpine Linux
- Red Hat Enterprise Linux (RHEL)
</details>
Cela inclut également les machines virtuelles Linux dans les clouds publics, tels que [DigitalOcean](https://blog.ls20.com/digitalocean), [Vultr](https://blog.ls20.com/vultr), [Linode](https://blog.ls20.com/linode), [OVH](https://www.ovhcloud.com/en/vps/) et [Microsoft Azure](https://azure.microsoft.com). Les utilisateurs de cloud public peuvent également déployer en utilisant [les données utilisateur](https://blog.ls20.com/ipsec-l2tp-vpn-auto-setup-for-ubuntu-12-04-on-amazon-ec2/#vpnsetup).
Déploiement rapide vers :
[](https://cloud.linode.com/stackscripts/37239) [](aws/README.md) [](azure/README.md)
[**» Je veux exécuter mon propre VPN mais je n'ai pas de serveur pour cela**](https://blog.ls20.com/ipsec-l2tp-vpn-auto-setup-for-ubuntu-12-04-on-amazon-ec2/#gettingavps)
Pour les serveurs avec un pare-feu externe (par exemple [EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html)/[GCE](https://cloud.google.com/vpc/docs/firewalls)), ouvrez les ports UDP 500 et 4500 pour le VPN.
Une image [Docker](https://github.com/hwdsl2/docker-ipsec-vpn-server) pré-construite est également disponible. Les utilisateurs avancés peuvent installer sur un [Raspberry Pi](https://www.raspberrypi.com). [[1]](https://elasticbyte.net/posts/setting-up-a-native-cisco-ipsec-vpn-server-using-a-raspberry-pi/) [[2]](https://www.stewright.me/2018/07/create-a-raspberry-pi-vpn-server-using-l2tpipsec/)
> [!WARNING]
> **NE PAS** exécuter ces scripts sur votre PC ou Mac ! Ils doivent être utilisés uniquement sur un serveur !
## Installation
D'abord, mettez à jour votre serveur avec `sudo apt-get update && sudo apt-get dist-upgrade` (Ubuntu/Debian) ou `sudo yum update` et redémarrez. Ceci est facultatif mais recommandé.
Pour installer le VPN, veuillez choisir l'une des options suivantes :
**Option 1 :** Laissez le script générer des identifiants VPN aléatoires pour vous (ils seront affichés une fois terminé).```bash
wget https://get.vpnsetup.net -O vpn.sh && sudo sh vpn.sh
Option 2 : Modifiez le script et fournissez vos propres identifiants VPN.```bash wget https://get.vpnsetup.net -O vpn.sh nano -w vpn.sh [Replace with your own values: YOUR_IPSEC_PSK, YOUR_USERNAME and YOUR_PASSWORD] sudo sh vpn.sh
> [!NOTE]
> Une PSK IPsec sécurisée devrait être composée d'au moins 20 caractères aléatoires.
**Option 3:** Définissez vos identifiants VPN comme variables d'environnement.```bash
# All values MUST be placed inside 'single quotes'
# DO NOT use these special characters within values: \ " '
wget https://get.vpnsetup.net -O vpn.sh
sudo VPN_IPSEC_PSK='your_ipsec_pre_shared_key' \
VPN_USER='your_vpn_username' \
VPN_PASSWORD='your_vpn_password' \
sh vpn.sh
[!TIP] Optionnellement, installez WireGuard, OpenVPN et/ou Headscale sur le même serveur. Si votre serveur exécute CentOS Stream, Rocky Linux ou AlmaLinux, installez d'abord OpenVPN/WireGuard, puis installez le VPN IPsec.
Vous pouvez également utiliser curl pour télécharger. Par exemple :```bash
curl -fL https://get.vpnsetup.net -o vpn.sh
sudo sh vpn.sh
URLs de configuration alternative:```bash
https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/vpnsetup.sh
https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/vpnsetup.sh
Si vous ne pouvez pas télécharger, ouvrez vpnsetup.sh, puis cliquez sur le bouton Raw à droite. Appuyez sur Ctrl/Cmd+A pour tout sélectionner, Ctrl/Cmd+C pour copier, puis collez dans votre éditeur préféré.
Il est généralement recommandé d'utiliser la dernière Libreswan version 5, qui est la version par défaut de ce projet. Cependant, si vous souhaitez installer l'ancienne version 4 de Libreswan :```bash wget https://get.vpnsetup.net -O vpn.sh sudo VPN_SWAN_VER=4.15 sh vpn.sh
**Remarque :** Si Libreswan version 5 est déjà installé, vous devrez peut-être d’abord [Désinstaller le VPN](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/uninstall.md) avant d’installer Libreswan version 4. Sinon, téléchargez le [script de mise à jour](#upgrade-libreswan), modifiez-le pour spécifier `SWAN_VER=4.15`, puis exécutez le script.
</details>
## Personnaliser les options VPN
### Utiliser des serveurs DNS alternatifs
Par défaut, les clients sont configurés pour utiliser [Google Public DNS](https://developers.google.com/speed/public-dns/) lorsque le VPN est actif. Lors de l'installation du VPN, vous pouvez éventuellement spécifier un ou plusieurs serveurs DNS personnalisés pour tous les modes VPN. Exemple :```bash
sudo VPN_DNS_SRV1=1.1.1.1 VPN_DNS_SRV2=1.0.0.1 sh vpn.sh
Use VPN_DNS_SRV1 pour spécifier le serveur DNS principal, et VPN_DNS_SRV2 pour spécifier le serveur DNS secondaire (facultatif).
Voici une liste de quelques fournisseurs DNS publics populaires pour référence.
| Provider | Primary DNS | Secondary DNS | Notes |
|---|
| Google Public DNS | 8.8.8.8 | 8.8.4.4 | Par défaut dans ce projet |
| Cloudflare | 1.1.1.1 | 1.0.0.1 | Voir aussi : Cloudflare pour les familles |
| Quad9 | 9.9.9.9 | 149.112.112.112 | Bloque les domaines malveillants |
| OpenDNS | 208.67.222.222 | 208.67.220.220 | Bloque les domaines de phishing, configurable. |
| CleanBrowsing | 185.228.168.9 | 185.228.169.9 | Filtres de domaine disponibles |
| NextDNS | Varie | Varie | Blocage des publicités, offre gratuite disponible. En savoir plus. |
| Control D | Varie | Varie | Blocage des publicités, configurable. En savoir plus. |
Si vous devez changer les serveurs DNS après la configuration VPN, consultez Utilisation avancée.
[!NOTE] Si IKEv2 est déjà configuré sur le serveur, les variables ci-dessus n'ont aucun effet pour le mode IKEv2. Dans ce cas, pour personnaliser les options IKEv2 telles que les serveurs DNS, vous pouvez d'abord supprimer IKEv2, puis le configurer à nouveau en utilisant
sudo ikev2.sh.
Lors de l'installation du VPN, les utilisateurs avancés peuvent éventuellement personnaliser les options IKEv2.
Lors de l'installation du VPN, vous pouvez ignorer IKEv2 et installer uniquement les modes IPsec/L2TP et IPsec/XAuth ("Cisco IPsec") :```bash sudo VPN_SKIP_IKEV2=yes sh vpn.sh
(Optionnel) Si vous souhaitez spécifier un ou plusieurs serveurs DNS personnalisés pour les clients VPN, définissez `VPN_DNS_SRV1` et éventuellement `VPN_DNS_SRV2`. Voir [Utiliser des serveurs DNS alternatifs](#use-alternative-dns-servers) pour plus de détails.
Après cela, exécutez le script d'aide IKEv2 pour configurer IKEv2 de manière interactive avec des options personnalisées :```bash
sudo ikev2.sh
Vous pouvez personnaliser les options suivantes : le nom DNS du serveur VPN, le nom et la période de validité du premier client, le serveur DNS pour les clients VPN et la possibilité de protéger par mot de passe les fichiers de configuration des clients.
Note : La variable VPN_SKIP_IKEV2 n'a aucun effet si IKEv2 est déjà configuré sur le serveur. Dans ce cas, pour personnaliser les options IKEv2, vous pouvez d'abord supprimer IKEv2, puis le configurer à nouveau en utilisant sudo ikev2.sh.
Lors de l'installation du VPN, vous pouvez éventuellement spécifier un nom DNS pour l'adresse du serveur IKEv2. Le nom DNS doit être un nom de domaine complet (FQDN). Exemple :```bash sudo VPN_DNS_NAME='vpn.example.com' sh vpn.sh
De même, vous pouvez spécifier un nom pour le premier client IKEv2. La valeur par défaut est `vpnclient` si non spécifié.```bash
sudo VPN_CLIENT_NAME='your_client_name' sh vpn.sh
Par défaut, les clients sont configurés pour utiliser Google Public DNS lorsque le VPN est actif. Vous pouvez spécifier des serveurs DNS personnalisés pour tous les modes VPN. Exemple:```bash sudo VPN_DNS_SRV1=1.1.1.1 VPN_DNS_SRV2=1.0.0.1 sh vpn.sh
Par défaut, aucun mot de passe n'est requis lors de l'importation de la configuration client IKEv2. Vous pouvez choisir de protéger les fichiers de configuration client à l'aide d'un mot de passe aléatoire.```bash
sudo VPN_PROTECT_CONFIG=yes sh vpn.sh
| Paramètre IKEv1* | Valeur par défaut | Personnalisation (variable d'environnement)** |
|---|---|---|
| Adresse du serveur (nom DNS) | - | Non, mais vous pouvez vous connecter avec un nom DNS |
| Adresse du serveur (IP publique) | Détection automatique | VPN_PUBLIC_IP |
| Clé pré-partagée IPsec | Génération automatique | VPN_IPSEC_PSK |
| Nom d'utilisateur VPN | vpnuser | VPN_USER |
| Mot de passe VPN | Génération automatique | VPN_PASSWORD |
| Serveurs DNS pour les clients | Google Public DNS | VPN_DNS_SRV1, VPN_DNS_SRV2 |
| Ignorer la configuration IKEv2 | non | VPN_SKIP_IKEV2=yes |
* Ces paramètres IKEv1 sont pour les modes IPsec/L2TP et IPsec/XAuth ("Cisco IPsec").
** Définissez ces variables d'environnement lors de l'exécution de vpn(setup).sh.
* Ces paramètres IKEv2 sont pour le mode IKEv2.
** Définissez ces variables d'environnement lors de l'exécution de vpn(setup).sh, ou lors de la configuration IKEv2 en mode automatique (sudo ikev2.sh --auto).
*** Peut être personnalisé lors de la configuration interactive IKEv2 (sudo ikev2.sh). Reportez-vous à l'option 1 ci-dessus.
**** Utilisez VPN_CLIENT_VALIDITY pour spécifier la période de validité du certificat client en mois. Doit être un entier entre 1 et 120.
En plus de ces paramètres, les utilisateurs avancés peuvent également personnaliser les sous-réseaux VPN lors de l'installation du VPN.
Configurez votre ordinateur ou appareil pour utiliser le VPN. Veuillez vous référer à :
Lisez 📖 VPN book pour accéder à du contenu supplémentaire.
Profitez de votre propre VPN ! ✨🎉🚀✨
Utilisateurs Windows : Pour le mode IPsec/L2TP, une modification unique du registre est nécessaire si le serveur ou le client VPN est derrière un NAT (ex. routeur domestique).
Le même compte VPN peut être utilisé par plusieurs de vos appareils. Cependant, en raison d'une limitation IPsec/L2TP, si vous souhaitez connecter plusieurs appareils depuis le même NAT (ex. routeur domestique), vous devez utiliser le mode IKEv2 ou IPsec/XAuth. Pour afficher ou mettre à jour les comptes utilisateurs VPN, consultez Gérer les utilisateurs VPN.
Pour les serveurs avec un pare-feu externe (ex. EC2/GCE), ouvrez les ports UDP 500 et 4500 pour le VPN. Utilisateurs Aliyun, voir #433.
Les clients sont configurés pour utiliser Google Public DNS lorsque le VPN est actif. Si un autre fournisseur DNS est préféré, consultez Utilisation avancée.
L'utilisation du support du noyau peut améliorer les performances IPsec/L2TP. Il est disponible sur tous les OS supportés. Les utilisateurs d'Ubuntu doivent installer le paquet linux-modules-extra-$(uname -r) et exécuter service xl2tpd restart.
Les scripts sauvegarderont les fichiers de configuration existants avant d'apporter des modifications, avec le suffixe .old-date-time.
Utilisez cette ligne de commande pour mettre à jour Libreswan (changelog | annonces) sur votre serveur VPN.
wget -O /tmp/libreswan.sh https://raw.githubusercontent.com/hwdsl2/setup-ipsec-vpn/master/extras/libreswan-update.sh && /bin/bash /tmp/libreswan.sh
``````bash
wget https://get.vpnsetup.net/upg -O vpnup.sh && sudo sh vpnup.sh
Vous pouvez également utiliser curl pour télécharger :```bash
curl -fsSL https://get.vpnsetup.net/upg -o vpnup.sh && sudo sh vpnup.sh
URLs de mise à jour alternatives:```bash
https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/extras/vpnupgrade.sh
https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/extras/vpnupgrade.sh
Si vous ne parvenez pas à télécharger, ouvrez vpnupgrade.sh, puis cliquez sur le bouton Raw à droite. Appuyez sur Ctrl/Cmd+A pour tout sélectionner, Ctrl/Cmd+C pour copier, puis collez dans votre éditeur préféré.
La dernière version prise en charge de Libreswan est 5.3.1. Vérifiez la version installée : ipsec --version.
Note : xl2tpd peut être mis à jour via le gestionnaire de paquets de votre système, comme apt-get sur Ubuntu/Debian.
Voir Utilisation avancée.
Pour désinstaller le VPN IPsec, exécutez le script d'assistance :
[!CAUTION] Ce script d'assistance supprimera le VPN IPsec de votre serveur. Toute la configuration VPN sera définitivement supprimée, et Libreswan et xl2tpd seront supprimés. Cela ne peut pas être annulé !```bash wget https://get.vpnsetup.net/unst -O unst.sh && sudo bash unst.sh
<details>
<summary>
Cliquez ici si vous ne parvenez pas à télécharger.
</summary>
Vous pouvez également utiliser `curl` pour télécharger :```bash
curl -fsSL https://get.vpnsetup.net/unst -o unst.sh && sudo bash unst.sh
URLs de scripts alternatifs :```bash https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/extras/vpnuninstall.sh https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/extras/vpnuninstall.sh
</details>
Pour plus d'informations, voir [Désinstaller le VPN](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/uninstall.md).
## Commentaires et questions
- Vous avez une suggestion pour ce projet ? Ouvrez une [demande d'amélioration](https://github.com/hwdsl2/setup-ipsec-vpn/issues/new/choose). Les [Pull requests](https://github.com/hwdsl2/setup-ipsec-vpn/pulls) sont également les bienvenues.
- Si vous avez trouvé un bug reproductible, ouvrez un rapport de bug pour le [VPN IPsec](https://github.com/libreswan/libreswan/issues?q=is%3Aissue) ou pour les [scripts VPN](https://github.com/hwdsl2/setup-ipsec-vpn/issues/new/choose).
- Une question ? Veuillez d'abord rechercher les [issues existantes](https://github.com/hwdsl2/setup-ipsec-vpn/issues?q=is%3Aissue) et les commentaires [dans ce Gist](https://gist.github.com/hwdsl2/9030462#comments) et [sur mon blog](https://blog.ls20.com/ipsec-l2tp-vpn-auto-setup-for-ubuntu-12-04-on-amazon-ec2/#disqus_thread).
- Posez des questions relatives au VPN sur la liste de diffusion [Libreswan](https://lists.libreswan.org) ou [strongSwan](https://lists.strongswan.org), ou lisez ces wikis : [[1]](https://libreswan.org/wiki/Main_Page) [[2]](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/sec-securing_virtual_private_networks) [[3]](https://wiki.strongswan.org/projects/strongswan/wiki/UserDocumentation) [[4]](https://wiki.gentoo.org/wiki/IPsec_L2TP_VPN_server) [[5]](https://wiki.archlinux.org/index.php/Openswan_L2TP/IPsec_VPN_client_setup).
## Licence
Copyright (C) 2014-2026 [Lin Song](https://github.com/hwdsl2) [](https://www.linkedin.com/in/linsongui)
Basé sur [le travail de Thomas Sarlandie](https://github.com/sarfata/voodooprivacy) (Copyright 2012)
[](http://creativecommons.org/licenses/by-sa/3.0/)
Ce travail est sous licence [Creative Commons Attribution - Partage dans les Mêmes Conditions 3.0 non transposé](http://creativecommons.org/licenses/by-sa/3.0/)
Attribution requise : veuillez inclure mon nom dans toute œuvre dérivée et faites-moi savoir comment vous l'avez améliorée !
| Paramètre IKEv2* | Valeur par défaut | Personnalisation (variable d'environnement)** | Personnalisation (interactif)*** |
|---|
| Adresse du serveur (nom DNS) | - | VPN_DNS_NAME | ✅ |
| Adresse du serveur (IP publique) | Détection automatique | VPN_PUBLIC_IP | ✅ |
| Nom du premier client | vpnclient | VPN_CLIENT_NAME | ✅ |
| Serveurs DNS pour les clients | Google Public DNS | VPN_DNS_SRV1, VPN_DNS_SRV2 | ✅ |
| Protéger les fichiers de configuration client | non | VPN_PROTECT_CONFIG=yes | ✅ |
| Activer/Désactiver MOBIKE | Activer si supporté | ❌ | ✅ |
| Validité du certificat client | 10 ans (120 mois) | VPN_CLIENT_VALIDITY**** | ✅ |
| Validité du certificat CA et serveur | 10 ans (120 mois) | ❌ | ❌ |
| Nom du certificat CA | IKEv2 VPN CA | ❌ | ❌ |
| Taille de la clé du certificat | 3072 bits | ❌ | ❌ |