Outils pour utilisateurs

Outils du site


openwrt_openvpn

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
Prochaine révisionLes deux révisions suivantes
openwrt_openvpn [2017/04/07 09:02] jean-kikiopenwrt_openvpn [2019/09/25 19:54] thatoo
Ligne 1: Ligne 1:
 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... 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...
  
-créé par jkiwi le 30 mars 2017 en cours de rédaction... 
  
-pour modifier les dns et ne pas prendre ceux de la box :  +01) brancher le routeur nouvellement acquis et allez sur la page d'admin (192.168.1.1 généralement)
-attention de prendre des dns ouverts car sinon si le vpn se relance il ne pourra pas résoudre les noms de domaine si dns fermé et on se coupe les pattes sur la branche on est assise.+
  
 +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 : 
 +<code>
 +# ########################################################################### #
 +# 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 (?)
 +link-mtu 1541
 +
 +## 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>
 +</code>
 +
 +06) puis créer un fichier « passFMA » également dans /etc/openvpn/ contenant vos identifiants et mot de passe VPN fourni par FAImaison. Exemple : 
 +<code>
 +pseudo
 +mot-de-passe
 +</code>
 +
 +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].
 +<code>
 uci set network.wan.peerdns='0' uci set network.wan.peerdns='0'
  
-uci del network.wan.dns+uci delete network.wan.dns
  
 uci add_list network.wan.dns='80.67.169.40' uci add_list network.wan.dns='80.67.169.40'
Ligne 15: Ligne 136:
  
 uci commit uci commit
 +</code>
 https://diyisp.org/dokuwiki/doku.php?id=technical:dnsresolver 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 :
 +<code>
 +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
 +</code>
 +(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).
 +<code>
 +/etc/init.d/openvpn enable
 +</code>
 +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.
  
 +---
openwrt_openvpn.txt · Dernière modification : 2022/01/21 15:01 de jean-kiki