Eu vi o seu arquivo de zona: parece ser uma lista de mais de 350k domínios, no momento, onde é definido o servidor BIND local como o mestre. Os domínios estão com o seguinte formato:
zone "xxxx.com" { type master; notify no; file "null.zone.file"; };
De acordo com os requisitos de memória, eu diria que você pode precisar de cerca de 40MB-80MB de RAM livre para isso, já que as tabelas de domínio são carregadas na memória. (embora eu me sentiria mais confortável com pelo menos 200MB)
A menos que o servidor esteja severamente restrito na RAM, parece um pouco improvável, mas pode acontecer.
Eu também notei que existem sublinhados ("_") no nome de vários domínios. Ter sublinhados no DNS RR quebra um par de RFCs (RFC 952 e RFC 1123), e você precisa adicionar à seção de opções BIND a diretiva:
check-names master ignore;
Quanto ao formato e método usados para os domínios da lista negra. A partir da versão 9.8, o BIND suporta o que é conhecido como Zonas de Política de Resposta (RPZ), que foram criadas especificamente para domínios de lista negra.
Vários provedores de listas negras (comerciais) seguem hoje esse formato. (Eu mesmo uso o RPZ no trabalho e em casa).
Usar RPZ deve fazer mais sentido e também significa uma carga mais leve e, como tal, se você está pagando o serviço, eu aconselho você a entrar em contato com seu fornecedor para saber como usá-lo. O formato RPZ também suporta, em certa medida, curingas, o que significaria um arquivo de lista negra muito menor.Uma alternativa é também processar o arquivo com um script para alterá-lo para o formato RPZ.
Vou deixar aqui links relevantes sobre RPZ e provedores oficiais de RPZ:
e um tutorial sobre como configurar o RPZ:
Como você deve ter notado, com a configuração atual, você também terá muitos arquivos abertos; daí eu recomendo novamente usando RPZ.
Para lidar com mais arquivos abertos, em grandes servidores de e-mail, DNS ou HTTP, os limites costumam ser aumentados.
A situação não é tão ruim quanto costumava ser com kernels mais antigos, mas mesmo assim eu recomendo aumentar os limites.
Edite /etc/sysctl.conf
e modifique / adicione a diretiva fs.file-max
para o limite global de arquivos abertos:
fs.file-max=500000
Para aplicar o novo limite de arquivo sem reinicializar, você precisa executar:
sudo sysctl -p
E para os limites de arquivos por processo, edite /etc/security/limits.conf
:
* - nofile 400000
Para aplicar os limites de arquivo por processo, faça logout e login ou execute:
sudo ulimit -n 400000
Depois de aumentar esses dois limites, você precisa reiniciar o BIND:
sudo service bind9 restart
Para converter seu arquivo para o formato RPZ, você executa:
cat bind | tr -d \" | awk ' { print $2" CNAME ." } ' > /etc/bind/rpz.db
O script converterá as entradas no seguinte formato:
zeus.developershed.com CNAME .
zeusclicks.com CNAME .
zintext.com CNAME .
Adicione na seção de opções de nome:
response-policy { zone "rpz"; };
Crie a declaração da zona RPZ:
zone "rpz" {
type master;
file "/etc/bind/rpz.db";
};
Adicione ao início do arquivo /etc/bind/rpz.db
:
$TTL 604800
@ IN SOA localhost. root.localhost. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
@ IN NS your_dns_fqdn.
Desconfigure o seu arquivo DNS e reinicie seu servidor BIND. Evidentemente, o arquivo RPZ pode ser otimizado com curingas e muito mais curto, mas mesmo sem essa otimização, agora você não precisará de tantos arquivos abertos.
Como para consultar os registros BIND / DNS, eles estão juntos com os logs do sistema em /var/log/syslog
com a tag named
. Você pode usar o comando:
sudo grep named /var/log/syslog