Forum Linux.général UPnP AV à travers un VPN

Posté par (page perso) .
Tags :
4
9
sept.
2012

Hello tout le monde!

Nous sommes confrontés avec un pote, à un problème assez difficile à déboguer…

Nous avons connecté nos réseaux locaux respectifs à travers un VPN : nous nous connectons tous les deux à un serveur VPN hébergé sur un serveur OVH (tun / udp) qui fait office de routeur. Nous sommes donc capables tous les deux, depuis nos réseaux, de pinger n'importe quelle machine directement depuis son IP locale sur le réseau auquel elle appartient.

Nous avons tous les deux sur notre réseau un serveur UPnP AV (un NAS Synology pour mon pote, un PC multimedia avec Serviio pour ma part). Nous avons également un client UPnP AV (une télé connectée pour ma part, la freebox player dans son cas).

Nous souhaitons donc tout naturellement réussir à utiliser chacun le serveur UPnP de l'autre… Nous avons passé la soirée sur ce sujet hier soir, et le meilleur résultat que nous avons pu obtenir, c'est d'avoir sur sa Freebox player l'affichage de mon serveur à moi, et de naviguer dans la liste des dossiers / fichiers. Par contre, quand nous avons tenté de lire un média, alors la freebox nous annonce (instantanément) qu'elle ne peut pas lire le média. Pour en arriver là, nous avons tous les deux compilé et démarré un démon UPnP Proxy.

Concernant la configuration réseau, voici l'état actuel des choses :
- pour ma part, je suis connecté au VPN depuis mon NAS Synology, mon routeur (NetGear DIR-825) utilise mon NAS pour accéder à tous les réseaux accessibles depuis le VPN (réseau local des machines virtuelles hébergées sur le serveur OVH, le réseau local de mes parents ainsi que celui de mon pote). Les machines de mon réseau local n'utilisent alors comme passerelle uniquement mon routeur
- pour sa part, il ne possède pas encore de vrai routeur, il a donc également son NAS qui fait office de client VPN, serveur dnsmasq (dhcp+dns) et de passerelle par défaut. c'est pas une solution propre, mais en attendant qu'il se procure un vrai routeur, ça fait le taff.

D'après nos recherches d'hier soir, nous avons l'impression qu'il faut configurer des adresses multicast, mais on avoue les bras levés être un peu pommés à ce sujet.

Nous sommes donc preneur de toute information utile à ce sujet, afin de débloquer la situation.

Merci à vous :)

  • # Peut-être passer à tap

    Posté par (page perso) . Évalué à 4.

    Est-ce que ça ne demanderais pas d'utiliser tap au lieu de tun, afin de mettre en place un bridge au niveau ethernet?

    http://openvpn.net/index.php/open-source/faq/75-general/309-what-is-the-difference-between-bridging-and-routing.html

    Python 3 - Apprendre à programmer en Python avec PyZo et Jupyter Notebook → https://www.dunod.com/sciences-techniques/python-3

    • [^] # Re: Peut-être passer à tap

      Posté par (page perso) . Évalué à 2.

      Hello,

      Merci pour ta réponse. Je me suis trompé en exposant mon problème. Nous sommes bien en tap (sur de l'UDP). Tous les clients ont donc une interface tapX avec une adresse IP en 172.17.0.0/24.

      Cette interface ne sert qu'à mettre en place un tunnel entre chaque client et le serveur. Ensuite, à travers ce tunnel, les seules adresses IP que l'on utilise sont les adresses IP du réseau local de chaque site (192.168.1.0/24 chez moi, 192.168.24.0/24 chez mon pote, etc…).

  • # Ajouter une route ?

    Posté par . Évalué à 3.

    Hello,

    Une idée de piste: ça ne passerais pas par multicast par hasard les flux UPnP ?

    Dans le paragraphe "Troubleshooting" du wiki MythTV, il est demandé de vérifier si l'on a bien une route pour le subnet 239.0.0.0/8 qui pointe sur la bonne interface (tun0 dans ton cas)

    A voir ….

    • [^] # Re: Ajouter une route ?

      Posté par (page perso) . Évalué à 2. Dernière modification le 10/09/12 à 11:01.

      C'est ce que nous avons conclu suite à nos recherches, mais le problème, c'est que nous ne savons pas trop où mettre cette route, et vers où la router.

      J'ai uploadé un schéma décrivant le réseau entier : http://imageshack.us/f/189/networkschema.png/

      Ce que nous avons essayé de faire, c'est que depuis la machine lappy (192.168.24.24) on puisse accéder au serveur UPnP AV que fourni la machine salon (192.168.1.31).

      Avec UPnP Proxy (installé respectivement sur pira et yoda), nous arrivions depuis lappy à naviguer dans la liste des dossiers / fichiers, mais pas à lire les médias.

      Nous faisions des tcpdump à ce moment là, et effectivement, nous avons vu des connexions avec des adresses IP avec une tête comme 239.0.0.0/8.

      Du coup, je pense que cette piste est plutôt bonne, il ne reste plus qu'à comprendre ce qui est attendu, afin de l'implémenter. Sauf que mes connaissances en multicast sont assez limitées, et je n'arrive pas à comprendre exactement ce qu'il faut faire… :(

      • [^] # Re: Ajouter une route ?

        Posté par . Évalué à 2.

        ben il faut mettre les routes de 239.0.0.0/8 sur les machines qui font traverser le VPN.

        pour dire de faire passer ce qui arrive sur le routeur au travers du vpn pour que ca arrose aussi de l'autre coté.

        • [^] # Re: Ajouter une route ?

          Posté par . Évalué à 2.

          Oui c'est ça.

          Le multicast reste pour le moment "bloqué" sur chaque réseau, il n'est pas routé.

          Tu as:

          lappy[==== Réseau 1: 192.168.24.0/24 ===] pyra (Router) [==== Réseau 2(VPN): 172.17.0.0/24===] yoda (Router)[==== Réseau 3: 192.168.1.0/24 ===] salon

          Si tu veux que ca marche je pense que tu as besoin des routes suivantes:
          * sur pyra: 239.0.0.0/8 sur tun(VPN) gw = yoda
          * sur yoda: 239.0.0.0/8 sur tun(VPN) gw = pira

          • [^] # Re: Ajouter une route ?

            Posté par (page perso) . Évalué à 2. Dernière modification le 10/09/12 à 13:40.

            Merci à toi et à NeoX pour ces précisions ! :)

            De ce que je comprends, c'est que sur chaque client VPN (donc dans notre cas, pira, yoda et meteor), il faut ajouter la route pour le multicast.

            Du coup, j'imagine qu'avec tout ça, tous les paquets correspondant au multicast vont attérir sur astatine (qui est notre serveur VPN, et qui route toutes les connexions).

            Il faudra donc également configurer cette machine pour que dès qu'elle reçoit un paquet multicast, elle arrose les autres réseaux ?

            Dans un premier temps, nous allons faire simple : on voudrait que si elle reçoit un paquet provenant du réseau de pira, elle arrose le réseau de yoda, et vice-versa. Du coup, j'imagine que c'est du simple iptables ou existe-t-il un genre de "broker" qui permettrait de forward des paquets multicast ?

            • [^] # Re: Ajouter une route ?

              Posté par (page perso) . Évalué à 3.

              C'est le rôle du routeur multicast, le client s'abonne à un flux, le routeur s'occupe de retrouver la source du flux.

              Système - Réseau - Sécurité Open Source

              • [^] # Re: Ajouter une route ?

                Posté par (page perso) . Évalué à 2.

                Ok,

                Donc si j'ai bien compris, voici ce que nous devons faire :
                - ajouter la route pour le réseau 239.0.0.0/8 sur les interfaces tap0 des machines pira et yoda (clients VPN), qui sont également utilisées pour router le trafic sur les réseaux locaux
                - configurer un serveur multicast sur astatine qui se chargera d'arroser les réseaux locaux dès qu'un paquet multicast arrivera d'une source ou d'une autre

                Avec ceci, du coup, n'importe quelle machine appartenant au réseau de yoda ou de pira pourra envoyer/recevoir des paquets multicast ?

                Si c'est bien ça, le seul truc pour lequel je dois me documenter est le routeur multicast :)

                Merci à vous

  • # debit adsl

    Posté par . Évalué à 1.

    Le débit en up load en ADSL est de 100KB/s , vous ne pouvez donc pas voir de vidéo avec un débit pareil !!!!

  • # Félicitations

    Posté par . Évalué à 1.

    Tu viens d'inventer l'UPnP2P \o/

    *Sano*

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.