Eu tenho o servidor unifi executando todos os meus pontos de acesso em uma rede. O host do controlador fica em algumas redes, mas apenas um deles deve ser usado pelo unifi. Obviamente, o servidor não tem opções para controlar quais interfaces ele usa. E está espalhando multicast nas redes erradas.
Eu tentei apenas bloquear todas as multidões não brancas da lista de permissões, assim:
iptables -A OUTPUT -d 224.0.0.0/4 -j DROP
Isso parece ser algo óbvio para mim, e funciona, exceto que eventualmente o controlador unifi entra em um loop (sem sleep () aparentemente) e continua tentando encher o soquete para interfaces que eu não quero Ele está falando - obrigado strace para esta revelação. Então o servidor estava com 100% da CPU, apenas por causa de uma regra -j DROP no iptables. Puro.
Estou procurando uma maneira de descartar os pacotes sem bloqueá-los (ou seja, o unifi acha que os pacotes saíram) ou redirecioná-los para interfaces aceitáveis. Mesmo que seja mal conseguido, é melhor do que deixá-lo cair nas redes erradas.
E, para esse fim, eu também tentei guiá-los e rotea-los para loopback, mas os pacotes saíram da interface errada, ignorando as rotas. Eu acho que eles abrem soquetes nas interfaces diretamente ou algo assim.
iptables -t mangle -A PREROUTING -d 224.0.0.0/4 -j MARK --set-mark 666
ip rule add fwmark 666 table 666
ip route add 224.0.0.0/4 dev lo table 666
Estou usando a tabela de roteamento e as marcas fw para garantir que eu não direcione nulo a nenhum multicast desejado (na lista de permissões de outro local).
Eu acho que o unifi ignora a tabela de roteamento. O set-mark estava disparando (contagens de pacotes ENORMES), mas os pacotes continuavam a sair das interfaces indesejadas. Regras semelhantes para outros multicasts parecem funcionar bem. É algo que o unifi horrível está fazendo (soquete ip bruto talvez?).
Não é realmente uma questão importante. Eu simplesmente mudei os serviços para um vm diferente que tem apenas uma interface; mas gostaria de saber como poderia fazer isso por motivos acadêmicos. Parece que deve haver uma maneira de limitar os aplicativos às interfaces que você deseja que sejam limitadas.