Estou tentando configurar o pfSense como meu roteador de Internet principal, substituindo o roteador do provedor.
A conectividade básica com a Internet funciona como deveria: configurar a interface externa como um cliente DHCP, configurar um servidor DHCP para os clientes internos, configurar NAT – tudo bem.
No entanto, eu também gostaria de usar IPTV sobre o dispositivo. Meu ISP entrega IPTV usando uma VLAN separada na linha WAN. (O tráfego da Internet usa a VLAN nativa, portanto, não é necessário mexer nas VLANs aqui.)
O roteador ISP é configurado da seguinte forma:
- Uma ponte cujos membros são as portas internas para conectar o receptor IPTV e a terminação da VLAN IPTV na interface WAN
- A ponte tem um endereço IP vinculado a ela. É um endereço estático RFC1918, aparentemente sem gateway padrão configurado nessa interface.
- Além disso, o dispositivo executa um proxy IGMP que tem a ponte como suas interfaces upstream e as interfaces LAN (mesmo aquelas não destinadas a IPTV) como interfaces downstream. O Fast Leave está habilitado, o IGMP versão 2 é forçado no upstream e no downstream e os grupos multicast são ignorados para um endereço IP específico. Embora eu ache estranho que o upstream esteja configurado para ser a ponte inteira, não apenas a interface VLAN - pode ter a ver com o roteador suportando outras conexões de uplink também (estou em fibra óptica com o ONT conectado via Ethernet, aparentemente o dispositivo também suporta ATM sobre Ethernet, bem como ADSL).
O que eu fiz no pfSense:
- Em Interfaces > VLANs, adicione uma nova interface (
WANIPTV
) com a interface WAN como seu pai e o ID de VLAN apropriado. - Em Interfaces > Bridges, crie uma ponte com a
WANIPTV
interface e uma interface física não utilizada como seus membros. A ponte chama-seBRIDGE0
. - Em Interfaces > Atribuições, atribuído
BRIDGE0
como interface própria (IPTVBRIDGE
) e habilitado, comsem configuração de IPa mesma configuração de IP do roteador fornecido pelo provedor (endereço RFC1918, sem gateway). - Em System > Advanced > Tunables, defina
net.link.bridge.pfil_member
para 0 enet.link.bridge.pfil_bridge
para 1. Poisnet.link.bridge.pfil_onlyip
deixei o padrão de 0 para permitir o tráfego não IP. - Em Firewall > Regras, adicionei uma regra de passagem para a
IPTVBRIDGE
interface, combinando IPv4+IPv6, com todo o resto definido como QUALQUER. - Em Serviços > Proxy IGMP, habilitei o IGMP, adicionado
IPTVBRIDGE
como interface upstream e a porta física para o receptor como downstream. Não tenho ideia do que preciso inserir para Redes nas interfaces; Acabei de adicionar 0.0.0.0/1 e 128.0.0.0/1 para ambos. - Em seguida, adicionei qualquer regra de filtro para as interfaces envolvidas (
WANIPTV
,IPTVBRIDGE
e a interface física para o receptor).
Com essas configurações, consegui obter uma imagem por um curto período executando o receptor no roteador ISP e conectando o cabo WAN e o receptor IPTV ao meu pfSense. Depois de algum tempo, porém, a imagem congelou e, quando reiniciei o receptor, ele relatou que não havia conexão de rede disponível.
Como posso descobrir quais redes devo configurar para o proxy IGMP? Ou o problema está em outro lugar?
Depois de um pouco de mexer e pesquisar, acredito que finalmente descobri:
proxy IGMP
Para meu ISP, onde os dispositivos do consumidor parecem estar em uma rede comutada, o proxy IGMP não parece ser necessário.
YMMV e você ainda pode precisar disso se tiver uma conexão roteada do seu receptor de IPTV para os servidores upstream. Nesse caso, é assim que deve funcionar:
Configure a rede upstream para qualquer endereço IP válido com uma máscara o maior tempo possível (você deseja criar uma entrada sintaticamente válida que não corresponda a nenhum endereço IP realmente usado pelo seu serviço). Em seguida, vá para Status > Logs do sistema > Sistema > Geral e filtre por
igmpproxy
. Você deve ver um monte de mensagens como:Os endereços de origem são aqueles que você precisa permitir na interface upstream. Se você é paranóico, pode adicionar os endereços um por um, ou apenas adicionar intervalos de IP inteiros.
Descubra o endereço IP do seu receptor (talvez seja necessário conectá-lo a um roteador em funcionamento) e habilite-o no downstream.
Endereço IP local
Com o proxy IGMP desabilitado, o endereço IP local na
IPTVBRIDGE
interface também não é mais necessário. Depois de desabilitar o proxy IGMP, também removi o endereço IP.Regras de filtro
Nas regras de filtro da
IPTVBRIDGE
interface, certifique-se de expandir as opções avançadas e marcar “Permitir opções de IP”. Sem essa caixa marcada, os pacotes com opções de IP (necessários para serviços multicast, como IPTV) serão descartados por padrão.Se, como no meu caso, você não estiver executando um proxy IGMP e o pfSense estiver configurado para aplicar regras de filtro na ponte em vez de em suas interfaces de membro, você não precisará de nenhuma regra nas interfaces IPTV externas/internas.
Conclusão
Com isso, meu receptor de IPTV finalmente pega o fluxo, mesmo após uma reinicialização.
Depois que tudo funcionou, removi tudo o que se mostrou desnecessário (proxy IGMP, configuração de IP local na
IPTVBRIDGE
interface e regras de filtro nas interfaces de membro da ponte de IPTV). Para ter certeza, reiniciei a caixa de IPTV e deixei por ~ 15 minutos. Ainda posso assistir TV e não observei nenhum pacote descartado em nenhuma das interfaces relacionadas a IPTV.