Le blocage
Salut,
Imaginez un opérateur (dernièrement de téléphonie mobile) toujours balaise côté technique, qui apporte de sacrés trucs, qui fait plier commercialement les autres, qui est un opérateur vraiment impressionnant chaque fois qu’il lance un truc, mais avec qui parfois c’est la lutte et là ça peut vraiment te gonfler à l’usage.
Alors avant te barrer chez un autre opérateur sans engagement qui a de meilleures infrastructures en place, tu cherches à sortir la tête du troupeau et faire en sorte que le service marche comme il devrait.
Et le tout sans rooter mon téléphone flambant neuf que je n’ai pas encore envie de massacrer en changeant la ROM. Pour les iphoneux, euh… ça doit aussi exister un client openvpn
L’idée
Bref, aujourd’hui, comment faire passer tout son trafic 3G dans un VPN (openvpn) via un serveur « copain » (au pire un serveur chez soi) et ainsi contourner quelques restrictions de débits… de facebook à G+ en passant par mon GPS qui a décroché en 3G au moment où j’en avais *vraiment* besoin, tu sais, quand tu es à quelques rues du rade de la salle de réunion où tu as une beuverie prévue entre copains un RDV de travail avec quelques connaissances. Pour le peu de fois où je me remue jusqu’à Paris, ça fait suer quand même ! ton téléphone écran méga-large devient une super grosse brique et accessoirement tu passes pour un con auprès de ceux restés chez des opérateurs classiques au triple de prix.
Donc, si t’as tout compris, l’idée est de monter un VPN et de tout balancer dedans. Plus tard, quand l’opérateur aura réglé ses problèmes, t’auras quand même besoin un jour de ce VPN pour te sauver les fesses d’une situation exceptionnelle, j’en suis sûr, donc ce n’est pas perdu. La méthode a été prouvée et constatée de visu par une longue étude de 10 secondes montre en main par quelques geeks présents ce jour là :
– sans VPN, t’accèdes à rien, ça rame etc
– tu allumes le VPN, ça turbine
– tu l’éteins, tu retournes à même pas un débit d’Edge.
Alors bon, ça ne rend sûrement pas service à l’opérateur en question qui doit lutter techniquement sur fonds de dispute probable commerciale de sous-location d’infrastructure, mais bon, m’en fous. C’est ça où je change le mois prochain.
Le matos nécessaire
Il faut :
- un serveur VPN déjà en place ; d’après un copain, plutôt en TCP qu’UDP, du fait de la 3G. Admettons.
- un téléphone sous Android. S’il est rooté, il suffit d’installer « Openvpn settings » si votre ROM contient openvpn ; ou alors installer « Openvpn installer » en plus pour ramener openvpn ; et s’il n’est pas rooté, « Openvpn for Android » fait le boulot comme il faut (il y a je crois des restrictions sur le niveau minimum de release Android à avoir). A voir.
- un tout petit peu de conf particulière sur le VPN pour dire aux clients : tout router via le VPN
- un site type whatismyip.com pour vérifier facilement quelle IP vous présentez et ainsi valider la conf
- à la limite le SDK Android (adb & co) pour pouvoir comprendre ce qu’il se passe quand ça marche pas (j’en ai pas eu besoin mais ça m’aurait aidé au début)
A noter que le VPN, c’est fourni dans Android, mais pas avec OpenVPN…
Montage du serveur VPN
Le montage d’un serveur VPN – sous Debian – est décrit dans un précédent article de mon blog. En résumé : installation du paquet puis utilisation des outils easy-rsa pour générer facilement tout l’aspect certificat et une paire de clefs pour un poste à essayer, par exemple votre téléphone. Il est bon de tester sur un PC avant pour être sûr que le VPN fonctionne et que si ça ne fonctionne pas, c’est la faute au téléphone.
Enfin, ne pas oublier d’ouvrir le port TCP/1194 (on a dit TCP, pas UDP) et de tolérer un masquerading entre votre interface VPN et la patte Internet du serveur.
Finalement, la seule spécificité est de préciser ceci dans le fichier de configuration du serveur VPN :
push "redirect-gateway def1" ;push "dhcp-option DNS 10.8.0.1" #ça ou la ligne suivante, suivant que votre serveur est ou non un serveur DNS push "dhcp-option DNS 8.8.8.8"
Je laisse exprès une ligne qui m’a posé souci : faire un push d’une conf DNS potable. En effet, le redirect-gateway indique de tout envoyer via le VPN, donc les requêtes DNS aussi…. si votre serveur est un serveur DNS, alors c’est OK pour relayer par lui (penser à ouvrir le trafic DNS de l’interface VPN vers la machine), sinon c’est mort et le serveur public de Google, dont l’IP est 8.8.8.8, peut rendre service.
Lire ce passage de la doc OpenVPN (quelques lignes) est une bonne idée.
Côté client
Voilà, reste à mettre à disposition du client « OpenVPN for Android » ou « OpenVPN Settings » votre autorité de certification (genre ca.crt), les clefs publique et privée générées pour votre téléphone et le fichier de conf client .ovpn, qui lui n’a rien de nouveau, à la limite le proto tcp
spécifié.
Il suffit de copier lesdits fichiers dans un répertoire genre /sdcard/openvpn/
(ou /storage/sdcard0/openvpn
, ça dépend fortement de votre téléphone et de son système)
Hors sujet
A noter quand même que « celui-qui-a-tout-compris mobile » offre aussi l’identification à ses réseaux freewifi_secure par carte SIM, et ça, c’est quand même classe ! du moment que t’es pas en mouvement et que ton téléphone gère l’identification par carte SIM.
Ah ouaih quand même !!!! Ça rigole pas didonc ! Bon j’en parlerais avec Seb car j’ai pas tout compris mais c’est super intéressant de vous lire. Bon par contre moi je suis mauvaise élève, car sous IOS … J’ai été sous android avant mais mon galaxy m’à tué ! (le premier du nom) bref en tous cas merci pour ce bel article ! 😉
Il me semble que openvpn est possible sur iPomme. Voire même intégré je ne sais plus