Multicast UPnp

Bonjour

Je vais tenter d’être clair…
Un fitpc sous debian me sert de: firewall (iptables), server apache, ftp, messagerie etc…
eth0 est coté LAN
eth1 est connecté a une freebox en mode routeur.

Je cherche a faire fonctionner UPnp à travers la debian
un tcpdump sur eth0 montre que les paquets 239.255.255.250 arrivent bien sur l’interface - mais la même chose sur eth1 ne donne rien. (iptables -F au prealable)

J’ai ajouté une route: 224.0.0.0 * 240.0.0.0 U 0 0 0 eth1
les parametres config:
CONFIG_IP_MROUTE=y
CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
CONFIG_IP_PIMSM_V1=y
CONFIG_IP_PIMSM_V2=y

mais un smcroute -d renvoi:
INIT: MC-Router IPv4 API already in use; Errno(98): Address already in use
INIT: MC-Router IPv6 API already in use; Errno(98): Address already in use
INIT: Kernel does not support multicast routing; Errno(92): Protocol not available

ma version: Linux fit 2.6.26-2-486 #1 Thu Nov 25 01:49:20 UTC 2010 i586 GNU/Linux

Je ne sais plus où chercher, si quelqu’un a une idée, je suis preneur :wink:

Merci

Hi,
Si j’ai bien saisi, mais en gros tu veux faire passer du multicast au travers d’un routeur c’est ça?
Si c’est cela et bien bon courage :stuck_out_tongue: .

Le multicast ne “passe pas” pas les routeurs en IPv4 ou en IPv6.
Du coup la piste de la route était bien tenté, mais je pense que cela ne peut pas fonctionner…

Deux solutions s’offre donc à toi si tu veux faire ça.
[ul]Faire un bridge solution simple mais qui anihile l’interet du firewall ^^
Faire du PIM (DM dans ton cas je pense) c’est à dire “monter un archi” avec des RendezvousPoint (RP) qui forward tes infos au travers des routeurs, et un système d’abonnement.
Après pas sur que dans ton cas le module UPnP de ta box soit très coopérative…[/ul]

Autre solution, dont je ne suis pas sur qu’elle soit vraiment viable, des règles iptables de forward en fonction de la destination et/ou de la source ( ce qui reviens à bridger mais sur l’UPnP uniquement).
Pas sur que cela fonctionne, mais sur que c’est bien degueu sur le principe :mrgreen:

Après il existe peut être des proxy UPnP…

Et oui je sais ça fait 4 et pas deux, mais je suis comme ça moi, je donne je donne… ^_^.

Merci beaucoup de ta réponse.

Doit on comprendre qu’il n’est pas possible, malgré les modules qui semblent fait pour, de faire du multicast forwarding sur une debian ?

Je trouve cela étrange.

Salut,
Je n’irais pas jusqu’à dire que ce n’est pas possible, mais dans ton cas cela me parait compliqué.
Dans les faits, pour que cela fonctionne, il faudrait que ton FW accepte les flux de multicast, en tienne compte, et qu’il les forwarde sur son autre interface.

Comme expliqué précédemment c’est faisable, mais pas très joli ( un exemple en bridge : en.onoclea.com/bits/linux-kvm-dl … route.html).

L’autre solution est de mettre en place du routage multicast avec PIM, mais cela me parait beaucoup pour juste de l’UPnP.

S’il faut creuser donc, je le ferais du coté du bridge qui sera surement plus simple à mettre en oeuvre.
En bidouillant un peu on peut surement arriver à une solution permettant l’upnp dans les deux sens mais aucun autre protocole multicast.
Si tu veux qu’on puisse regarder ensemble , pourrait tu nous fournir un mini schéma et un résumé des confs et tests que tu as mis en place stp.

Merci

merci c’est vraiment sympa !
L’archi est assez simple.
Une debian FW/GW (+ plusieurs role serveur) avec une eth0 sur un subnet en 10.x.x.x et une eth1 connecté a la freebox (192.168.1.x).

LAN (10.x.x.x) -> GW/FW (SNAT derriere eth1) -> Freebox

IPtables configuré avec : -A FORWARD -m pkttype --pkt-type multicast -j ACCEPT
Et freemi pour generer des paquets multicast sur 239.255.255.250

J’ai donc essayé de mettre une route “en dur” 224.0.0.0-240.0.0.0-eth1
Installé et essayé smcroute (smcroute -a eth0 0.0.0.0 239.255.255.250 eth1)
les tcpdump montrent les paquets arrivant bien sur eth0 en entrée et jamais sur eth1 en sorti…

Si je “court circuite” la debian, la freebox reponds au multicast…c’est donc celle ci qui bloque le traffic. le FW coupé, c’est identique…Donc un probleme de routage

Salut,

Euh pourrais tu tester ceci stp :

Activer la prise en compte du multicast et broadcast
#sysctl net.ipv4.icmp_echo_ignore_broadcasts

Controle du bon fonctionnement
ping 224.0.0.1

tu dois au moins avoir des réponses de ton propre PC.

Puis on rejoins le groupe multicast SSDP
smcroute -j eth0 239.255.255.250

Ensuite un ping la 239.255.255.250 depuis le réseau derrière eth0.

Et après ça
smcroute -a eth0 0.0.0.0 239.255.255.250 eth1

Et re ping, et on voit ce que ça donne.

Voila ++

Activer la prise en compte du multicast et broadcast
net.ipv4.icmp_echo_ignore_broadcasts = 0

Controle du bon fonctionnement ping 224.0.0.1
Reponse OK

Puis on rejoins le groupe multicast SSDP smcroute -j eth0 239.255.255.250
daemon error: Warn: ADD MEMBERSHIP failed; Errno(98): Address already in use
Apres un smcroute -k puis smcroute -d la commande est passée.

Et après ça: smcroute -a eth0 0.0.0.0 239.255.255.250 eth1 Puis ping
tcpdump -i eth0 host 239.255.255.250 = OK packet capturés sur eth0

tcpdump -i eth1 host 239.255.255.250 = aucun packet capturés sur eth0

tester avec iptables puis iptables -F

Lut,
Désolé pour le délai, j’ai passé la soirée d’hier et un partie de celle là à chercher une solution…
Et apparemment, smcroute n’est pas la bonne solution.

Mon analyse est la suivante :
tu ne peux manifestement utiliser smcroute pour joindre le même groupe sur deux interfaces simultanément.
Or pour que ton forwarding fonctionne, il faut que ton routeur considère que le trames le concerne.

J’ai essayé avec iproute (ip maddr et ipmroute) mais rien à faire.

Je pense que la solution dans ton cas est d’installé pimd.

Si cela te tente, on pourra essayer de le faire fonctionner.

Désole de ne pas pouvoir t’aider plus

++

Pas de problème pour le “délai” :slightly_smiling:
Il n’y a pas de délai car je ne suis pas dans l’urgence, c’est surtout pour découvrir.
De plus tu m’as proposé ton aide et c’est déjà très sympa…donc aucune contrainte.

J’ai installé PIMD, cherché les configurations du fichier .conf mais pas trouvé grand chose…Mais effectivement je constate que debian est un OS applicatif et non un OS router :slightly_smiling: C’est normal

Je sais qu’à une époque j’avais installé Quagga pour installer des protocoles de routage. ça ne fonctionnerait pas pour router du multicast ?

Salut,
Re désolé pour le délai, je suis sous l’eau en ce moment…

Bref, oui Quagga est une solution mais il s’agit simplement d’un framework pour piloter des daemon (ospfd par exemple).

J’ai pas encore eut le temps de maquetter ton cas, mais pour avancer, pourrais tu tester :
Sur une machine client UPnP de chaque cote faire un
ping 239.255.255.250

Et voir si paquets :
sont reçues et traités par chaque interface
Sont envoyés de l’autre coté.

Si cela ne fonctionne pas, pourrais tu faire la même chose après avoir lancé smcroute sur chaque machine cliente.

++

Tu peux eventuellement faire un bridge et exclure du bridge tout ce qui n’est pas du multicast via ebtables.