Esta técnica sempre funcionou muito bem com redes pequenas com até 40 máquinas mas surgiu um problema quando empreguei a mesma técnica com uma rede de mais de 500 máquinas.
Após alguns munitos de operação o sistema começava a dar uma mensagem de erro "Neighbour table overflow" a rede começava a ficar lenta até parar de vez.
Após muito pesquisar descobri o que ocorria, o kernel ao ter que manipular uma enorme quantidade de requisições ARP gerava uma tabela ARP gigantesca e por default ele não manipula tabelas superiores a 1024 entradas, passando disso ele provocava um transbordamento da tabela ARP que paralizava o sistema.
A solução para o problema foi a seguinte:
Alteramos o valor de entradas ARP que o Kernel pode suportar para seu limite máximo da seguinte forma.
echo 16384 > /proc/sys/net/ipv4/neigh/default/gc_thresh1
echo 32768 > /proc/sys/net/ipv4/neigh/default/gc_thresh2
echo 65535 > /proc/sys/net/ipv4/neigh/default/gc_thresh3
Pronto, basta inserir as linhas acima em seu rc.local antes que seu firewall seja levantado.
No meu caso as inseri no /etc/rc.d/rc.S do Slackware 10.2 antes mesmo da inicilização das interfaces de rede.
Está funcionando pefeitamente desde então.
Até a próxima! E um fraternal abraço a todos.