Aller au contenu

Exemples de configuration OpenVPN

GNU/Linux (Network Manager)

Il est possible de configurer graphiquement le VPN via Network Manager. (J’utilise la version KDE, des détails peuvent varier si vous utilisez la version gtk)

Téléchargez le fichier vpn-illyse.crt.

Installez le backend openvpn pour Network Manager, puis créez une nouvelle connexion de type OpenVPN. Complétez comme suit, indiquez le chemin du fichier crt, votre login et votre mot de passe VPN :

Capture d'écran de la configuration

Il faut éviter de mettre le fichier crt dans un répertoire contenant un espace (suivant les versions, cela peut poser problème)

Cliquez sur « Avancé », mettez 1300 dans « Taille du fragment UDP » et cochez « Restreindre la taille maximale du segment TCP (MSS) »

Capture d'écran de la configuration

En cas de problème, regardez dans les logs (/var/log/syslog, au moins avec Ubuntu).

Mac OS X

Installer le client OpenVPN Tunnelblick.

  • Créer un fichier illyse.ovpn avec la configuration voulue. Celle indiquée ci-dessous fonctionne sans modification necessaire.
  • Double-cliquer sur le fichier afin que TunnelBlick import la configuration.
  • À la première connexion, il va demander un couple login/password qu'il sera possible de stocker dans le trousseau Mac OS X.

Paramètres modifiés par rapport à la configuration pour Linux :

  • log-append : Ce paramètre n'est pas accepté. Mais tunnelblick log déjà en interne.
  • auth-user-pass : On ne précise pas de fichier de credential, c'est géré par Tunnelblick et Keychains au moment de la connexion
  • Les commentaires ont été retirés car le fichier est tronqué au moment de l'import s'il est trop long (ce qui était le cas)

illyse.ovpn :

client
dev tun0
proto udp
mssfix 1300
fragment 1300
explicit-exit-notify
remote vpn.illyse.net 1194
#http-proxy 192.0.2.1 8080
route-delay 2
nobind

persist-key
persist-tun

redirect-gateway def1
#route 80.67.160.0 255.255.224.0

tun-ipv6
route-ipv6 ::/1
route-ipv6 8000::/1

auth-user-pass
verb 3

remote-cert-tls server
<ca>
-----BEGIN CERTIFICATE-----
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
sjvtdavgLFaMPLPrI2DAcjpVMUuL1VgdqUcQkhc=
-----END CERTIFICATE-----
</ca>

Android

Configuration OpenVPN pour Android (testé sous Android 7.0 et OpenVPN for Android 0.7.5)

Ci-après un fichier de configuration qui devrait fonctionner avec l'application Android "OpenVPN for Android", disponible sur F-Droid. Il est également possible de récupérer l'application sur le PlayStore.

Posez le fichier de configuration, renommé en VPN-Illyse.ovpn par exemple, sur l'appareil.

Une fois l'application installée et démarrée, cliquez sur le dossier en bas à droite et cherchez le fichier de configuration. Il suffit ensuite de renseigner les identifiants.

#
# Fichier de configuration VPN Illyse pour Android
# 2018-09-02
#
client
dev tun0
proto udp
mssfix 1300
fragment 1300
explicit-exit-notify

remote vpn.illyse.net 1194
route-delay 2
nobind

persist-key
redirect-gateway def1

tun-ipv6
route-ipv6 ::/1
route-ipv6 8000::/1

auth-user-pass
auth-retry nointeract
remote-cert-tls server
<ca>
-----BEGIN CERTIFICATE-----
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
sjvtdavgLFaMPLPrI2DAcjpVMUuL1VgdqUcQkhc=
-----END CERTIFICATE-----
</ca>

Yunohost

Installer le client VPN

  • Dans Applications > Install, en bas de la page, entrer https://github.com/labriqueinternet/vpnclient_ynh dans le champ Install custom app.
  • Lire et valider l'avertissement.
  • Valider l'installation en cliquant sur le bouton Install.

Configurer le client VPN

Méthode automatique, ".cube"

Le .cube est un fichier permettant de configurer l'application vpn-client. Il faut créer son .cube à la main, en utilisant la base suivante :

  • télécharger le .cube de base: illyse.cube.
  • l'éditer avec n'importe quel éditeur de texte (notepad, gedit, nano, vim, etc) afin de remplacer les 4 champs vous concernant: ip6_net, ip4_addr, login_user, login_passphrase. Ces infos sont à retrouver dans Coin (cf. ici).
  • importer le .cube dans l'application vpn_client (onglet "Automatic" dans la configuration de l'application).

Méthode manuelle

La méthode .cube décrite ci-dessus est vivement conseillée, car elle permet de simplifier la procédure et d'éviter les erreurs. La méthode manuelle est donnée uniquement à titre informatif.

Dans Applications > VPN Client, cliquer sur l'URL https://maBrique.nohost.me/vpnadmin

  • Server Address : vpn.illyse.net
  • Server Port : 1194
  • Protocol : UDP
  • Advanced : copier coller la configuration suivante:
remote <TPL:SERVER_NAME>
proto <TPL:PROTO>
port <TPL:SERVER_PORT>

pull
nobind
dev tun
tun-ipv6
keepalive 10 30
resolv-retry infinite

mssfix 1300

route-delay 2
nobind
persist-key

# Authentication by login
<TPL:LOGIN_COMMENT>auth-user-pass /etc/openvpn/keys/credentials

# UDP only
<TPL:UDP_COMMENT>explicit-exit-notify
<TPL:UDP_COMMENT>fragment 1300

# TLS
tls-client
<TPL:TA_COMMENT>tls-auth /etc/openvpn/keys/user_ta.key 1
remote-cert-tls server
ns-cert-type server
ca /etc/openvpn/keys/ca-server.crt
<TPL:CERT_COMMENT>cert /etc/openvpn/keys/user.crt
<TPL:CERT_COMMENT>key /etc/openvpn/keys/user.key

# Logs
verb 3
mute 5
status /var/log/openvpn-client.status
log-append /var/log/openvpn-illyse.log

# Routing
route-ipv6 2000::/3
redirect-gateway def1
  • Server CA : Téléchargez le fichier vpn-illyse.crt et le téléverser.
  • Username : pdupond-vpn1 (à retrouver dans Coin.
  • Password : idem
  • First resolver : 80.67.169.12
  • 2nd resolver : 2001:913::8

L'ensemble des autres champs est à laisser sur la valeur par défaut.

pfsense

La configuration OpenVPN pour pfsense fonctionne parfaitement. Elle a été testée sous pfsense 2.4.2.

Voici comment effectuer cette configuration étape par étape :

installation de l'autorité de certification Illyse.

  • Naviguez dans le menu « system / Certificates Manager / CAs »
  • cliquez sur « add » puis remplissez les champs comme il suit :

  • Descriptive Name : illyse

  • Method : Import an existing Certificate Auhtority
  • Certificate Data : copiez/collez la CA d'illyse
-----BEGIN CERTIFICATE-----
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
sjvtdavgLFaMPLPrI2DAcjpVMUuL1VgdqUcQkhc=
-----END CERTIFICATE-----

Puis sauvez.

Installation de la configuration VPN

  • naviguez dans le menu « VPN / OpenVPN / Client »

cliquez sur « add » puis remplissez les champs comme il suit :

(NB : les champs non mentionnés dans cette documentation sont laissé à vide et/ou à leur valeur par défaut.)

  • Server mode : Peer to Peer SSL/TLS
  • Protocol : UDP IPv4 and IPv6 on all interfaces (multihome)
  • device mode : tun layer3 tunnel mode
  • interface : LAN
  • server host or address : 89.234.140.3
  • Description : illyse

  • Username : votre login fournit par illyse. exemple : johndoe-vpn1.

  • password : le mot de passe que vous avez créé vous même sur coin.

  • Peer certificate auhtority : illyse

  • client certificate : None (Username and/or password required)
  • Encryption algorithm : BF-CBC (128 bit ley by default, 64 bit block)
  • Enable NCP : coché
  • NCP algorithm : sélectionnez AES-256-GCM et AES-128-GCM
  • Auth digest algorithm : SHA1 (160-bit)

  • Compression : Omit preference, + Disable apaptative LZO Compression [legacy style, comp-no]

  • Topology : Subnet - One IP address per client in a common subnet

Custom options : copiez collez ceci :

redirect-gateway def1;fragment 1300;mssfix 1300

cliquez sur "save"

Autorisez votre réseau local à sortir par illyse.

Le VPN devrait monter tout seul. Toutefois, il faut encore configurer pfsense pour autoriser vos machines du LAN à sortir par le tunnel. Pour cela, allez dans Firewall / NAT / Outbound

  • outbound NAT mode : "Hybrid Outbound NAT rule generation. (Automatic Outbound NAT + rules below)"

cliquez sur « save ».

Toujours dans ce menu, dans "mapping", cliquez sur "add" :

interface : ovpnc1-illyse (il s'agit de l'interface réseau virtuelle qui porte votre tunnel VPN) protocol : any source : network (remplissez le champs réseau avec l'IP de votre réseau local. exemple : 192.168.0.0/24) destination : any translation : interface address description : autoriser le LAN à sortir par Illyse

cliquez sur « save ».

Autres exemples de configurations avancées

Client sans IP montée sur le tunnel

Pour ceux qui veulent bricoler, il est possible (via l'interface web abonné) ne pas monter du tout d'IP (v4 ou v6) sur l'interface tun du client. Dans ce cas, les paquets destinés aux ranges v4 et v6 de l'abonné sont toujours routés correctement vers le client, mais il appartient à l'abonné de s'assurer qu'ils seront correctement routés plus avant sur son réseau interne. Ça peut être utile si on ne veut pas utiliser l'IPv4 publique Illyse directement sur le routeur qui monte le VPN, mais sur une autre machine du réseau local.

Attention, si il n'y a pas d'IPv4 installée sur l'interface tun, OpenVPN est très bête et n'arrivera pas à installer la route par défaut par le VPN... OpenVPN essaie d'ajouter des routes avec 89.234.140.129 comme gateway, mais il ne sait pas joindre cette IP. Pour résoudre la stupidité d'OpenVPN^W^W^W ce problème, on utilise un script qui rajoute la route :

/etc/openvpn/illyse.conf

...
route-delay 2
redirect-gateway def1

script-security 2
up illyse-up.sh
...

/etc/openvpn/illyse-up.sh

#!/bin/sh
tun_dev="$1"
ip link set "$tun_dev" up
ip route add "$route_vpn_gateway" dev "$tun_dev"
exit 0

Utiliser simultanément la connexion normale et le VPN, sortie par défaut par la connexion normale

Lorsqu'on a un serveur, on peut avoir envie d'être joignable à la fois via la connexion normale (e.g. Free) et via le VPN. Pour se faire, on utilise le policy routing du noyau Linux : quand quelqu'un nous parle sur l'IP normale, on lui répond via la connexion normale, et quand quelqu'un nous parle sur l'IP du VPN, on répond via le VPN. Notons que ça ne concerne que les connexions entrantes (donc principalement utile pour un serveur).

Pour les connexions sortantes, on a le choix : soit on passe dans le VPN, soit on passe par la connexion normale. La configuration ci-dessous fait passer les connexions sortantes par la connexion normale (parce que c'est plus simple).

Note : il faut s'assurer de bien avoir configuré une IPv4 et une IPv6 sur l'interface tun (sur coin). Sinon, les scripts ne feront rien.

Bonus : si vous avez un noyau Multipath-TCP, cette configuration permettra d'utiliser les deux connexions en parallèle ! Pratique pour joindre Youtube si on est chez Free, par exemple :) (la configuration ci-dessous est similaire à http://multipath-tcp.org/pmwiki.php/Users/ConfigureRouting)

/etc/openvpn/up.sh

#!/bin/bash

dev="$1"
tun_mtu="$2"
link_mtu="$3"
local_ip="$4"
remote_ip="$5"

# Routing table to use
table=4242

# Source-specific routing: use the normal default route by default,
# but use the VPN for replying to packets coming from the VPN.
# IPv4
[ -n "$local_ip" ] && ip rule add from "$local_ip" table "$table" && ip route add default dev "$dev" table "$table"
# IPv6
[ -n "$ifconfig_ipv6_local" ] && ip -6 rule add from "$ifconfig_ipv6_local" table "$table" && ip -6 route add default dev "$dev" table "$table"

/etc/openvpn/down.sh

#!/bin/bash

dev="$1"
tun_mtu="$2"
link_mtu="$3"
local_ip="$4"
remote_ip="$5"

table=4242

# Delete table for source-specific routing.
[ -n "$local_ip" ] && ip rule del from "$local_ip" && ip route del default table "$table"
[ -n "$ifconfig_ipv6_local" ] && ip -6 rule del from "$ifconfig_ipv6_local" && ip -6 route del default table "$table"

exit 0

/etc/openvpn/illyse.conf

## Configuration VPN Illyse pour accepter des connexions entrantes
## à la fois via le VPN et via la connexion normale, grâce au policy routing (Linux uniquement)
## https://www.illyse.org/projects/publicdocs/wiki/Vpn_doc_user#Utiliser-simultanément-la-connexion-normale-et-le-VPN

# Gestion des routes via des scripts externes.
script-security 2
up up.sh
down down.sh


# Reste de la configuration normale.
# Penser à enlever "redirect-gateway" et "route-ipv6", on gère les
# routes via up.sh et down.sh
client
remote vpn.illyse.net 1194
#http-proxy 192.0.2.1 8080
dev tun0

#proto udp6
proto udp
#proto tcp
explicit-exit-notify

mssfix 1300
fragment 1300

route-delay 2
nobind
persist-key
persist-tun

tun-ipv6

auth-user-pass credentials

verb 3
log-append /var/log/openvpn-illyse.log

# Certificat permettant de vérifier que c'est bien à Illyse que
# l'on se connecte et donc à qui on donne notre mot de passe.
remote-cert-tls server
<ca>
-----BEGIN CERTIFICATE-----
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
sjvtdavgLFaMPLPrI2DAcjpVMUuL1VgdqUcQkhc=
-----END CERTIFICATE-----
</ca>

Utiliser simultanément la connexion normale et le VPN, sortie par défaut via le VPN

Dans la configuration précédente, les deux IPs, FAI et VPN, sont accessibles de l'extérieur et répondent correctement. La machine toutefois utilise par défaut la sortie FAI plutôt que le VPN. Le cas décrit ici a son IP FAI obtenue par DHCP, avec la table de routage main, et sans IPv6. Il faut bidouiller les routes pour que si on contacte l'IP du serveur VPN, on passe bien par l'IP FAI et l'interface qui correspond, puis répondre à ce qui vient de l'IP FAI par la table main, et enfin par défaut sortir par le table correspondant au VPN.

  • Étape 1, dans le fichier illyse.conf, il faut ajouter l'option ifconfig-noexec pour éviter qu'openVPN ne monte l'IP du VPN avant qu'on ne gère ça dans le script up.sh.
  • Étape 2, changer les scripts up.sh et down.sh. Actuellement, on n'a pas trouvé de solution propre pour éviter de coder en dur des paramètres dans ce scripts.

/etc/openvpn/up.conf

#!/bin/bash

dev="$1"
isp_dev="eth0"
tun_mtu="$2"
link_mtu="$3"
local_ip="$4"
remote_ip="$5"
isp_ip="WWW.XXX.YYY.ZZZ"
isp_gateway="WWW.XXX.YYY.ZZZ"
vpn_server="89.234.140.3"

# Routing table to use
tableVPN=4242
tableLOC=1337

# IP inconnue de COIN, donc tun0 à monter
ip link set "$dev" up
ip addr add "$local_ip"/32 dev "$dev"

# Source-specific routing: use the normal default route by default,
# but use the VPN for replying to packets coming from the VPN.
# IPv4
if [ -n "local_ip" ]; then
  ip rule add pref 31000 lookup "$tableLOC"
  ip rule add pref 31050 from "$isp_ip" lookup main
  ip rule add pref 31100 lookup "$tableVPN"
  ip route add default dev "$dev" table "$tableVPN"
  ip route add "$vpn_server" via "$isp_gateway" table "$tableLOC" dev "$isp_dev"
fi

# IPv6
[ -n "$ifconfig_ipv6_local" ] && ip -6 addr add "$ifconfig_ipv6_local" dev "$dev" && ip -6 route add default dev "$dev"

exit 0

/etc/openvpn/down.conf

dev="$1"
tun_mtu="$2"
link_mtu="$3"
local_ip="$4"
remote_ip="$5"
isp_ip="WWW.XXX.YYY.ZZZ"
isp_gateway="WWW.XXX.YYY.ZZZ"
vpn_server="89.234.140.3"

# Routing table to use
tableVPN=4242
tableLOC=1337

# Delete table for source-specific routing.
if [ "$local_ip" ]; then
  ip route del "$vpn_server" via "$isp_gateway" table "$tableLOC"
  ip route del default dev "$dev" table "$tableVPN"
  ip rule del pref 31100 lookup "$tableVPN"
  ip rule del pref 31050 from "$isp_ip" lookup main
  ip rule del pref 31000 lookup "$tableLOC"
fi

[ -n "$ifconfig_ipv6_local" ] && ip -6 route del default dev "$dev" && ip -6 addr del "$ifconfig_ipv6_local" dev "$dev"

exit 0

Utiliser simultanément la connexion normale et le VPN, sortie par défaut via le VPN, et faire AP WiFi

On a foutu le bordel dans les routes, ce qui fait que hostapd n'arrive pas à faire tomber le bousin en marche, car il met ses routes dans la table main au lieu de les mettre dans la tableVPN 4242. Du coup, on l'aide (en supposant que le wlan soit en 192.168.2.0/24) :

ip route del 192.168.2.0/24 dev wlan0 table main
ip route add 192.168.2.0/24 dev wlan0 table 4242

Il ne reste plus qu'à activer le NAT sur l'interface tun0 du VPN et paf ! On fait un beau AP WiFi (vilainement naté) qui fournit une connexion Illyse.

Mise à jour automatique de resolv.conf

Pour que resolv.conf soit mis à jour par openvpn avec les IP des resolvers DNS Illyse poussées par le serveur VPN, il faut installer le paquet resolvconf et ajouter au fichier de configuration:

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf