Encaminhando pacotes multicast no roteador wireless com fio nat

0

Estou recebendo IPTV (multicast) do meu provedor (Deutsche Telekom) e ele já está funcionando sem problemas para o receptor principal que está diretamente conectado ao meu roteador dsl (AVM Fritz! Box 7390).

Agora, há outro receptor que não pode ser conectado por fio ethernet. Então, eu tentei criar uma bridge com fio sem fio com meu notebook, o que não funciona, porque as pontes só podem incluir interfaces eth ou interfaces sem fio no modo master.

------------  wireless   ----------  wired  ----------
|dsl router|  )))   (((  |notebook|  -----  |receiver|
------------             ----------         ----------
                      wlan0       eth0

Receber multicast no meu notebook via interface sem fio wlan0 está funcionando bem (sinalizado com igmpv2!). Quando eu adiciono uma rota virtual para 224.0.0.0/4 via eth0, o aplicativo (media player vlc) está tentando ingressar em grupos de multicast sinalizando com igmpv3 (estou seguindo fluxos de tráfego com wireshark). Isso pode ser um problema para encaminhar pacotes multicast mais tarde?

O segundo receptor está diretamente conectado ao meu notebook. Não importa se eu percebo isso por roteamento nativo ou por nat'ing o tráfego saindo em wlan0: Unicast está funcionando bem, mas multicast não é encaminhado. O servidor DHCP está sendo executado no notebook e a diretiva de roteamento para a nova sub-rede também é adicionada ao roteador dsl. Eu também tentei adicionar rotas multicast no notebook (224.0.0.0/4 via dev eth0 e / ou via wlan0), mas eu não tive sucesso.

A solução mais fácil seria obter algum adaptador powerline que suporte igmpv3 e multicasting, mas eu gostaria de ter essas coisas trabalhando com o notebook como um roteador, porque mais tarde essa parte deveria ser tocada por um pi de framboesa.

É possível encaminhar pacotes multicast no linux? Quais regras são necessárias? Posso realizar a ponte eth com wlan0 gerenciado sem compilar minha própria versão do kernel?

Obrigado antecipadamente Erik

    
por erik 23.09.2013 / 09:14

1 resposta

1

Eu obtive uma solução de trabalho para o ambiente mencionado acima.

No notebook bridge, que está conectado à internet via wlan0 (192.168.2.0/24) e à nova subnet via eth0 (192.168.28.0/24), instalei tudo para que funcionasse como roteador. Por essa razão, adicionei uma rota estática no meu roteador dsl à nova sub-rede por meio do laptop. Se isso não for possível, você também pode aplicar uma regra NAT na ponte com o iptables:

sudo iptables -t nat -A POSTROUTING -o wlan0 -s 192.168.28.0/24 -j MASQUERADE

Depois, baixei o igmpproxy do link e o instalei (a documentação de instalação está incluída no arquivo README). Esta pequena ferramenta (versão recente é 0.1) funciona com IGMPv1 e v2, então forcei a bridge a usar v2 com:

sudo sh -c 'echo 2 > /proc/sys/net/ipv4/conf/wlan0/force_igmp_version'
sudo sh -c 'echo 2 > /proc/sys/net/ipv4/conf/eth0/force_igmp_version'

Agora, você precisa conhecer a rede de possíveis endereços IP de origem dos fluxos de multicast. No meu caso, a rede é 193.0.0.0/8. Eu criei um arquivo de configuração com este conteúdo:

quickleave
phyint eth0 downstream  ratelimit 0  threshold 1
phyint wlan0 upstream ratelimit 0 threshold 1
  altnet 192.168.2.0/24 # for local services
  altnet 193.0.0.0/8    # for multicast video streams

O igmpproxy pode ser iniciado usando:

sudo igmpproxy -d -vv <config_file_name>

Espero que você possa entender tudo sobre o que eu estava escrevendo. Aproveite.

    
por erik 24.09.2013 / 11:40