Téléphoner à travers les réseaux

Divulgâchage : Alors que nous étions en déplacement sans réseau téléphonique digne de ce nom sous la main, nous avons utilisé une connexion distante pour utiliser notre réseau téléphonique perso et passer des appels vers l’étranger. Pour ça, on a utilisé un VPN pour se connecter sur notre réseau à la maison, puis une application SIP pour utiliser notre IPBX et faire sortir les appels par les boxes internet via notre passerelle analogique…

En fait, on était en train de donner un cours à l’INSA, et nous voulions passer un coup de téléphone vers la Belgique et ce fut une aventure en soi…

Comme je dois bien avouer que j’adore configurer des réseaux, je me suis fait plaisir avec notre SI@Home en faisant passer le flux téléphonique à travers plusieurs serveurs et à l’intérieur d’autres flux.

The Big Bang Theory, saison 1, épisode 9, Allumer une ampoule via Inernet

Alors, puisqu’on aime partager, voici un petit retour d’expérience.

Les problèmes

Le premier problème, c’est la couverture réseau. On nous parle déjà de déploiement de la 5G mais si on regarde la réalité en face, dès que vous vous éloignez des zones urbaines, c’est déjà bien si vous captez quelque chose.

Couverture mobile Free, carte de l’ARCEP du 26/11/2019

Même si les zones changent légèrement d’un opérateur à l’autre, chacun laisse de côté, pour la téléphonie mobile, près de 10% de la population. En 4G, les choses sont sensées aller mieux puisque au plus 1% de la population ne serait pas couverte du tout. Mais si vous vous baladez un peu en campagne, ça n’est pas toujours rose.

Dans notre cas, s’ajoute aussi les possibilités de nos forfaits téléphoniques. Ils peuvent appelez depuis la Belgique, mais pas vers la Belgique. On aurait dû, pour ça, activer l’option qui va bien mais a) on y a pas pensé et b) ça coûte 1€/mois.

Notre solution

Un VPN

Si nous étions à la maison, nous pourrions facilement nous connecter à notre infrastructure perso. Mais pour éviter que n’importe qui fasse n’importe quoi avec, les serveurs ne sont pas accessibles de l’extérieur.

Pour contourner cette limitation, nous pouvons alors mettre en place une connexion VPN. Le même genre que celles proposées par des opérateurs pour éviter une certaine surveillance des réseaux, à la différence qu’ici, nous sommes notre propre fournisseur VPN.

Connexion via un VPN

Comme nous utilisons déjà pfSense, nous avons donc configuré le module déjà installé, en adaptant légèrement à notre configuration (ajout de routage pour joindre le reste de l’infra et autres paramètres spécifiques).

Côté smartphone, nous avons installé l’APK d’OpenVN auquel nous avons intégré le fichier de configuration exporté dans pfSense.

Lorsque nous lançons l’application sur notre smartphone, elle négocie alors avec notre serveur pfSense un canal de communication sécurisé à travers Internet. Une fois ce canal en place, l’application simule une carte réseau virtuelle qui semble connectée à notre réseau interne ; les flux passant dans cette carte sont en fait encapsulés dans le canal sécurisé.

En vrai, nous avons du régler quelques petits problèmes.

  1. Nous n’avions généré qu’un seul certificat client que nous partagions sur les équipements qu’on avait avec nous. PfSense étant configuré pour n’accepter qu’une seule connexion par certificat, nous nous déconnections les uns les autres. Une fois la restriction levée, les connexions sont devenues plus stables.
  2. Nous avons aussi du gérer des conflits d’adresses IP car le réseau WiFi du gîte utilisait les mêmes adresses qu’à la maison. Comme nous ne voulions pas changer nos adresses perso à distance, ni modifier le réseau du gîte, nous avons utilisé quelques routes statiques poussées par le serveur au client pour qu’il sache joindre certaines machines spécifiques (notre NAS pour récupérer les films des enfants, et l’IPBX pour la suite).

Que ce soit pour les serveurs, ou les clients, tout se passe alors comme si tous étaient connectés au même routeur.

De la VoIP

Maintenant que nous sommes connectés comme à la maison, il faut encore pouvoir utiliser le réseau téléphonique.

Si nous pouvions partager cette connexion VPN avec un de nos IP8815, nous n’aurions rien d’autre à faire que le mettre sous tension, mais comme nous n’en avions pas pris avec nous (à noter pour plus tard), il a fallu ruser…

Téléphonie via un IPBX

Comme le monde est bien fait, de gentils développeurs ont mis au point des clients SIP pour transformer des smartphones en SIP-phones et utiliser un IPBX pour passer des appels (ce qui est exactement notre cas).

Pour la petite histoire, les applications et l’IPBX utilisent des codecs pour coder le flux audio et ne sont pas toujours compatibles entre eux…

Après plusieurs essais infructueux, nous avons fini par faire marcher l’APK Sipdroid. Les autres étaient soit incompatibles, soit pleins de pubs, ou demandaient des autorisations sans rapport.

Une fois notre application connectée à notre IPBX, celui-ci peut alors transférer les appels émis par l’application vers notre passerelle analogique qui va le traduire en analogique à destination de la box d’accès internet qui, elle, peut passer un appel vers la Belgique :-)

Au final

Téléphoner via un VPN

En vrai, ça a sonné occupé…