Surveillance à distance d’un troupeau de vaches

Le contexte

Mes parents sont agriculteurs et utilisent une caméra afin de surveiller le troupeau lorsqu’il se trouve dans l’étable. La caméra est connectée au réseau IP de l’exploitation et est utilisable depuis les téléphones/tablettes Android et Apple via une application dédiée. Cette application de surveillance ne fonctionne que si le téléphone est connecté au réseau local. En effet, l’adresse IP de la caméra (adresse privée) est enregistrée dans la configuration de l’application et celle-ci n’est pas modifiable. La configuration est téléchargée depuis les serveurs de l’éditeur de l’application.

L’objectif est de rendre la caméra utilisable en dehors du réseau local, par exemple via une connexion 3G/4G. Comme la configuration n’est pas modifiable, un serveur VPN a été mis en place pour accéder au réseau local depuis Internet. Initialement, ce serveur était installé directement à l’exploitation, et connecté au réseau local. La box Internet lui transmettait les connexions VPN. Malheureusement, depuis un changement de fournisseur d’accès (passage à un box 4G), le routeur possède une adresse de type NAT (100.64.0.0/10), empêchant tout accès depuis l’extérieur.

Pour contourner ce problème, le serveur VPN a été externalisé chez un hébergeur et l’ancien serveur du GAEC est devenu un client VPN connecté en permanence à ce serveur. En passant par ce serveur relais, il est possible d’accéder au réseau du GAEC.

Architecture de la solution

Le serveur VPN a été installé sur une machine physique hébergée par OVH, disposant ainsi d’une adresse IP publique fixe et d’une connectivité permanente. Le client VPN est une Raspberry Pi installée près de la box Internet et configurée pour se connecter automatiquement au serveur VPN. Le réseau local de l’exploitation a pour cœur le routeur Wi-Fi/4G sur lequel tous les équipements sont reliés, soit via Wi-Fi soit via un câble Ethernet. Le client VPN et la caméra sont connectés de façon filaire.

Les téléphones connectés en Wi-fi au réseau local accèdent à la caméra directement via le routeur Wi-Fi. Les téléphones connectés en 3G/4G accèdent au réseau local via le VPN. Ils peuvent ensuite accéder à la caméra comme les téléphones du réseau local.

Architecture de la solution

Mise en place

La première étape du projet a été de comprendre comment fonctionne l’application et comment elle se connecte à la caméra. C’est avec des tests réalisés à l’aide de Wireshark que j’ai déterminé qu’il n’y a pas de détection de la caméra sur le réseau mais seulement une tentative de connexion sur une adresse IP précise. La caméra est sur un réseau privé et n’est pas accessible de l’extérieur. Si l’adresse IP utilisée par l’application était modifiable, il suffirait de rediriger certains ports de la box vers la caméra (d’où l’idée d’utiliser Wireshark pour identifier ces ports). Malheureusement la configuration n’est pas modifiable, le seul moyen de rediriger le trafic vers la caméra est donc d’utiliser un VPN.

Le serveur VPN est installé sur un serveur OVH déjà utilisé pour d’autres services, donc sans frais supplémentaires. Le client VPN est sur une Raspberry Pi car c’est un ordinateur compact, peu cher et avec une faible consommation d’énergie. La Raspberry Pi a été branchée sur le routeur Wi-Fi et est allumée en permanence. Le service OpenVPN a été installé dessus et configuré pour se connecter automatiquement dès le démarrage au serveur. Le serveur VPN a été configuré pour permettre aux clients d’accéder au réseau du GAEC (cas d’usage très bien géré par OpenVPN). Il est désormais possible de se connecter à tout moment sur le réseau local de l’exploitation depuis Internet.

La configuration des clients est très simple. Il faut tout d’abord générer un certificat pour chaque client puis installer l’application « OpenVPN Connect » sur chacun d’eux. Cette application est disponible sous Android et iOS et permet de se connecter à un serveur OpenVPN. Pour utiliser la caméra en dehors du réseau local, il suffit de se connecter au serveur VPN puis lancer l’application de surveillance, elle fonctionne alors de la même façon qu’en Wi-Fi.

Capture d'écran de l’application de surveillance du troupeau