Postado originalmente por
Avenger
Sem querer desbancar o guilherme, mas eu discordo dele. Independente da regra que você tiver no iptables, você não vai conseguir controlar a tabela ARP por esse ou aquele filtro, não. Quando tem uma entrada ARP com 'incomplete', é que seu firewall mandou um pacote para um IP, que não pode ser alcançado na rede local (e que não tem rota para ele sair por algum gateway). Independente do filtro do firewall, essa tabela ARP pode ser preenchida, por exemplo, se você coloca um filtro no prerouting para não receber pacotes de qquer IP, mas se você manda um pacote prá ele, lá está ele com o (incomplete) ou endereço MAC... Se você mantém o filtro na PREROUTING, com regra -J DROP para um IP, a partir desse IP dropado, você consegue pegar o MAC do gateway sem problemas... então seguindo essa teoria, você não vai conseguir manter a tabela ARP limpa. Talvez um filtro na 'corrente' output (tabela filter), você previna da máquina mandar pacotes afim de 'requisitar' os MACs dessa ipzada, mas se é alguma máquina da rede que está spoofando os IPs rapidamente ao mandar pacotes, irá novamente aparecer a listaiada MAC na tabela ARP do firewall.
O que pode estar acontecendo, é que algum cliente está com vírus, mandando pacotes prá muita gente, e estourando sua tabela MAC. Se por acaso seu firewall ficar muuito lento, até perdendo pacotes enquanto está dando esse problema, tente, um por um, filtrar (com uma regra simples no prerouting de DROP mesmo) seus clientes, a partir do -m mac --mac-source <arp_do_cliente> ou a partir do IP dele mesmo, uma hora você vai ver uma abrupta melhora na rede e descobrir qual é o cliente que está 'embaçando' a rede com vírus.
Um jeito fácil de levantar qual pode ser o cliente, é usando o IPtraf e vendo se tem algum determinado IP mandando mais pacotes que os outros... daí você tenta filtrar a partir desses IPs mais 'abusados' prá descobrir qual é de forma mais fácil.
Outra coisa que eu já vi encher esses endereços MACs é um AP wireless, o SWL3300, mas ele não manda para tantos a ponto de prejudicar o funcionamento do gateway, ficam apenas uns 15-30 mac's incompletos.
Mais uma coisa: pode ser que a máscara de sub-rede utilizada por você esteja fazendo as entradas de MAC aumentarem; se seus clientes usam 10.0.0.x como ip, coloque uma máscara 10.0.0.0/24 na sua eth0; se você usa cada cliente numa classe-c (10.0.x.y) onde X é associado a cada cliente, e y normalmente você usa apenas um por cliente, o que você pode fazer é vários IP aliases reduzindo então as proporções do problema. Daí você configuraria eth0 como 10.0.0.0/24, eth0:0 como 10.0.1.0/24, eth0:1 como 10.0.2.0/24... e assim por diante.
Note que 10.0.0.0/24 é igual a 10.0.0.0 / 255.255.255.0.
Espero que ajude! Eu também trabalho em provedor de internet e tenho umas situações bem proximas às que você deve estar passando aí.