natd é uma péssima pedida. Ele é um daemon que roda no espaço do usuário (user-space), ou seja, gera um overhead do caralho pois para cada pacote que recebe precisa fazer chamadas ao kernel para executar a transliteração de endereço.
Recomendo usar ou o ipfilter ou o pf, pois o PNAT será executado dentro do kernel.
Rodem o top no roteador (PC funcionando como roteador) de vocês. Verão que o natd consome uma boa parte do tempo da CPU. Boa mesmo. Na máquina mais ocupada da nossa rede era 70% para cima nos horários de pico.
Verão também que há muitas interrupções sendo geradas. Nisso já dá 80%~85% de utilização da CPU. Eu pingava o roteador nesses horários e era latência acima de 100ms com picos de 300~400ms.
Fiz algumas coisas: ativei o POLLING nas interfaces de rede, ajustei o HZ em 1000 e passei a utilizar o ipnat.
Pronto. idle batia 98% e as latências mesmo em horário de tráfego intenso não saíam de 1~5ms.