cette page a pour but de présenter l'installation d'openvpn sur un système openwrt (sur un routeur notamment) afin d'utiliser le vpn de faimaison chez soi…
01) brancher le routeur nouvellement acquis et allez sur la page d'admin (192.168.1.1 généralement)
02) dans la section “mise à jour” uploader le fichier openwrt trouvé sur le site et correspondant à votre routeur : https://wiki.openwrt.org/toh/start
03) installer openvpn via l'interface LuCI : dans /System/Software/ penser à « update lists » puis dans /Available packages installer « nano » et « openvpn-openssl »
04) se connecter en ssh au routeur : ssh root@ip_local_du_routeur
05) dans /etc/openvpn/ créer un fichier appelé « faimaison.ovpn » (en utilisant nano) et coller la conf ci-dessous :
# ########################################################################### # # FAImaison # Fichier de configuration du client OpenVPN # fma_client.ovpn # ########################################################################### # ## Type de configuration client ## Interface dev tun ## Protocole utilisé (tcp/udp) proto udp ## en UDP, décommentez cette ligne, le serveur sera alors notifié quand vous vous déconnecterez, ce qui permettra d'éviter de vous envoye$ ## explicit-exit-notify ## Serveur (adresse et port) remote vpn.faimaison.net 1194 ## Verification du certificat du serveur ns-cert-type server ## le Common Name du certificat doit être "vpn.faimaison.net" pour être accepté verify-x509-name vpn.faimaison.net name ## Essayer de se connecter à l'infini, et au dela resolv-retry infinite ## Pas besoin de se lier a un port local nobind ## Configuration persistante au redemarrage persist-key #persist-tun ## MTU du lien (cas particulier d'un point d'accès avec un routeur 4g où la valeur '1380' fonctionne mieux) link-mtu 1541 #link-mtu 1380 ## Verbosité des logs verb 3 ## redirige tout le trafic vers ce vpn redirect-gateway def1 ## on ne stock pas les identifiants de l'utilisateur en mémoire #auth-nocache ## Les identifiants de l'utilisateur (username + password) sont stockés dans un fichier "passFMA" à coté de ce fichier de config ## la premiere ligne sera le login, et la deuxieme le mot de passe ## Il est aussi possible de passer l'option '--auth-user-pass' au lancement de ## la commande openvpn, pour se voir demander ces informations auth-user-pass /etc/openvpn/passFMA ## compatibilité windows route-method exe ## on attend un peut avant d'ajouter la route via le vpn, le temps que notre adresse IP soit récupérée route-delay 2 ## options rajoutés en s'inspirant de la conf de carlota pour éviter que le vpn ne se coupe (utile si serveur derrière la connexion) #ping crée du traffic pour que le serveur soit actif toute les 10s envoie un paquet ping 10 #ping-restart écoute le traffic et redémarre si il n'y a rien au bout de 30s ping-restart 30 ## avoir des logs log-append /var/log/openvpn.log status /var/log/openvpn-status.log ## Certificat de la CA de FAImaison <ca> -----BEGIN CERTIFICATE----- MIIFBjCCA+6gAwIBAgIJAIY1ylYTFFj0MA0GCSqGSIb3DQEBCwUAMIGyMQswCQYD VQQGEwJGUjEZMBcGA1UECBMQUGF5cyBkZSBsYSBMb2lyZTEPMA0GA1UEBxMGTmFu dGVzMRIwEAYDVQQKEwlGQUltYWlzb24xEDAOBgNVBAsTB09wZW5WUE4xCzAJBgNV BAMTAkNBMR0wGwYDVQQpExRGQUltYWlzb24gT3BlblZQTiBDQTElMCMGCSqGSIb3 DQEJARYWYWRtaW5zeXNAZmFpbWFpc29uLm5ldDAeFw0xNjA2MzAyMjQ2MTFaFw0y NjA2MjgyMjQ2MTFaMIGyMQswCQYDVQQGEwJGUjEZMBcGA1UECBMQUGF5cyBkZSBs YSBMb2lyZTEPMA0GA1UEBxMGTmFudGVzMRIwEAYDVQQKEwlGQUltYWlzb24xEDAO BgNVBAsTB09wZW5WUE4xCzAJBgNVBAMTAkNBMR0wGwYDVQQpExRGQUltYWlzb24g T3BlblZQTiBDQTElMCMGCSqGSIb3DQEJARYWYWRtaW5zeXNAZmFpbWFpc29uLm5l dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMKRZm+K1SEnvS6fNoSX eHGjGl6CyTaQvC4NEMEEVA4bLSBoFnfPjmvFa9gVSN3l757id+KtIBjjJpsTjSSL JT+uTv4w0ApS6JZssBIltSg1FGzIh0WAJbOBjlC1if8mHnAVRaFM7YzZGy/RUEp/ 6dl6rvJW2zf+bLxHpFZV5mxHkAkmiHweEEv8BXcXbQK9UkTpWN4icU8IQpnkSnFV JAb6308DRqmwz+5sSuAyqDtjmJx/+M2pOSPCCrK6eV9D5aJqOvVCXFQ2s5Q7qilQ KUJ+GKLne3Z3yHI1WWIvUxLSfPtciOz2EGAuJWQ9WSJNu/3iQSzA191o/pGmNc4Q qIMCAwEAAaOCARswggEXMB0GA1UdDgQWBBSp+ECuBVx9WGgao9xy+H6jgvWj2zCB 5wYDVR0jBIHfMIHcgBSp+ECuBVx9WGgao9xy+H6jgvWj26GBuKSBtTCBsjELMAkG A1UEBhMCRlIxGTAXBgNVBAgTEFBheXMgZGUgbGEgTG9pcmUxDzANBgNVBAcTBk5h bnRlczESMBAGA1UEChMJRkFJbWFpc29uMRAwDgYDVQQLEwdPcGVuVlBOMQswCQYD VQQDEwJDQTEdMBsGA1UEKRMURkFJbWFpc29uIE9wZW5WUE4gQ0ExJTAjBgkqhkiG 9w0BCQEWFmFkbWluc3lzQGZhaW1haXNvbi5uZXSCCQCGNcpWExRY9DAMBgNVHRME BTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAMcMCiOcB+HM8RI5Yq488yO8oghnmr D/Cawtn+eOHh/j4TI8RqbgNiRCKybnOkloYsqg32iBB0DciPI2eq1OvgtZckUzqC u84nNxiesaKALH84TJZtBf7zOjNsOX2b6b5FXP5Z0WtCrOwNbMhrWF9v4O9siuNj aRFeEexeIyk3QNO5AmkjKQfA0h3BAd5ySLc2tbezTSyHTS0CSCNOsbArL8xU70oS BWAJQPTFoCD/JGR1HhsMAU6t0odEVJ58bYyeZVaijoK3AlnqZ8BTCyqYK4Y0yZMJ OixgAbQgwlZPLGOKci04jcPMMdOhesY46oyp5Gjy7+lNyAUqbXi/NzBu -----END CERTIFICATE----- </ca>
06) puis créer un fichier « passFMA » également dans /etc/openvpn/ contenant vos identifiants et mot de passe VPN fourni par FAImaison. Exemple :
pseudo mot-de-passe
07) pour modifier les DNS et ne pas prendre ceux de la box :
[attention de prendre des DNS ouverts car sinon si le VPN se relance il ne pourra pas résoudre les noms de domaine si le DNS est fermé et on se coupe les pattes sur la branche sur laquelle on est assise].
uci set network.wan.peerdns='0' uci delete network.wan.dns uci add_list network.wan.dns='80.67.169.40' uci add_list network.wan.dns='80.67.188.188' uci commit
https://diyisp.org/dokuwiki/doku.php?id=technical:dnsresolver
fin de conf et historique extrait d'échange email :
8) Alors que ça avait bien roulé dans mon setup similaire (VPN pour une salle de formation, qui a tourné pendant trois mois), j'ai eu quelques petites déconvenues :
- si le tunnel crashait, il ne remontait pas tout seul (probablement dû au changement d'IP de SFR ?) - aucun log pour savoir ce qu'il se passe
Du coup j'ai amélioré un peu la chose :
Au lieu de la ligne dans /etc/rc.local, j'utilise un service propre. Pour utiliser le service openvpn (/etc/init.d/openwrt) :
Effectuer les commandes suivantes :
uci set openvpn.fma_client=openvpn uci set openvpn.fma_client.enabled='1' uci set openvpn.fma_client.config='/etc/openvpn/faimaison.ovpn' uci commit
(le nom fma_client est arbitraire et peut être changé pour ce que vous voulez, le fichier /etc/openvpn/faimaison.ovpn est à remplacer par le bon chemin de fichier de conf openvpn).
/etc/init.d/openvpn enable
Un reboot plus tard, ça fonctionnait
9) De retour dans l'interface LuCI d'openwrt :
Dans Network/Interfaces éditer “lan” et changer l'adresse ip local (par exemple 192.168.2.1). Ainsi si vous branchez votre routeur à une box (avec généralement une ip local 192.168.1.1) les 2 n'entreront pas en conflit (sinon ça tourne en rond).
10) Dans l'onglet /Network/Interfaces/ cliquer sur « New Interface »
“name” : wanvpn
“Protocol of the new interface” : unmanaged
Dans “Cover the folowing interface” entrez la valeur “tun0”
cliquez sur “submit”. Une fois créé allez dans l'onglet “firewall settings” cliquez sur “unspecified -or- create:” et rentrer la valeur “wanvpn” puis appuyez sur entrée.
11) Dans l'onglet /Network/Firewall/General Settings/Zones
wanvpn doit être à input : reject ; outpout : accept ; forward : reject
cocher masquerading cocher mssclamping
si vous “éditer” wanvpn vérifier que “lan” est bien coché dans : Allow forward from source zones: lan
si vous “éditer” lan : décocher “wan” dans le Zones de “lan” et dans Allow forward to destination zones: wanvpn
—
[déjà intégré dans les étapes ci-dessus]
*Des logs !*
Pour suivre un peu ce qui se trame, j'ai ajouté des logs (et un fichier de statut). J'ai ajouté les fichiers suivants
log-append /var/log/openvpn.log
status /var/log/openvpn-status.log
à mon fichier .ovpn, il faut ensuite relancer openvpn /etc/init.d/openvpn restart
Ces logs m'ont permis de constater que le processus de redémarrage automatique du tunnel en cas de changement d'IP (ou tout autre problème réseau) fonctionnait, puisque ce matin vers 10h, les logs ont dit :
[…]
Tue Mar 28 10:07:34 2017 [vpn.faimaison.net] Inactivity timeout (–ping-restart
), restarting
Tue Mar 28 10:07:34 2017 SIGUSR1[soft,ping-restart] received, process restarting
[…]
… Et la connexion est remontée toute seule
Restent deux souci avec ce setup :
1) je pense que les requêtes DNS passent toujours par le DNS SFR. À vérifier et améliorer le cas échéant…
2) Même si ça fonctionne, j'ai toujours une erreur au redémarrage du tunnel :
Enter Auth Username:Tue Mar 28 10:07:42 2017 ERROR: could not read Auth username from stdin. En tombant sur ce sujet : https://sourceforge.net/p/openvpn/mailman/message/23742332/ j'ai tenté de commenter l'option “auth-nocache” pour voir si ça faisait le job. Réponse demain au changement d'IP
Cette doc m'a beaucoup aidé :
https://github.com/jlund/streisand/wiki/Setting-an-OpenWrt-Based-Router-as-OpenVPN-Client
… La doc sur le wiki opewrt n'étant pas top pour ce cas d'utilisation je trouve.
—