Graças a @ chris-s, resolvi minha própria pergunta usando o Avahi em vez de tentar rotear o tráfego multicast.
Isso funcionou para mim:
- Compile e instale
net/avahi
edns/nss_mdns
da árvore de ports. - Adicione
avahi_daemon_enable="YES"
edbus_enable="YES"
a/etc/rc.conf
- Use o arquivo de configuração avahi (
/usr/local/etc/avahi/avahi-daemon.conf
) e inclua minhas duas interfaces de rede internas (duas sub-redes internas) na chaveallow-interfaces
(separada por vírgula) e defina aenable-reflector
key parayes
para fazer propagação de avahi o tráfego para todas as redes internas. - Edite a entrada
hosts
em/etc/nsswitch.conf
tohosts: files dns mdns
Depois de iniciar o avahi daemon, você pode verificar se ele funciona diretamente fazendo uma pesquisa na máquina do servidor mdns:
root@server / # getent hosts apple-tv.local
10.0.1.4 apple-tv.local
root@server / # getent hosts iphone4s.local
10.0.2.27 iphone4s.local
root@server / # getent hosts ipad.local
10.0.2.22 ipad.local
Ou navegando no domínio .local com um utilitário como Navegador Bonjour ou iStumbler (ambos excelentes). Você deve poder ver dispositivos, hosts e serviços em todas as sub-redes.
Uma nota de rodapé é que meu estoque /etc/syslogd.conf
da instalação do FreeBSD 9.0 não registrou as mensagens de avahi-daemon
por padrão, então não vi nenhum registro no início (adicionei um seletor daemon.*
apontando para /var/log/daemon.log
)