17 min de leitura · Guia técnico
Solucionar erros de DNS no Bind9 no Rocky Linux 9 exige validar /etc/named.conf e os arquivos de zona, revisar os logs do serviço e testar consultas locais com dig. Na prática, a correção normalmente envolve identificar a linha com erro de sintaxe, ajustar recursão ou ACLs e recarregar a configuração com rndc.
- Verifique o status do serviço com
systemctl status named - Valide o arquivo de configuração principal com
named-checkconf - Valide cada arquivo de zona com
named-checkzone - Consulte os logs detalhados em
journalctl -u named - Teste a resolução local com
dig @127.0.0.1 seudominio.com A - Recarregue as zonas sem downtime com
rndc reload
Pré-requisitos para solucionar erros de DNS no Bind9
- Sistema operacional: Rocky Linux 9 (testado também no AlmaLinux 9)
- Bind9 instalado: pacote
bindebind-utilsviadnf - Acesso root ou sudo ao servidor
- Ferramentas de diagnóstico:
dig,nslookuperndcdisponíveis - Porta 53 liberada no firewall (TCP e UDP) para consultas DNS
- Conhecimento básico da estrutura de arquivos de zona DNS (registros SOA, NS, A, MX)
Se você ainda não configurou o acesso ao seu servidor, consulte o guia Acessando servidores VPS Linux da AviraHost antes de prosseguir.
Diagnóstico inicial no Rocky Linux 9: verificando o estado do serviço named
O primeiro passo no diagnóstico de falhas no servidor DNS autoritativo é confirmar se o daemon named está em execução e identificar a causa raiz da falha antes de qualquer alteração.
Execute o comando abaixo para verificar o estado atual do serviço:
systemctl status named
● named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; enabled)
Active: failed (Result: exit-code)
Process: 12345 ExecStart=/usr/sbin/named -u named $OPTIONS (code=exited, status=1/FAILURE)
Quando o serviço aparece como failed, o próximo passo é examinar os logs completos do systemd para identificar a linha exata do erro:
journalctl -u named --since "1 hour ago" --no-pager
named[12345]: /etc/named.conf:42: missing ';' before '}'
named[12345]: loading configuration: failure
named[12345]: exiting (due to fatal error)
O Bind9 no Rocky Linux 9 registra erros com o número de linha exato do arquivo problemático. Anote essa informação antes de prosseguir para a validação dos arquivos de configuração.
Verifique também se o processo está escutando na porta 53:
ss -tulnp | grep :53
udp UNCONN 0 0 127.0.0.1:53 0.0.0.0:* users:(("named",pid=12346,fd=20))
tcp LISTEN 0 10 127.0.0.1:53 0.0.0.0:* users:(("named",pid=12346,fd=21))
Se nenhuma linha aparecer, o serviço não está em execução ou está vinculado a uma interface incorreta.
Validando a configuração do Bind9 no Rocky Linux 9 com named-checkconf e named-checkzone
A validação da sintaxe do arquivo de configuração principal é a etapa mais crítica no processo de resolução de problemas do servidor de nomes. O named-checkconf analisa o named.conf e todos os arquivos incluídos via diretiva include.
named-checkconf /etc/named.conf
(sem saída = configuração válida)
Se houver erro, a saída será semelhante a:
/etc/named.conf:15: unknown option 'recusion'
Neste caso, a opção recusion está com erro de digitação — o correto é recursion. Corrija o arquivo com um editor de texto:
vi /etc/named.conf
Após corrigir o named.conf, valide cada arquivo de zona individualmente. A sintaxe do named-checkzone exige o nome da zona e o caminho do arquivo:
named-checkzone seudominio.com /var/named/seudominio.com.zone
zone seudominio.com/IN: loaded serial 2024010101
OK
Se houver erro no arquivo de zona:
/var/named/seudominio.com.zone:8: no owner
zone seudominio.com/IN: loading from master file /var/named/seudominio.com.zone failed: no owner
zone seudominio.com/IN: not loaded due to errors.
O erro no owner indica que um registro está sem o nome do host na coluna correta. Verifique a linha 8 do arquivo de zona e certifique-se de que cada registro tem o campo de nome preenchido ou usa @ para representar a raiz da zona.
Para referência sobre como configurar registros DNS corretamente, consulte o artigo Como Configurar DNS Personalizado para Seu Domínio na AviraHost.
Estrutura correta de um arquivo de zona no Bind9
Erros de sintaxe em registros de zona são a causa mais frequente de falhas no servidor DNS autoritativo. Um arquivo de zona bem formado no Rocky Linux 9 segue esta estrutura:
$TTL 86400
@ IN SOA ns1.seudominio.com. admin.seudominio.com. (
2024010101 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum TTL
@ IN NS ns1.seudominio.com.
@ IN NS ns2.seudominio.com.
ns1 IN A 203.0.113.10
ns2 IN A 203.0.113.11
@ IN A 203.0.113.10
www IN A 203.0.113.10
mail IN A 203.0.113.12
@ IN MX 10 mail.seudominio.com.
Pontos críticos que causam erros com frequência:
- Ponto final ausente: FQDNs como
ns1.seudominio.comsem o ponto final são interpretados como relativos à zona, gerandons1.seudominio.com.seudominio.com - Serial desatualizado: após qualquer alteração, o número serial do SOA deve ser incrementado; caso contrário, servidores secundários não sincronizam
- Tabulação vs. espaço: o Bind9 aceita ambos, mas misturar pode causar erros de parsing em algumas versões
- Registro SOA incompleto: parênteses não fechados no bloco SOA causam falha imediata no carregamento da zona
Após corrigir o arquivo de zona, sempre execute named-checkzone antes de recarregar o serviço.
Testando a resolução DNS com dig e nslookup
Após confirmar que a configuração está sintaticamente correta, o próximo passo é verificar se o servidor de nomes está respondendo consultas DNS de forma funcional. O utilitário dig é a ferramenta mais precisa para este diagnóstico.
Consulte diretamente o servidor local para um registro A:
dig @127.0.0.1 seudominio.com A
; <<>> DiG 9.16.23-RH <<>> @127.0.0.1 seudominio.com A
;; ANSWER SECTION:
seudominio.com. 86400 IN A 203.0.113.10
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; MSG SIZE rcvd: 56
;; status: NOERROR
O campo status: NOERROR confirma que o Bind9 está respondendo corretamente. Teste também registros MX e NS:
dig @127.0.0.1 seudominio.com MX
dig @127.0.0.1 seudominio.com NS
Para verificar a recursão (resolução de domínios externos), teste com um domínio público:
dig @127.0.0.1 google.com A
Se a recursão falhar, verifique se a opção recursion yes está habilitada no bloco options do named.conf e se os forwarders estão acessíveis:
options {
directory "/var/named";
recursion yes;
allow-query { localhost; 192.168.0.0/24; };
forwarders {
8.8.8.8;
1.1.1.1;
};
forward only;
};
Atenção: a diretiva allow-query restringe quais clientes podem fazer consultas ao servidor. Se estiver muito restritiva, clientes legítimos receberão REFUSED. Ajuste o bloco para incluir as redes que devem ter acesso.
Verifique a acessibilidade dos forwarders a partir do servidor:
dig @8.8.8.8 google.com A
;; status: NOERROR
;; Query time: 12 msec
Se este comando falhar, o problema está na conectividade de rede do servidor, não no Bind9.
Recarregando zonas e configurações sem downtime
Em ambientes de produção que atendem múltiplos domínios, reiniciar o serviço named causa uma breve interrupção nas respostas DNS. O utilitário rndc (Remote Name Daemon Control) permite recarregar configurações e zonas sem interromper o daemon.
Para recarregar todas as zonas após uma alteração:
rndc reload
server reload successful
Para recarregar apenas uma zona específica (mais eficiente em servidores com muitas zonas):
rndc reload seudominio.com
zone reload up-to-date
Se você alterou o named.conf (não apenas os arquivos de zona), use:
rndc reconfig
server reconfiguration successful
O rndc reconfig relê o named.conf e adiciona ou remove zonas conforme necessário, sem reiniciar o daemon. Para verificar as estatísticas do servidor em tempo real:
rndc status
version: BIND 9.16.23-RH (Extended Support Version)
running on hostname: servidor.seudominio.com
boot time: Mon, 01 Jan 2024 10:00:00 GMT
last configured: Mon, 01 Jan 2024 10:05:00 GMT
number of zones: 5 (0 automatic)
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/900/1000
tcp clients: 0/150
server is up and running
Atenção: se o rndc retornar rndc: connect failed: 127.0.0.1#953: connection refused, o canal de controle do Bind9 não está configurado. Verifique se o bloco controls está presente no named.conf e se o arquivo /etc/rndc.key existe e tem as permissões corretas.
Configurando o firewall no Rocky Linux 9 para o Bind9
Um erro frequentemente ignorado no diagnóstico de problemas de resolução de nomes é a ausência das regras de firewall corretas. O Rocky Linux 9 usa o firewalld por padrão, e a porta 53 deve estar liberada tanto em TCP quanto em UDP.
Verifique as regras atuais:
firewall-cmd --list-all
public (active)
services: cockpit dhcpv6-client ssh
ports:
Se o serviço dns não aparecer na lista, adicione-o:
firewall-cmd --permanent --add-service=dns
firewall-cmd --reload
success
success
Confirme que a porta 53 está acessível externamente usando dig a partir de outra máquina:
dig @IP_DO_SERVIDOR seudominio.com A
Se o SELinux estiver habilitado (padrão no Rocky Linux 9), verifique se ele está bloqueando o Bind9:
ausearch -c named --raw | audit2allow -M named_local
semodule -i named_local.pp
Para verificar o status do SELinux sem desabilitá-lo:
getsebool -a | grep named
named_tcp_bind_http_port --> off
named_write_master_zones --> on
Se o Bind9 precisar escrever em zonas dinâmicas, certifique-se de que named_write_master_zones está habilitado.
Problemas comuns e como resolver
Sintoma: Bind9 não inicia após editar o arquivo de zona
Causa: erro de sintaxe no arquivo de zona ou no named.conf, como ponto e vírgula ausente, parêntese não fechado no SOA ou FQDN sem ponto final.
Solução: execute named-checkconf /etc/named.conf e depois named-checkzone seudominio.com /var/named/seudominio.com.zone. Ambos os comandos apontam o número da linha com o erro. Corrija o problema identificado e tente iniciar o serviço novamente com systemctl start named. Consulte também journalctl -u named -n 50 para ver as últimas 50 linhas de log.
Sintoma: consultas retornam SERVFAIL em vez de NOERROR
Causa: o Bind9 não conseguiu completar a resolução, geralmente por forwarders inacessíveis, falha na recursão ou DNSSEC mal configurado. Também ocorre quando a zona está carregada mas com dados inconsistentes.
Solução: teste os forwarders diretamente com dig @8.8.8.8 google.com. Se funcionarem, verifique se recursion yes está habilitado e se o bloco allow-recursion inclui o cliente que está consultando. Para descartar DNSSEC, adicione temporariamente dnssec-validation no; no bloco options e teste novamente.
Sintoma: consultas retornam REFUSED para clientes externos
Causa: a diretiva allow-query no named.conf está restringindo o acesso apenas a localhost ou a uma sub-rede específica que não inclui o cliente.
Solução: edite o bloco options no named.conf e ajuste o allow-query para incluir as redes necessárias. Para um servidor DNS público autoritativo, use allow-query { any; };. Para um resolver interno, especifique apenas as redes internas. Após a alteração, execute rndc reconfig.
Sintoma: alterações no arquivo de zona não têm efeito após reload
Causa: o número serial do registro SOA não foi incrementado. Servidores secundários e o próprio Bind9 verificam o serial para determinar se a zona foi atualizada. Um serial igual ou menor ao anterior faz com que a zona não seja recarregada.
Solução: edite o arquivo de zona e incremente o serial no registro SOA. O formato recomendado é YYYYMMDDNN (ano, mês, dia, número sequencial do dia). Após incrementar, execute named-checkzone para validar e depois rndc reload seudominio.com.
Sintoma: rndc retorna "connection refused" na porta 953
Causa: o canal de controle do Bind9 não está configurado ou o arquivo de chave /etc/rndc.key está ausente ou com permissões incorretas.
Solução: gere uma nova chave com rndc-confgen -a e verifique se o bloco controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; }; }; está presente no named.conf. Certifique-se de que o arquivo /etc/rndc.key pertence ao usuário named com permissão 640.
Perguntas frequentes sobre erros de DNS no Bind9
Por que o Bind9 não inicia após editar o arquivo de zona?
O motivo mais comum é um erro de sintaxe no arquivo de zona ou no named.conf. Execute named-checkzone e named-checkconf para identificar a linha exata do problema antes de tentar reiniciar o serviço. O Bind9 rejeita qualquer configuração malformada e registra o erro detalhado em /var/log/named/named.log ou via journalctl -u named. Corrija o erro apontado e valide novamente antes de iniciar o daemon.
Como verificar se o Bind9 está respondendo consultas DNS corretamente?
Use o comando dig @127.0.0.1 seudominio.com A para consultar diretamente o servidor local. Se a resposta retornar o status NOERROR com o registro esperado na seção ANSWER SECTION, o Bind9 está funcional. Caso retorne SERVFAIL ou REFUSED, verifique as ACLs de allow-query no named.conf e o estado do serviço com systemctl status named.
O que causa o erro 'SERVFAIL' nas consultas ao Bind9?
SERVFAIL indica que o Bind9 não conseguiu resolver a consulta, geralmente por falha na recursão, zona mal configurada ou forwarders inacessíveis. Verifique se os forwarders definidos em named.conf estão acessíveis via dig @8.8.8.8 google.com e se a opção recursion yes está habilitada para clientes internos. Problemas de DNSSEC mal configurado também geram SERVFAIL — desabilite temporariamente com dnssec-validation no; para isolar a causa.
Como recarregar zonas do Bind9 sem reiniciar o serviço?
Execute rndc reload para recarregar todas as zonas sem interromper o daemon named. Para recarregar apenas uma zona específica, use rndc reload seudominio.com. Isso evita downtime em servidores de produção que atendem múltiplos domínios simultaneamente. Se você alterou o named.conf, use rndc reconfig em vez de rndc reload.
Qual a diferença entre named-checkconf e named-checkzone no Bind9?
O named-checkconf valida a sintaxe do arquivo de configuração principal named.conf e seus includes, sem verificar os arquivos de zona. Já o named-checkzone valida a sintaxe e a consistência de um arquivo de zona específico, verificando registros SOA, NS e a integridade dos dados. Ambos devem ser executados antes de qualquer reinicialização do Bind9 — use named-checkconf primeiro e depois named-checkzone para cada zona modificada.
Conclusão
Diagnosticar e corrigir erros no Bind9 no Rocky Linux 9 é um processo sistemático que começa pela validação da configuração e termina com testes funcionais de resolução. Seguindo as etapas deste guia, você evita reinicializações desnecessárias e minimiza o impacto em produção.
- Sempre valide antes de reiniciar: execute
named-checkconfenamed-checkzoneapós qualquer alteração — nunca reinicie o Bind9 sem validar a configuração primeiro - Use rndc para recargas sem downtime: prefira
rndc reloadourndc reconfigem vez desystemctl restart namedem servidores de produção - Monitore os logs continuamente: configure o Bind9 para registrar consultas e erros em
/var/log/named/named.loge revise regularmente comjournalctl -u namedpara identificar problemas antes que afetem os usuários
Leia também
- Qual servidor DNS escolher para VPS Linux: comparativo direto
- Solucionar erros de permissão em uploads no Linux: guia prático para VPS e servidores dedicados
- Otimizar a propagação de DNS: por que demora e como acelerar
Precisa de ajuda com DNS e infraestrutura de servidor?
Configurar e manter um servidor DNS autoritativo com Bind9 exige atenção a detalhes de sintaxe, segurança e disponibilidade. Um VPS com suporte técnico especializado pode simplificar significativamente essa operação, especialmente em ambientes de produção críticos.
Conheça os planos de VPS da AviraHost e hospede seu servidor DNS com estabilidade