Regarder la Télé Free derriere un Routeur Linux sans fastidieuse configuration des clients

Free utilise le protocole RTSP pour faire transiter le signal TV, dans le cadre du multiposte.

L’inconvénient du protocole RTSP est similaire à celui du FTP, un canal de commande sous forme d’une connexion TCP permet de définir un canal de données qui sera situé sur une autre connexion TCP.

Mais le protocole FTP à un avantage que n’a pas directement le RTSP, le mode Passif qui règles les principaux problèmes du FTP derrière un NAT.

Mais revenons au protocole RTSP : la solution que j’utilisais jusqu’à présent était de définir dans VLC un port statique différent sur chaque machine cliente et de définir des règles de port forwarding sur le routeur. Solution peu pratique lorsque la plupart des machines sont en DHCP ou lorsque des machines ne font que passer dans le réseau.

En recherchant un Proxy RTSP pour éviter cette configuration plus que fastidieuse, je suis tombé sur le travail de plusieurs développeurs à l’adresse http://mike.it-loops.com/, ou encore https://github.com/maru-sama/rtsp-linux-v2.6

Ils ont développé un filtre a intégrer au noyau Linux du routeur comme il en existe pour le protocole FTP.

Le code source est fournit, il ne vous reste qu’a le compiler. Cela vous donne un module à installer et à charger dans le noyau. (module nf_nat_rtsp). Tous les détails sont dans le fichier README.RST fournit avec le package.

Maintenant, n’importe quel PC présent sur le réseau peut accéder à la TV Free sans avoir a configurer, ni le routeur, ni le client.

Mon routeur x86 Low Power

Dans le but de diminuer mon impact énergétique, j’ai cherché a remplacer mon routeur qui se présentait sous la forme d’un PC classique équipé de deux cartes réseau par une machine x86 a base de processeur basse consommation.

Après une longue recherche, j’ai finalement trouvé une machine adéquate : Le Compulab Fit-PC2i.

On trouve facilement des PCs basse consommation depuis que le processeur ATOM d’Intel est sorti (grand fan des Acer REVO), sans compter les équivalents AMD, mais difficile d’en trouver ayant deux interfaces réseau.

J’ai installé le système d’exploitation (noyau Linux) sur une clef USB et monté certains points de montage directement en RAM de manière a optimiser le nombre d’écriture sur la clef USB.

/etc/fstab :

UUID=fcxxx... /               ext4    noatime,errors=remount-ro 0       1
tmpfs /tmp tmpfs defaults 0 0
tmpfs /var/tmp tmpfs defaults 0 0
tmpfs /var/log tmpfs defaults 0 0
tmpfs /var/www tmpfs defaults 0 0

On remarquera la présence du noatime sur le root pour éviter la mise a jour des dates d’accès au fichier qui écrirait sur la clef usb à chaque accès fichier.

A cela s’ajoute des scripts au démarrage du système pour remplir ces dossiers en RAM, d’autres s’exécutant a intervalle régulier (tous les jours par exemple) pour prévenir la perte de données lors d’arrêt non souhaité du routeur, ainsi que des scripts de sauvegarde au moment de l’arrêt du serveur.

Consommation :

Mesure avant : 70wh, Mesure après : 10wh

Autres alternatives :

J’avais auparavant tenté d’utiliser un routeur matériel (Linksys WRT-150N), compatible avec la distribution DD-WRT, mais malgré la grande ouverture du système, on se trouve vite limité par les capacité matérielles du routeur.