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 :
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) »
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-----
MIIG1zCCBL+gAwIBAgIUAQxspCb+1NLIr+bdR7gqrM1voLQwDQYJKoZIhvcNAQEL
BQAwgZsxCzAJBgNVBAYTAkZSMQwwCgYDVQQIDANSSEExDTALBgNVBAcMBEx5b24x
DzANBgNVBAoMBklMTFlTRTEQMA4GA1UECwwHb3BlbnZwbjEaMBgGA1UEAwwRaWxs
eXNlLW9wZW52cG4tY2ExDzANBgNVBCkMBklMTFlTRTEfMB0GCSqGSIb3DQEJARYQ
YWJ1c2VAaWxseXNlLm9yZzAeFw0yNDAyMjUxNzQ0MjBaFw0zNDAyMjIxNzQ0MjBa
MIGbMQswCQYDVQQGEwJGUjEMMAoGA1UECAwDUkhBMQ0wCwYDVQQHDARMeW9uMQ8w
DQYDVQQKDAZJTExZU0UxEDAOBgNVBAsMB29wZW52cG4xGjAYBgNVBAMMEWlsbHlz
ZS1vcGVudnBuLWNhMQ8wDQYDVQQpDAZJTExZU0UxHzAdBgkqhkiG9w0BCQEWEGFi
dXNlQGlsbHlzZS5vcmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDK
Uoq9UFv3kaH0eQbQMUr4kGK/fcPvzE5ssaRyyyYHH6aI3c0va9f8VUOKKqomeL+Q
cWuDwWm5BuhSNcb/5/dHy4WFa3w9dp3CxbcaF5yhK+CmaJNyxxN2bbI7tFTVlhGw
hzxCvsNYGaOFLmzDdHGU0VdEPzRdE0Gb7fmFkk6d5TEcH+ltSEyYyr6jjP0DQLxF
JKfRv/kent8pxBZyJ0oyB36ES7HbblGoKfsvfrVax2rRrLCo0nj7Nfdkgf5R80DB
fbJbv159mWlljitGdeDfHv/EBblIxcc5pocV20PqFAeIzD9XvcY1gEhBistGimYM
9l7TMTBBGr1d45s/DAuMUu/kY6CuttVe1H/5+T3Dppo6/FB9xD+yngEMjsikMRHk
Zdzb47mk3p2MAZgb3CEYmAZBvSPTkmQVWRlTM9Eton2kXz373ZF1e8fdO3kYOv6x
yY3kGHAgF1bwyqTK6VPxIo1W1q08QzqtZ6HwkILohg+dJGNaNjpHALFGMLVBQ6ZT
b6GjG4V0d1VqlhGp4jCddgUqRhWmSLP9bzd94et2YvsZ7vUG4lp2DYSewMXguENg
YpijChcNdy5bzuVxaadr69Ky4tqyi5PKSZOBL9jUON3RuA0T9ETudPXSMFozMgTT
SXciWyTfKy6LhFxTx3z38QURwAaxNpE02u3ztCxvyQIDAQABo4IBDzCCAQswHQYD
VR0OBBYEFJubjwrxXkCGkGkz4YigLO8EUS6iMIHbBgNVHSMEgdMwgdCAFJubjwrx
XkCGkGkz4YigLO8EUS6ioYGhpIGeMIGbMQswCQYDVQQGEwJGUjEMMAoGA1UECAwD
UkhBMQ0wCwYDVQQHDARMeW9uMQ8wDQYDVQQKDAZJTExZU0UxEDAOBgNVBAsMB29w
ZW52cG4xGjAYBgNVBAMMEWlsbHlzZS1vcGVudnBuLWNhMQ8wDQYDVQQpDAZJTExZ
U0UxHzAdBgkqhkiG9w0BCQEWEGFidXNlQGlsbHlzZS5vcmeCFAEMbKQm/tTSyK/m
3Ue4KqzNb6C0MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIBAH8X6Pj+
Td3dnkI55iJ2xyF6+b0DzCMvNgiebZIBfBPO90ZxDrAg0121DEGyLOgVbNBkpmA0
ocuB7aS4OyGd17gi05oJuQtXwFY342JegU2tLrJPVP7aUjL1WVwTX45q44tA3dlC
OHpml65MPb7Ndn5hVzoPQuEQteEJgBJUh/bKFkeAlH4bsMZxm8qU+ydPm4QM7BHV
BaJciHxFISxgUieyX2ER7RVKZvWyyVSyfuAo/OzZ+qFXbkus6iwjtgIrm5mV99NL
GAs29PsxegpVPuG2tJXSs+xMXFqyup2H1LF5VS9N5qluHCwMcUNREs9/qVf5mG+E
kdyiiRLIn4kmX/7+VgIjcqhP7ZIhY2gIEbj768HCl0QCGN97mO3p72Ws9JqTyazN
MVIBSY72c6GxKYzji49pIuJ8o13/MzUNZN7Dt6kJSTmIwtxSSmpjzu26ibX2DTg8
hkHtYhh7bDEPSd8DX2XTtDNNloKLjS0MMuPu+cZeEk+aGiC1EyCylLth1SRHZZGR
ODOp5rCOtqJtXMtgMvwjXJQezkQ46KiiJVZTKgKoF2eJGjqCGEnbfQxO/nvbi5XR
uBmnNGY6c4vUfv96XFVGI5o0vRkBMhlzaLcAng6Tzet6GBtc7v5s6SFQYutKzc9Q
Rrb85iqtO/GHnXEW0241zmg9e3hHVraMd5/U
-----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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
Rrb85iqtO/GHnXEW0241zmg9e3hHVraMd5/U
-----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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
Rrb85iqtO/GHnXEW0241zmg9e3hHVraMd5/U
-----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-----
MIIG1zCCBL+gAwIBAgIUAQxspCb+1NLIr+bdR7gqrM1voLQwDQYJKoZIhvcNAQEL
BQAwgZsxCzAJBgNVBAYTAkZSMQwwCgYDVQQIDANSSEExDTALBgNVBAcMBEx5b24x
DzANBgNVBAoMBklMTFlTRTEQMA4GA1UECwwHb3BlbnZwbjEaMBgGA1UEAwwRaWxs
eXNlLW9wZW52cG4tY2ExDzANBgNVBCkMBklMTFlTRTEfMB0GCSqGSIb3DQEJARYQ
YWJ1c2VAaWxseXNlLm9yZzAeFw0yNDAyMjUxNzQ0MjBaFw0zNDAyMjIxNzQ0MjBa
MIGbMQswCQYDVQQGEwJGUjEMMAoGA1UECAwDUkhBMQ0wCwYDVQQHDARMeW9uMQ8w
DQYDVQQKDAZJTExZU0UxEDAOBgNVBAsMB29wZW52cG4xGjAYBgNVBAMMEWlsbHlz
ZS1vcGVudnBuLWNhMQ8wDQYDVQQpDAZJTExZU0UxHzAdBgkqhkiG9w0BCQEWEGFi
dXNlQGlsbHlzZS5vcmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDK
Uoq9UFv3kaH0eQbQMUr4kGK/fcPvzE5ssaRyyyYHH6aI3c0va9f8VUOKKqomeL+Q
cWuDwWm5BuhSNcb/5/dHy4WFa3w9dp3CxbcaF5yhK+CmaJNyxxN2bbI7tFTVlhGw
hzxCvsNYGaOFLmzDdHGU0VdEPzRdE0Gb7fmFkk6d5TEcH+ltSEyYyr6jjP0DQLxF
JKfRv/kent8pxBZyJ0oyB36ES7HbblGoKfsvfrVax2rRrLCo0nj7Nfdkgf5R80DB
fbJbv159mWlljitGdeDfHv/EBblIxcc5pocV20PqFAeIzD9XvcY1gEhBistGimYM
9l7TMTBBGr1d45s/DAuMUu/kY6CuttVe1H/5+T3Dppo6/FB9xD+yngEMjsikMRHk
Zdzb47mk3p2MAZgb3CEYmAZBvSPTkmQVWRlTM9Eton2kXz373ZF1e8fdO3kYOv6x
yY3kGHAgF1bwyqTK6VPxIo1W1q08QzqtZ6HwkILohg+dJGNaNjpHALFGMLVBQ6ZT
b6GjG4V0d1VqlhGp4jCddgUqRhWmSLP9bzd94et2YvsZ7vUG4lp2DYSewMXguENg
YpijChcNdy5bzuVxaadr69Ky4tqyi5PKSZOBL9jUON3RuA0T9ETudPXSMFozMgTT
SXciWyTfKy6LhFxTx3z38QURwAaxNpE02u3ztCxvyQIDAQABo4IBDzCCAQswHQYD
VR0OBBYEFJubjwrxXkCGkGkz4YigLO8EUS6iMIHbBgNVHSMEgdMwgdCAFJubjwrx
XkCGkGkz4YigLO8EUS6ioYGhpIGeMIGbMQswCQYDVQQGEwJGUjEMMAoGA1UECAwD
UkhBMQ0wCwYDVQQHDARMeW9uMQ8wDQYDVQQKDAZJTExZU0UxEDAOBgNVBAsMB29w
ZW52cG4xGjAYBgNVBAMMEWlsbHlzZS1vcGVudnBuLWNhMQ8wDQYDVQQpDAZJTExZ
U0UxHzAdBgkqhkiG9w0BCQEWEGFidXNlQGlsbHlzZS5vcmeCFAEMbKQm/tTSyK/m
3Ue4KqzNb6C0MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIBAH8X6Pj+
Td3dnkI55iJ2xyF6+b0DzCMvNgiebZIBfBPO90ZxDrAg0121DEGyLOgVbNBkpmA0
ocuB7aS4OyGd17gi05oJuQtXwFY342JegU2tLrJPVP7aUjL1WVwTX45q44tA3dlC
OHpml65MPb7Ndn5hVzoPQuEQteEJgBJUh/bKFkeAlH4bsMZxm8qU+ydPm4QM7BHV
BaJciHxFISxgUieyX2ER7RVKZvWyyVSyfuAo/OzZ+qFXbkus6iwjtgIrm5mV99NL
GAs29PsxegpVPuG2tJXSs+xMXFqyup2H1LF5VS9N5qluHCwMcUNREs9/qVf5mG+E
kdyiiRLIn4kmX/7+VgIjcqhP7ZIhY2gIEbj768HCl0QCGN97mO3p72Ws9JqTyazN
MVIBSY72c6GxKYzji49pIuJ8o13/MzUNZN7Dt6kJSTmIwtxSSmpjzu26ibX2DTg8
hkHtYhh7bDEPSd8DX2XTtDNNloKLjS0MMuPu+cZeEk+aGiC1EyCylLth1SRHZZGR
ODOp5rCOtqJtXMtgMvwjXJQezkQ46KiiJVZTKgKoF2eJGjqCGEnbfQxO/nvbi5XR
uBmnNGY6c4vUfv96XFVGI5o0vRkBMhlzaLcAng6Tzet6GBtc7v5s6SFQYutKzc9Q
Rrb85iqtO/GHnXEW0241zmg9e3hHVraMd5/U
-----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 scriptup.sh
. - Étape 2, changer les scripts
up.sh
etdown.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