Du côté du routeur linux

Problème de communication entre la mafreebox.freebox.fr et la machine cliente censé diffuser la video

Lorsque je tente de regarder un flux video depuis ma freebox sur mon pc j'obtenais ce message :

Sending request: SETUP rtsp://212.27.38.253/freeboxtv/202 RTSP/1.0
CSeq: 3
Transport: RTP/AVP;unicast;client_port=35982-35983
User-Agent: VLC Media Player (LIVE555 Streaming Media v2005.10.05)


Received SETUP response: RTSP/1.0 453 Not Enough Bandwidth
Cseq: 3
Server: fbxrtspd/1.0 Freebox minimal RTSP server


[00000269] livedotcom demuxer error: PLAY failed No RTSP session is currently in progress

[00000268] main input error: no suitable access module for `rtsp://mafreebox.freebox.fr/freeboxtv/202'
[00000259] main playlist: nothing to play

En effet la freebox nous informe que la session RTSP passera par les ports 35982-35983, nous allons donc plus bas rediriger ces 2 ports vers la machine chargé de récupérer le flux video.

Forwarde des ports udp demandés

# for PORT in `seq 35982 35983`
do
iptables -A INPUT -p udp --dport ${PORT} -j ACCEPT
iptables -t nat -A PREROUTING -p udp --dport ${PORT} -j DNAT --to-destination 192.168.1.44:${PORT}
done
#

Une fois ce forwarde fait, je peux relancer mon client vlc, et je suis tout à fait capable de regarder la télé depuis mon portable derrière le firewall.

Règles iptables mises en place sur mon routeur linux

set_freebox_multiposte_rules()
{
        IPADDR="192.168.1.44" # freeplayer client
        PORTS="`seq 35000 36000`"
        iptables -A INPUT -p udp -s mafreebox.freebox.fr -j ACCEPT
        for PORT in ${PORTS};
        do
         iptables -A INPUT -p udp --dport ${PORT} -j ACCEPT
         iptables -t nat -A PREROUTING -p udp --dport ${PORT} -j DNAT --to-destination ${IPADDR}:${PORT}
        done
}

Utilisation du module rtsp conntrack dans le noyau linux

Pour l'instant j'ai juste vu quelques sites qui en parlaient, mais en visualisant les options offertes par make menuconfig dans un noyau linux 2.6, je ne vois rien en rapport avec le tracking du protocole rtsp.

Mais il est sur que ca serait beaucoup plus intéressant de passer par cette méthode de conntrack plutôt que rediriger une suite de port sans jamais être sur que le serveur de streaming renvoit sur ces port.

Une autre solution serait de réussir à forcer vlc à utiliser toujours les mêmes ports udp pour faire passer l'information.

Du côté du client multiposte

Plusieurs possibilités toutes basées sur vlc dans l'ensemble qui globalement exécuteront ce genre de commande :

$ vlc rtsp://mafreebox.freebox.fr/freeboxtv/201

Exemple qui permet de regarder France 2.

Sinon voici quelques url, sur des solutions un peu plus complètes qui permettent de visualiser les chaines disponibles et de récupérer des informations sur les programmes en cours :

http://myfreetv.sourceforge.net/