Name : BETA-TESTERS
Project name : ZW3B-API-BETA-TESTERS
Authorized. - 200 - Client API Name and Origin Wildcard OK
Comment faire pour configurer un serveur VPN par les protocoles IPSec et XL2TP
Cette documentation est obsolète -> je vous redirige vers cette solution : PostQuantum StrongSwan v6.x - doc
Je vais décrire comment configurer un serveur VPN par les protocoles IPSec et XL2TP.
IPSec
Il faut installer un xSecureWAN ;) il y quelques temps çà s'appellait FreeSWAN puis OpenSWAN ;)
De nôs jours c'est :strongSWAN
!
Script avec 1 ligne
001aptitude install strongswan xl2tpd
IPSec
Nous allons configurer IPSec : vim /etc/ipsec.conf
.
Script avec 82 lignes
001version 2.0 002config setup 003 charondebug=all 004 uniqueids=no 005 006conn %default 007 rekeymargin=3m 008 keyingtries=3 009 keyexchange=ikev2 010 mobike=no 011 forceencaps=yes 012 fragmentation=yes 013# eap_identity=%any 014 # phase 1 015# ike=aes128-sha1-modp2048 016 ike=aes256gcm16-sha512-modp2048,aes256gcm16-sha512-modp3072,aes256gcm16-sha512-modp4096,aes256gcm16-sha512-modp8192,aes128-sha1-modp1024,aes128-sha1-modp2048,aes128-sha1-modp3072,aes128-sha1-modp4096,aes128-sha1-modp8192 017 ikelifetime=36000 018 # phase 2 019# esp=aes256gcm16-sha512-modp8192 020# esp=aes128-sha1-modp2048 021# esp=aes256gcm16-sha512-modp2048 022 esp=aes128-sha1-modp2048 023 lifetime=10800 024 keylife=10800 025 authby=psk 026 installpolicy=yes 027# ike=aes-aes256-sha-modp1024,aes256-sha512-modp4096! 028# esp=aes-aes256-sha-modp1024,aes256-sha512-modp4096! 029 030# Pour les connexions de client IPSec sur ce server 031conn L2TP-PSK-NAT 032 rightsubnet=vhost:%priv 033 also=L2TP-PSK-noNAT 034 035conn L2TP-PSK-noNAT 036 authby=secret 037 pfs=no 038 auto=add 039 keyingtries=3 040 rekey=no 041 keylife=24h 042 ikelifetime=6h 043 type=transport 044 left=%defaultroute 045 leftid=@sovh.lab3w.fr 046 leftprotoport=17/1701 047 right=%any 048 rightprotoport=17/%any 049 forceencaps=yes 050 dpddelay=40 051 dpdtimeout=130 052 dpdaction=clear 053 054# Pour une connexion du client IPSec nice sur ce server 055conn nice-vpn 056 authby=secret 057 type=transport 058 left=%default 059 leftid=@sovh.lab3w.fr 060 # site 1 061 right=IP_DU_SERVER_CLIENT 062 rightid=@snice.lab3w.fr 063 auto=add 064 dpdaction=restart 065 mark=30 066 067# Pour la connexion cliente sur le serveur GCLOUD ;) 068conn gcloud-vpn1 069 authby=secret 070 type=tunnel 071 left=158.69.126.137 072 leftid=158.69.126.137 073 leftauth=psk 074 leftsubnet=10.101.0.0/24,10.101.150.0/24 075 # google cloud 076 right=34.95.21.246 077 rightid=34.95.21.246 078 rightauth=psk 079 rightsubnet=10.162.0.0/20 080 auto=add 081 dpdaction=restart 082 mark=30
Vous vous apercevez que l'on utilise une passphrase authby=secret
, on pourait utiliser des certificats.
Puis on ajoute la passphrase dans /etc/ipsec.secrets
- par exemple :
Script avec 4 lignes
001@sovh.lab3w.fr %any : PSK "ma clef a pre-partager" 002@sovh.lab3w.fr @snice.lab3w.fr : PSK "a clef a pre-partager-nice" 00334.95.21.246 : PSK "ma_super_clef_gcloud" 004
Infos : Pour la connexion au serveur GCLOUD (pour mémoire) - j'arrive bien à me connecter et à rester connecté dessus (visible depuis l'interface gcloud ) ... mais sans trouver/comprendre comment faire pour accéder à ma machine elle-même ou à des services / IP - Ma période d'essai gratuit est terminée :/
XL2TP
Nous allons configurer XL2TP : vim /etc/xl2tpd/xl2tpd.conf
.
Script avec 33 lignes
001[global] 002;auth file = /etc/xl2tpd/xl2tpd-secrets 003ipsec saref = yes 004;saref refinfo = 30 005;listen-addr = 0.0.0.0 006;port = 1701 007; utilse pour la conf par default(a sup si radius) 008access control = no 009rand source = dev 010; 011;debug avp = yes 012;debug network = yes 013;debug packet = no 014;debug state = yes 015;debug tunnel = yes 016; 017[lns default] 018;exclusive = no 019ip range = 172.16.5.101-172.16.5.154 020;assign ip = yes 021local ip = 172.16.5.254 022name = sovh 023hostname = sovh.lab3w.fr 024; Regles d'authentification 025require chap = yes 026refuse pap = yes 027require authentication = yes 028unix authentication = no 029ppp debug = yes 030; Fichier de configuration de PPP 031pppoptfile = /etc/ppp/options.net.l2tpd 032length bit = yes 033;challenge = yes
PPP
Nous allons configurer PPP : vim /etc/ppp/options.net.l2tpd
.
Script avec 47 lignes
001# Do not support BSD compression. 002nobsdcomp 003passive 004lock 005 006# Allow all usernames to connect. 007name * 008#name net 009proxyarp 010#ipcp-accept-local 011#ipcp-accept-remote 012#lcp-echo-failure 10 013lcp-echo-interval 30 014nodeflate 015noccp 016 017# Do not authenticate incoming connections. This is handled by IPsec. 018#noauth 019#refuse-chap 020#refuse-mschap 021#refuse-mschap-v2 022 023# Authentification 024auth 025#noipdefault 026require-chap 027#require-mppe-128 028+mschap-v2 029+mschap 030require-mschap 031require-mschap-v2 032hide-password 033modem 034asyncmap 0 035crtscts 036#silent 037 038# DNS servers the PPP clients will use. 039#ms-dns 172.16.5.252 040ms-dns 8.4.8.4 041 042mtu 1400 043mru 1400 044 045# Options 046#defaultroute 047#nodefaultroute
On édite : vim /etc/ppp/chap-secrets
.
Script avec 11 lignes
001# machine avec IP fixe 002pc_1.zw3b.vpn * mot2passe4pc_1 172.16.5.10 003172.16.5.10 pc_1.zw3b.vpn mot2passe4pc_1 * 004 005# user avec IP fixe 006user_1.domaine.tld * mot2passe4user_1 172.16.5.20 007172.16.5.20 user_1.domaine.tld mot2passe4user_1 * 008 009# user avec IP aléatoire (comprise dans le ip range) 010user_2.domaine.tld * mot2passe4user_2 * 011* user_2.domaine.tld mot2passe4user_2 *
Puis vérifier bien que le fichier est lisible que pour l'utilisateur root par la commande ls -l /etc/ppp/chap-secrets
qui doit vous retourner les droits -rw-------
Ici simplement on démarre /etc/init.d/ipsec start
et /etc/init.d/xl2tpd start
et on attend les connexions VPN des clients.
Script avec 47 lignes
001#!/bin/bash 002 003#####---------------------------- INFORMATIONS --------------------------------##### 004# 005# Name : vpn-net-server.sh 006# Desc : Script de lancement du serveur VPN : IPSEC+XL2TP 007# Auteur : Olivier Romain JAILLET-RAMEY alias Kss* 008# Mail : orj AT lab3w DOT fr 009# Date : 2014-05-05 010# 011#####---------------------------- INFORMATIONS --------------------------------##### 012 013#####-----------------------------------------###### 014 015function ipsec_l2tp() 016{ 017 /etc/init.d/ipsec 018 /etc/init.d/xl2tpd 019} 020 021#####-----------------------------------------###### 022 023 024#####-----------------------------------------###### 025case "$1" in 026 027start|restart) 028$0 stop 029echo "$0 Starting" 030 ipsec_l2tp start 031 echo "VPN ZW3B CONNECTION UP" 032;; 033 034stop) 035echo "$0 Stop" 036 037 ipsec_l2tp stop 038 echo "VPN ZW3B CONNECTION DOWN" 039;; 040 041*) 042echo "usage : $0 (start|stop|restart)" 043;; 044 045esac 046#####-----------------------------------------###### 047
Votre serveur VPN IPSec par XL2TP est configuré.
Il faut que vous configurez un client VPN pour essayer si la connexion fonctionne - pourquoi pas ajouter aussi le script de re-connexion automatique au serveur