Vidéos UPnP AV / DLNA sur sa Freebox HD avec un routeur externe ?
J’ai toujours utilisé un routeur dédié (un Linksys WRT54G) entre ma Freebox et les ordinateurs de mon domicile (pour plus de fonctionnalités que celles proposées par cette dernière)
Mais lorsque l’opérateur Free à rendu possible l’UPnP AV (aussi connu sous le nom de DLNA) afin d’accéder à des films, séries TV, photos, musiques, etc. sur sa télévision depuis la Freebox v5/HD alors qu’elles sont stockées sur son ordinateur par exemple, j’ai été mis de côté car le fonctionnement même de la communication entre les deux boitiers rendait impossible l’accès à mon serveur de contenus (Mediatomb, PS3 Media Server, XBMC, etc.).
Heureusement, il existe des solutions…
Diverses solutions
Mon routeur tourne sous le firmware DD-WRT, ce qui permet plus de réglages que la version d’origine de Linksys, certaines des solutions que vous pourrez trouver sur le net tirent parti des possibilités d’ouvertures de port, de l’IGMP ou encore de xxx. Voici quelques exemples d’articles/fils de discussion intéressants :
- « Freebox : UPnP sans mode routeur ! » sur nbox.org
- « Freebox, UPnp Av et routeur Linksys » sur NoNoBzH weblog
- « Freebox et UPnp Av derrière un routeur externe » sur josDBlog
- « Upnp AV et routeur EXTERNE » sur le forum d’Univers Freebox
La solution qui va bien dans mon cas : Les VLANs
Notes : Ma Freebox ADSL, pour des besoins tout autres que ceux concernant l’accès DLNA, est configurée en mode routeur, j’ai donc un premier réseau privé (192.168.42.0/24) au niveau des ports Ethernet de ma Freebox, réseau auquel mon routeur Linksys appartient donc, puis un second réseau privé “après” le Linksys. Comme Free permet, via l’interface web d’administration de sa Freebox de définir une adresse IP DMZ, une telle configuration est triviale et sans impact sur l’accès à Internet.
J’ai choisi une tout autre solution: je voulais, naïvement, que la Freebox HD soit dans le même réseau que mon serveur et pour ça je suis passé par les Ns.
En effet, en analysant les trames circulant entre les deux boitiers Freebox à l’aide du logiciel d’analyse de paquets/trames réseau Wireshark et d’un switch avec fonction de port mirroring (vous pouvez aussi utilisez un HUB, ou encore plus simple : regarder ce qu’il se trouve déjà à ce sujet sur le net) on se rend compte que la Freebox ADSL utilise l’adresse IP 192.168.27.14 et que la Freebox HD l’adresse 192.168.27.1, le tout sur le VLAN d’ID 100.
Je m’était dit qu’en plaçant mon serveur dans ce VLAN, avec une adresse IP proche (disons 192.168.27.8) la Freebox HD pourrait le voir et communiquer avec lui : mais ça n’a pas fonctionné, la page “Magneto” restait désespérément vide de périphériques réseau.
Finalement, j’ai fait ce que Free voulait : j’ai mis mon serveur dans le réseau privé “fourni” par la Freebox ADSL… Enfin pas exactement, je n’y ai mis qu’une (petite) “patte” à l’aide de VLAN et de parefeu.
Explications
J’ai créé un VLAN (eg. d’ID 42) dans lequel j’ai mis deux ports. J’ai utilisé un switch déjà présent dans mon installation réseau, mais c’est faisable avec un routeur ASUS, Belkin, Linksys, Netgear, sous DD-WRT, OpenWrt, Tomato, … : Les deux ports de ce VLAN sont celui où est branché mon serveur et un port libre que je vais relier à l’un des port de ma Freebox, on obtient alors le montage suivant :
Ensuite, je configure mon serveur pour qu’il utilise ce VLAN sur une interface dédiée et uniquement pour le serveur UPnP AV (Mediatomb dans mon cas).
Etapes
Données de départ pour compréhension :
- Le serveur est sur le port 3
- Le port libre que je vais pouvoir utiliser est le port 4
- La Freebox ADSL a pour adresse IP 192.168.42.254/24
C’est partit…
Créer un nouveau VLAN de VID 42 par exemple et y placer les ports 3 et 4
Configurer le port 4 pour qu’il n’appartienne qu’au seul VLAN 42 (question de sécurité) et que les trames Ethernet soient untaggé en sortie de port
Relier le port 4 du switch sur un port du switch de la Freebox ADSL (peu importe lequel, sauf le jaune, normalement réservé à la Freebox HD)
Installer, si besoin, le support des VLANs sur son serveur (
aptitude install vlan
sur une Debian), le module kernel “8021q” est requisCréer l’interface dédiée et la configurer sur une adresse IP libre du réseau de la Freebox ADSL (eg. 192.168.42.1/24) :
1 2 3
vconfig add eth0 42 ifconfig eth0.42 192.168.42.1 netmask 255.255.255.0 broadcast 192.168.42.255 ifconfig eth0.42 up
Configurer son serveur pour qu’il utilise cette interface : Pour Mediatomb, il faut l’utiliser exclusivement (cf. note plus bas) ce qui se fait, sous Debian, en modifiant le fichier
/etc/default/mediatomb
afin d’avoir :INTERFACE="eth0.42"
Sécurisation avec iptables : On accepte les communications provenant de la Freebox vers le serveur (sur son interface dédiée) pour Mediatomb (TCP 49152) :
1
iptables --table filter --append INPUT --in-interface eth0.42 --source 192.168.42.254 --destination 192.168.42.1 --protocol tcp --dport 49152 --jump ACCEPT
On accepte les communications provenant du serveur pour Mediatomb (TCP 49152) :
1 2
iptables --table filter --append INPUT --in-interface eth0.42 --source 192.168.42.1 --destination 239.255.255.250 --protocol udp --dport 1900 --jump ACCEPT iptables --table filter --append INPUT --in-interface eth0.42 --source 192.168.42.254 --destination 239.255.255.250 --protocol udp --dport 1900 --jump ACCEPT
On refuse tout le reste provenant du réseau Freebox :
1
iptables --table filter --append INPUT --in-interface eth0.42 --source 192.168.42.0/24 --jump REJECT
Redémarrer le serveur DLNA et allumer la Freebox pour le voir apparaître dans la section “Périphériques réseau” du Magneto
Profiter d’un bon film ou d’une bonne série sans avoir à, préalablement copier le fichier sur le disque dur (cf. mon script pour monter le disque dur de la Freebox directement sur son serveur)
Inconvénients
Malheureusement, il y a quelques inconvénients à cette méthode :
- “Consomme” un port Ethernet sur son routeur/switch
- Configuration parefeu/iptables spécifique
- Si Mediatomb, serveur inaccessible au réseau privé principal (celui de son routeur) car, en version 0.12.0 en tout cas, ne sait pas écouter plusieurs interfaces/IP
Si vous aimez le contenu, vous pouvez aider
Sponsor