Android

[Astuce] Accès distant avec OpenVPN

0

En voulant configurer un serveur d’accès distant avec OpenVPN, je suis tombé dans quelques petits pièges. Aussi, pour que mon expérience puisse servir à d’autres, autant vous en faire part.

Contexte

C’est très simple, presque bateau : un serveur, avec OpenVPN, des clients, avec OpenVPN également et quelques petites subtilités côté serveur. Les clients se connectent au serveur et accèdent à des ressources locales au serveur mais aussi à l’infrastructure qui se trouve derrière. Imaginez que l’infrastructure est importante et que le serveur serve de bordure à un protocole de routage dynamique.

Première astuce : les types de tunnels

D’abord, j’ai fait l’erreur de laisser les clients se connecter via un VPN TAP. Bien que ça fonctionne, ce n’est pas vraiment adapté en pratique. Sommairement, les tunnels de type TAP sont principalement conçus pour des connexions de site à site, et les tunnels de type TUN servent aux accès distant pour un terminal (ordinateur, téléphone, tablette…). Bref, on repasse en TUN pour le cas qui m’intéresse, c’est-à-dire de l’accès en itinérance de terminaux.

Deuxième astuce : la topologie des tunnels de type TUN

Les interfaces de type TUN fonctionnent au niveau 3 du modèle OSI, mais en fait c’est un montage un peu complexe quand on y regarde de très près mais qui fonctionne très bien. Sauf bien évidemment quand on utilise déjà des astuces de routage ou de pare-feu, ce qui était le cas sur mon serveur.

Regardons justement plus en détail. Sur une extrémité de tunnel TAP, on trouve une interface réseau virtuelle, possédant son adresse IP et son masque, et un pair en face. On est donc pas bien loin du tunnel GRE si on enlève le chiffrement qui va autour, dans le principe bien sûr.

Pour une extrémité TUN, il faut tenir compte de la notion de topologie. Par défaut, un serveur TUN démarre avec une topologie dite « net30 », soit assignation d’un sous-réseau /30 (2 IP possibles, le serveur et le client). Et pour que le client communique avec le serveur (au sens applicatif, par exemple un serveur Web abrité derrière la connexion VPN), il faut que le noyau puisse recevoir les paquets, et il n’y a qu’une seule interface virtuelle qui est montée. Dans ce cas, on va tomber sur une interface TUN déclarée dans le noyau avec une adresse IP /32, une route injectée « manuellement » par OpenVPN pour tout le sous-réseau, et un routage strictement interne à OpenVPN entre les clients. Obscur hein ! Décryptons avec un dessin.

Ce schéma représente le principe de fonctionnement d’une topologie Net30. Le serveur réel (le noyau du système d’exploitation) voit une unique adresse IP en 192.168.90.1/32, tout le reste étant masqué par le processus OpenVPN. Chaque client voit sa propre adresse IP dans un sous-réseau dédié par OpenVPN. Par exemple le client ayant l’adresse 192.168.90.6/30 discutera avec le serveur via l’adresse 192.168.90.5/30 et ne pourra pas communiquer avec le reste du monde, sauf à lui « pousser » des routes.

Il faut bien comprendre qui va tenir le rôle de routeur : est-ce le serveur OpenVPN ou est-ce le noyau de l’OS ? La réponse dépend de la configuration : avec l’option « client-to-client », c’est OpenVPN qui s’occupera du routage, sinon c’est le noyau.

Avec un Net30 et une plage réduite dans la configuration d’OpenVPN, disons 192.168.90.0/29, on peut avoir un serveur et un client (et un seul), et instancier autant de processus OpenVPN que nécessaire, et donc autant d’interfaces dans le noyau. Ca peut éventuellement servir pour appliquer des règles de pare-feu très fines entre clients ou différentes d’un client à l’autre.

Mais c’est peut-être un peu beaucoup… Et c’est pas tout à fait ça que je cherchais. Tout simplement parce que l’interface déclarée en tant que 192.168.90.1/32 crée du souci à mon protocole de routage, même avec la route « manuelle » évoquée plus haut qui serait ici 192.168.90.0/24. Dans mon cas, le protocole choisit le masque le plus restreint plutôt que la route statique, même en lui forçant la main.

Et c’est là qu’entre en jeu le paramètre « topology ». Moyennant de lui indiquer le mode « subnet », on retombe sur le même principe de fonctionnement que les interfaces TAP, et le noyau verra de nouveau l’interface virtuelle en tant que 192.168.90.1/24. Et voilà que mon routage s’est remis d’aplomb presque instantanément !

Troisième astuce : tout ça pour le client OpenVPN sur Android

Le client OpenVPN pour Android ne supporte pas les tunnels TAP ! C’est de là que tout est parti. Quand, lorsque j’ai bêtement converti mon serveur de TAP vers TUN, j’ai vu surgir tous ces problèmes de topologie mais aussi de routes et de DNS !

Parce que malgré un « ip route » sur un teminal Android (7.1.2), impossible de voir les routes poussées par le serveur dans le noyau Linux de l’Android. Même en root. Alors qu’elles sont bien présentes et bien inscrites par OpenVPN. Bref, que faut-il alors faire pour que ça fonctionne ?

Sur le serveur, il faut pousser les routes et éventuellement si c’est nécessaire (comme dans mon cas) les serveurs DNS. On placera donc les éléments suivants, que vous aurez bien évidemment pris soin d’adapter à votre cas, dans la configuration côté serveur :

push "route 10.0.0.0 255.0.0.0"
push "dhcp-option DOMAIN labcellar.com"
push "dhcp-option DNS 10.0.0.10"
push "dhcp-option DNS 10.0.0.11"

Je ne veux rediriger que le trafic interne dans le tunnel, c’est pouquoi je ne fais que pousser la route adaptée. Vous trouverez sur Internet pléthore de sites vous expliquant comment rediriger l’intégralité du trafic dans le tunnel. Ici, c’est l’accès aux outils internes qui m’intéresse, et la résolution des noms. Côté client Android, il faut bien penser à laisser l’option « pull » activée afin que soient pris en compte tous ces paramètres « pushés » par le serveur. Et n’oubliez pas dans les versions récentes d’Android d’aller régler les « Applications autorisées », soit en mode « liste blanche » (seulement les applications cochées), soit en mode « liste noire » (interdire les applications cochées).

En fait, au delà de l’astuce de configuration, il faut savoir que le seul moyen d’avoir des informations de débogage consiste à augmenter la « verbosité » du logiciel OpenVPN et à faire confiance au fait qu’il affiche ou non des erreurs à chacune de ses actions. Demander ces informations directement au noyau Android aboutit à n’avoir que des informations erronées ou incomplètes si l’on tente de procéder comme sur un ordinateur classique.

Références

Il y a une petite coquille dans cet article (qui n’est pas liée à la syntaxe ou à la grammaire mais bien sur le sujet de fond), et qui n’a pas d’impact sur toutes les explications données, ni sur la solution mise en œuvre. Je l’ai laissée (presque) exprès. Saurez-vous la retrouver ? J’éditerai cet article dans un mois environ pour indiquer la solution.

Edit du 09/04/2018 : si vous avez bien suivi les explications sur la topologie Net30, vous avez peut-être remarqué qu’il y a une incohérence dans le schéma que j’ai proposé. En effet si le pseudo-serveur qui émule le switch interne qui relie les tunnels entre eux s’attribue d’abord une adresse avant d’en attribuer une à son client, ça signifie que la patte en haut à gauche qui représente la machine physique ne contient pas les bonnes adresses. Côté switch, c’est l’adresse .1 et côté serveur physique, c’est .2. Et c’est effectivement le cas : l’adresse visible avec un « ifconfig » ou un « ip address » est bien une valeur paire, et généralement .2 pour un subnet /24 divisés en morceaux de /30.

Réception du Nexus 5

0

La préface cachée de la lune

Nous avons été pas mal pris ces derniers temps par la réception de nos serveurs, d’une baie, de matériels divers et variés. On m’a récemment offert quatre vieux Power Macs qui ornent mon appartement en attendant de pouvoir en faire quelque chose. On se lance aussi dans les bidouilles de ToIP. Nous nous sommes équipés de cinq Cisco 7960 convertis en SIP, et nous apprenons lentement mais sûrement à faire fonctionner Elastix sur un serveur Kimsufi 2G à 3€. Beaucoup beaucoup de choses personnelles aussi, comme le remplacement de mon téléviseur Sony, par un Philips 42PFL5008H afin de profiter de l’ambilight auquel je suis devenu accro, et également un module CAM Numéricable que j’essaye de faire fonctionner dessus avec l’aide des membres de GénérationCable. J’en ferai d’ailleurs un article un peu plus tard (lorsque tout marchera) pour vous éviter les galères que je traverse en ce moment !

 

Ouais, tu pouvais te passer de lire tout ça

Revenons à nos moutons. J’ai donc commandé dès la sortie un Nexus 5, le 31 octobre, il est arrivé le 5 novembre. Je vous livre ici uniquement mes impressions, donc subjectives.

Donc en gros ça sert pas à grand chose de lire la suite

Il est juste génial. On sent malgré son prix une bonne qualité d’assemblage et des finitions agréables. J’aime particulièrement le dos, qui est semblable à la Nexus 7. Sa tenue en main est également agréable pour moi qui n’ai pas de grandes mains, vu qu’il est à peine plus large que mon Nexus 4. Les boutons en céramique sur le côté apportent une sensation de précision dans la fabrication mais rien de sensationnel, sûrement parce que je regarde plus l’écran du téléphone que les côtés. Cela dit, ils semblent résistants, en espérant qu’ils le soient…

Au niveau photo je n’ai pas pu vraiment tester mais vous devez de toutes façons savoir que c’est clairement mieux que le Nexus 4. On passe vraiment du tout au tout, tant au niveau de la réactivité que le la qualité des photos. Le mode HDR+ est une tuerie. Rien à voir avec le Nexus 4. Ce gros avantage provoque à mon sens un inconvénient esthétique, l’objectif dépasse à l’arrière du téléphone, peu, mais suffisamment pour qu’une fois posé sur une table ce dernier soit légèrement instable. Cette proéminence le rend sans doute plus fragile, mais nous verrons cela avec le temps. Il est encore trop tôt pour porter ce genre de conclusions. L’adjonction du coque, également en vente sur le Play Store, devrait suffire à régler le problème.

Niveau software, je découvre donc les nouveautés d’Android 4.4 KitKat qui, comme le téléphone, à fait beaucoup parler de lui ces derniers temps. Je vous épargne les screenshots et les benchmarks, tout ce qu’il faut est déjà en ligne depuis longtemps, pour vous livrer mes impressions. C’est fluide. Les améliorations d’interface sont globalement agréables. L’écran d’accueil et la transparence qui va avec rendent l’utilisation agréable. Un détail qui me plait particulièrement sur le bureau, c’est la façon « iPhonesque » de gérer les différents bureaux. En effet, avant il y avait cinq bureaux potentiellement vides, maintenant il y a autant de bureaux que vous le décidez. Il suffit de déplacer une icône en dehors de l’écran et il vous crée un bureau. Retirez toutes les icônes d’un bureau et celui-ci disparaît, n’ayant plus de raison d’être. De même, l’accès aux widgets se fait par un appui prolongé sur le fond d’écran. Cela permet d’accéder aux réglages, aux fonds d’écran, et au widgets. Ils ont totalement disparu des applications.

La dictée vocale semble avoir été améliorée. Après quelques tests, il semble mieux comprendre. Je ne suis pas en mesure de savoir si cela vient du double micro ou du logiciel mais peu importe.

Un point étonnant, ou pas, c’est l’inversion du sens du port micro-USB par rapport au Galaxy S3 ou au Nexus 4.

Je l’ai utilisé normalement pendant toute une journée, débranché le matin à 7h, utilisé avec une montre Pebble en Bluetooth, la batterie est encore à 75% à 18h (j’utilise peu mon téléphone en journée) avec une vingtaine de notifications et autant de SMS reçus, consultation rapide du trafic routier, environ 15 minutes d’appel.

Je vais tenter de faire un retour sur la réception, la batterie, la qualité audio, mais il me faut un peu de temps pour l’utiliser davantage. En attendant quelques photos que j’ai fait hier, lors du déballage…

A très vite pour de nouvelles aventures !

It’s time : Faisons connaissance avec la Pebble

0

C’est l’heure ! C’est pas moi qui le dit, c’est Pebble. Souvenez-vous, cette montre tant attendue, annoncée pour de vrai au début du mois de janvier par Eric Migicovsky. Un petit bijou dont j’ai parlé par ici le lendemain de l’annonce faite au CES 2013 qui est aujourd’hui enfin arrivé !

Je joue avec depuis seulement quelques heures alors mon avis ne peut être que très partiel, n’ayant pu tester l’autonomie, ni tous les types de notifications, mais pour l’instant : C’est GÉ-NIAL !

La montre est discrète, elle ne sonne pas mais vibre. Le rétro-éclairage permet une bonne lisibilité et peut ettre activé en permanence ou seulement lorsque la luminosité ambiante est faible, de même que l’écran E-Ink est très lisible en extérieur. Elle est légère, les boutons sont facilement accessibles et elle est réactive.

On va voir ce que cela donne avec le temps, mais en tout cas les premières impressions sont excellentes, et même meilleurs que ce que j’imaginais au départ. Je vais tenter d’estimer l’autonomie que j’ai perdu sur le Nexus 4 depuis que j’utilise cette montre qui, je le rappelle, est connectée en Bluetooth avec les smartphones Apple ou Android.

Quelques liens utiles ou pas :

Le site officiel
Pebble sur Twitter
Pebble sur Facebook
Les news sur KickStarter
Le test vidéo par The Verge

Si vous aussi vous allez en recevoir une, amusez-vous bien !

[MàJ] Réception d’un Nexus 4

1

Comme vous l’avez peut-être remarqué, le 30 janvier, dans l’après-midi, vers 16 heures, le Web français s’est enflammé (comme ici) car le Nexus 4, dernier né de la lignée des téléphones Google, était de nouveau disponible sur le Play Store alors que les acheteurs potentiels attendaient depuis novembre. En rentrant chez moi de ma petite promenade, à 16h29, je commence à lire les news diverses, et me rends compte que je peux enfin obtenir le précieux. C’est à 16h35 que ma commande est prise en compte. Le Play Store annonçait deux à trois semaines de délais avant expédition, celle-ci étant estimée pour le 21 février. La disponibilité n’était que de que de courte durée ce jour là. Depuis quelques jours on peut commander normalement, avec tout de même ce délais de plusieurs semaines.

C’est très long, surtout quand comme nous on a l’habitude de recevoir chez nous les produits moins de 24 heures après la commande, mais ce téléphone ayant connu de gros problèmes d’approvisionnement, cela peut se comprendre. D’autant que LG, son constructeur, a annoncé un retour à la normale mi-février, donc nous y sommes.

C’est alors que je me dis qu’il serait intéressant, vu le temps d’expédition estimé, de suivre les envois de différents acheteurs, comme à l’époque ou j’attendais la Freebox Révolution en mars 2011, quand j’habitais dans Paris, où l’ADSL fonctionne, et que je suivais les expéditions sur freebox.toosurtoo.com.

Après quelques recherches Google, je tombe sur ce topic sur Hardware.fr, où se trouve un post de suivi des commandes et des expéditions, permettant idéalement de comprendre la logique d’expédition pour mieux suivre l’avancement de la commande de chacun. En effet, cela s’est avéré intéressant à partir du moment où, alors que peu l’attendaient, le Nexus 4 s’est retrouvé livré dès le premier février, ce qui rendit les foules particulièrement impatientes. Et maintenant que j’ai le précieux entre les mains, je les comprends encore mieux qu’avant ! Sur ce même topic, un autre membre nous informe régulièrement dès qu’il sait quelque chose sur les stocks que sa société envoie à Chronopost. Merci à eux pour leur contribution plus que majeure. Bon courage à tous ceux qui attendent encore leur Nexus. En espérant que ce n’est plus qu’une question de quelques jours.

Nous étions tous en attente, et j’ai reçu lundi 18 février mon mail de confirmation de l’expédition dans la journée, et le numéro de suivi du colis. Il est arrivé hier, mardi, et c’est un grand plaisir que d’utiliser ce téléphone.

Le colis

Le colis

Maintenant je pense que vu qu’il est un peu tard dans la nuit, il serait préférable de passer aux photos, une fois n’est pas coutume, du déballage du produit.

Maintenant il ne reste plus qu’à faire joujou avec, honnêtement, la partie la plus intéressante.

Ce que je trouve le plus sympa c’est la forme et la finition, bien plus agréable qu’un Samsung Galaxy S3, qui fait très bas de gamme à côté. Le poids est un peu plus élevé sans être gênant pour autant. L’utilisation d’un Android (ici Jelly Bean 4.2.2) sans surcouche constructeur, ni opérateur est très agréable même si on peut regretter l’absence de certaines fonctions sympathiques mais qui peuvent être comblées en passant sur des ROM CyanogenMod 10.1 par exemple, ce que je ne testerai pas, car pour moi, la CyanogenMod sur le Galaxy S3 n’était qu’une solution temporaire pour garder le téléphone proche d’Android version Nexus… Un autre avantage est que l’on peut installer immédiatement les mises à jour du système dès que Google les propose, sans attendre que le constructeur diffuse sa propre ROM.

Cadeau, un super site que SartMatt, rédacteur sur MacBidouille m’a passé pour déverrouiller le bootloader et accessoirement rooter le téléphone simplement.

[MàJ] : Justement pour les bidouilleurs, et les développeurs aussi, Google a publié les images d’usines d’Android. Ces images sont disponibles au téléchargement et permettront de restaurer un téléphone, mais aussi des tablettes en cas de corruption du système de votre fait ou non.

La montre à encre électronique est annoncée

26

Aujourd’hui, alors que le CES 2013 bat son plein, l’équipe de Pebble annonce la sortie officielle de sa montre magique.

[vimeo http://vimeo.com/40128933]

Tout à commencé en avril 2012 sur Kickstarter. Non seulement ce projet a atteint en deux heures seulement les 100 000 $ de promesses de financement, mais il a atteint le million de dollars en 28 heures !

Cette montre est communicante avec votre smartphone. Via Bluetooth, vous pouvez recevoir des notifications, des SMS, des mails, des alertes météo, calendrier, Facebook, Twitter, l’affichage du nom de l’appelant et la possibilité de décrocher… Elle est personnalisable et si la couleur du boitier est à choisir lors de la commande parmi cinq coloris, l’affichage de l’heure est modifiable afin de coller au mieux avec vos envies et surtout vos habitudes.

Pebble Watch — 5 couleurs

Pebble Watch — 5 couleurs

Ce qui m’intéresse le plus sur cette montre connectée, c’est son écran. En effet, une montre connectée, c’est bien mais c’est pas nouveau. Sauf qu’une montre digitale a le même problème qu’un téléphone. Nos smartphones actuels ont de magnifiques écrans mais carrément illisibles une fois à l’extérieur. Je me suis surpris à devoir mettre la luminosité de mon Galaxy S3 au maximum dehors alors qu’il n’y avait même pas de soleil ce jour là sans quoi il était illisible… Il est donc pour moi crucial que ma montre soit parfaitement lisible en toutes circonstances. C’est ce que semble promettre Pebble et son écran E-Ink, ainsi que son rétro-éclairage pouvant être déclenché en la tapotant ou en secouant le poignet grâce à un accéléromètre intégré. Une boussole et des capteurs de luminosité ont également été intégrés.

Pebble Watch — Rayons X

Pebble Watch — Rayons X

Il sera possible de coder ses propres applications pour Pebble et les distribuer via une boutique d’applications dédiée.

Récapitulatif technique 
  • Chargement d’applis par Bluetooth
  • Ecran en papier électronique noir et blanc 144×168
  • Bluetooth 2.1+EDR et 4.0 (consomme moins d’énergie)
  • 4 boutons
  • Alertes vibrantes
  • Accéléromètre sur 3 axes
  • Batterie rechargeable par cordon USB aimanté
  • Etanche 5ATM

Ce n’est donc plus un rêve mais bel et bien une réalité. Il va encore falloir patienter quelques semaines, les expéditions commenceront le 23 janvier, et les supporters Kickstarter seront évidemment servis les premiers.

Vous pouvez néanmoins précommander la votre directement sur getpebble.com.

On fera un petit déballage dès qu’on en aura une sous la main !

Go to Top