Rendre la Freebox vraiment multiposte
Par Puyb, samedi 4 février 2006 à 00:32 :: General :: #15 :: rss
A Noël dernier, Free a lancé une nouvelle fonctionnalité sur la Freebox. Elle peut désormais streamer les chaînes de TV directement sur le LAN.Cela permet donc de regarder la TV sur ses PC ;-) J'attendais cette fonctionnalité depuis longtemps. Je pensais que ça ne se ferait jamais car je sais que les chaînes et les ayant droits sont en général assez frileux avec les nouvelles technologies (qui a dit piratage)...
Comme a son habitude, Free a fait les choses bien... Plutôt que de nous mettre, comme c'est à la mode un seul flux crypté avec des DRMs et un protocole propriétaire, ils ont utilisé un protocole standard, le RTSP. Ce protocole est normalement compris par tous les bons lecteurs vidéo comme VLC et MPlayer. De plus ils n'ont pas limité a un seul flux... Dans la pratique, on peut regarder autant de flux que l'on peux en faire passer dans la liaison ADSL (voir dans le LAN si vous êtes en Wifi ou encore en Ethernet 10MBps (Freebox v3)). En bref, on peut regarder sans problème 2 ou 3 flux simultanément. Un miracle !!!
Free a appelé cette fonctionnalité Freebox Multiposte... Mais en pratique, c'est bien souvent monoposte... Je m'explique.
Le protocole RTSP a un fonctionnement particulier, assez proche de celui du FTP. Quand on veut regarder un flux, VLC ouvre une connexion TCP vers le port RTSP de la Freebox. Ce canal permet de mettre en place les paramètres de la diffusion. Le flux vidéo lui passe par une liaison en UDP émise par la Freebox. Le port de destination de cette transmission en UDP est normalement tiré au sort par VLC en envoyé vers la Freebox... Dans une configuration monoposte, ça marche très bien... Mais dès que l'on met un routeur (NAT) entre les deux, le flux UDP ne peut arriver jusqu’à l'ordinateur qui la demandé...
La solution proposé par Free est une version modifié de VLC qui restreint la plage de port UDP qu'elle va utiliser, tout en routant cette page de port (DNAT) vers le PC. Le routage étant statique, on retombe dans une configuration monoposte.
La solution est d'avoir un routeur firewall intelligent qui soit capable d'écouter les transactions RTSP et d'ouvrir le port demandé de façon dynamique. Cela existe déjà pour le FTP par exemple. Sous Linux, il existe une série de modules iptables appelé conntrack (Connexion tracking, soit Suivit de connexion), chargé justement de faire cela...
En fouillant dans les sources du kernel, on trouve bien une série de modules de conntrack pour le FTP ou IRC... Mais rien pour le RTSP...
Il existe en fait un tel module sur le site d'iptables, mais il n'est pas intégré au kernel, il faut donc le patcher...
J'ai décidé de le faire pour une distribution OpenWRT, afin de pouvoir continuer à utiliser mon ASUS WL500g comme routeur, et éviter de devoir mettre un PC dans le salon...
Voici en gros comme je m'y suis pris :
- J'ai téléchargé les sources de la distribution OpenWRT.
- J'ai patché les sources avec ce patch.
wget http://downloads.openwrt.org/whiterussian/rc4/whiterussian_rc4.tar.bz2 tar jxvf whiterussian_rc4.tar.bz2 wget http://perso.ens-lyon.fr/benoit.boissinot/rtsp.diff cd openwrt patch -p0 <../rtsp.diff make menuconfig
J'ai activé, notamment, les modules iptables supplémentaires (iptables-extra)... Ensuite, j'ai lancé la compilation :make
Le Makefile se charge alors télécharger, patcher, compiler, packager tout... C'est magique...
La compilation finie, il n'y a plus qu'a flasher le router avec l'image correspondant à son modèle (présente dans le répertoire bin)... Le répertoire bin/package contient les packages (on s'en serait douté ;-) ). Il faut juste les copier sur un serveur web... - Une fois OpenWRT booté, et configuré selon les besoins de votre réseau, il faut installer le paquet kmod-ipt-nat-extra et lancer les modules.
Après avoir modifier votre /etc/ipkg.conf pour ajouter l'url du serveur ou vous avez ranger les paquets :ipkg install kmod-ipt-nat-extra modprobe iptables-conntrack-rtsp modprobe iptables-nat-rtsp echo "ip_conntrack_rtsp" >> /etc/modules echo "ip_conntrack_ftp" >> /etc/modules echo "ip_nat_rtsp" >> /etc/modules echo "ip_nat_ftp" >> /etc/modules
Magique !
Update 26/02/2006 : J'ai mis en lignes les binaires que j'ai généré.
Commentaires
1. Le dimanche 26 février 2006 à 14:48, par mala116
2. Le mardi 7 mars 2006 à 14:36, par giov
3. Le jeudi 30 mars 2006 à 22:01, par doudou
4. Le samedi 1 avril 2006 à 10:30, par Puyb
5. Le mardi 31 octobre 2006 à 11:41, par thoms
6. Le dimanche 21 février 2010 à 15:26, par CDuv
7. Le lundi 22 février 2010 à 13:15, par Puyb
Ajouter un commentaire