Linter de Arquivo de Zona

Verifica arquivos de zona para erros de sintaxe e duplicatas

Zone File Content

Lint Results

Paste a BIND zone file to validate

O Linter de Arquivo de Zone valida sintaxe de arquivo de zone BIND e detecta problemas comuns de configuração DNS antes de deployment. Cole o conteúdo de seu arquivo de zone e a ferramenta rodas passes de validação de sintaxe semântica e estrutural informando erros com números de linha e recomendações de fix específicas. Diferente das mensagens criptográficas que BIND produz quando recusa carregar uma zone isto fornece feedback claro e acionável.

Compreendendo Validação de Arquivo de Zone

Arquivos de zone DNS são enganosamente simples. Eles parecem arquivos de texto diretos com registros listados um por linha mas contêm um número surpreendente de jeitos de introduzir erros que causam interrupções. Um ponto final ausente em um alvo externo silenciosamente cria um nome de domínio sem sentido. Uma CNAME colocada no apex de zone ou junto com outros tipos de registro viola a especificação DNS e causa comportamento impredizível do resolvedor. Registros duplicados desperdiçam espaço e confundem auditorias. Um endereço IP inválido em um registro A produz uma zone que carrega com sucesso mas retorna lixo para clientes.

O feedback padrão que você obtém de BIND quando um arquivo de zone tem erros é frequentemente inútil. Mensagens como "zone example.com/IN: loading from master file failed: bad owner name" não dizem a qual linha está errada ou o que especificamente está errado sobre ela. Você termina em busca binária pelo arquivo comentando seções até o erro desaparecer. Isto é lento frustrante e completamente desnecessário se você valida o arquivo antes de tentar carregá-lo.

Este linter realiza três passes sobre seu arquivo de zone. O pass de sintaxe verifica cada linha para formatação apropriada: contagens corretas de campo formatos válidos de valor parênteses balanceados e sintaxe apropriada de diretiva. O pass semântico verifica que valores fazem sentido: endereços IP são válidos hostnames seguem regras RFC TTLs estão dentro de intervalos razoáveis e alvos estão apropriadamente qualificados. O pass estrutural examina a zone como um todo: registros SOA e NS requeridos estão presentes conflitos de CNAME são identificados duplicatas são sinalizadas e alvos órfãos são detectados. Cada issue é informado com seu número de linha nível de severidade e uma descrição específica do que está errado e como consertar.

Como Fazer Lint de um Arquivo de Zone DNS

  1. Cole o conteúdo de seu arquivo de zone BIND no campo de entrada
  2. O linter roda passes de validação de sintaxe semântica e estrutural
  3. Revise a lista de erros avisos e mensagens informacionais com números de linha
  4. Corrija os issues informados e re-valide até o arquivo de zone passar limpo

Erros Comuns de Arquivo de Zone Detectados

ErroExemploSeveridade
Registro SOA ausenteZone não tem SOA no apexErro
Registros NS ausentesApex de zone carece de registros NSErro
CNAME no apex de zone@ IN CNAME other.example.com.Erro
CNAME com outros tiposwww tem ambos registros CNAME e AErro
Ponto final ausente em FQDNwww IN CNAME target.other.comAviso
Registros duplicadosDois registros A idênticos para wwwAviso
TTL irrazoávelTTL de 0 ou 31536001 (>1 ano)Aviso
Parênteses desbalanceadosRegistro SOA com ) ausenteErro
IP inválido em registro Awww IN A 999.1.2.3Erro
Tipo de registro desconhecidowww IN AAAB 2001:db8::1Erro

Exemplo de Lint de Arquivo de Zone

Arquivo de Zone de Entrada

$TTL 3600
@   IN  SOA  ns1.example.com. admin.example.com. (
        2024010101 ; serial
        3600       ; refresh
        900        ; retry
        604800     ; expire
        86400 )    ; minimum
@       IN  NS   ns1.example.com.
@       IN  NS   ns2.example.com.
@       IN  CNAME  www.example.com.
www     IN  A      203.0.113.10
www     IN  A      203.0.113.10
mail    IN  A      203.0.113.20
smtp    IN  CNAME  mail
smtp    IN  MX     10 mail
api     IN  A      192.168.1.500

Saída de Linter

Linha 10: ERRO - CNAME no apex de zone (@) conflita com registros SOA e NS
Linha 12: AVISO - Registro duplicado: www IN A 203.0.113.10
Linha 15: ERRO - Registros CNAME e MX não podem coexistir para nome "smtp"
Linha 16: ERRO - Endereço IPv4 inválido em registro A: 192.168.1.500 (octeto > 255)

Quando Usar o Linter de Arquivo de Zone

  • Antes de fazer deployment de mudanças de zone -- Pegar erros que causariam BIND recusar a zone ou servir respostas incorretas
  • Após editar manualmente arquivos de zone -- Edições manuais frequentemente introduzem typos pontos ausentes ou erros de sintaxe
  • Validando zones geradas por script -- Scripts de geração de zone automatizados podem produzir saída sutilmente inválida
  • Durante migrações de DNS -- Arquivos de zone exportados de uma plataforma DNS podem precisar ajustes de sintaxe para outra
  • Code review para mudanças de infraestrutura -- Incluir linting de arquivo de zone em sua checklist de revisão para pulls de DNS
  • Treinamento e aprendizado -- Entender por que construções específicas de arquivo de zone são inválidas ajuda aprofundar conhecimento de DNS

Como Validação de Arquivo de Zone Funciona

O linter realiza três passes de validação cada um pegando diferentes classes de problemas:

Validação de Sintaxe

Verifica o formato bruto de cada linha:

  • Contagens de campo de registro: Cada tipo de registro espera um número específico de campos (por exemplo registros A precisam de um nome classe tipo e endereço IPv4)
  • Formatos de valor: Endereços IP hostnames valores de TTL e números de prioridade são verificados para formatação válida
  • Sintaxe de diretiva: Diretivas $TTL $ORIGIN e $INCLUDE devem seguir regras de sintaxe BIND
  • Registros multi-linha: Registros entre parênteses (como SOA) devem ter parênteses de abertura e fechamento combinados
  • Tratamento de comentário: Comentários de ponto-e-vírgula são removidos antes da validação

Validação Semântica

Verifica que valores fazem sentido em contexto:

  • Intervalos de TTL: Valores devem estar entre 60 segundos e 1 semana para a maioria dos registros; o linter sinaliza TTLs irrazoáveis
  • Validade de hostname: Todos hostnames referenciados em registros são verificados contra RFC 1123
  • Qualificação de alvo: Alvos externos devem estar totalmente qualificados (ponto final); alvos relativos devem existir dentro da zone
  • Validade de endereço: Endereços de registro A devem ser IPv4 válido; registros AAAA devem ser IPv6 válido

Validação Estrutural

Verifica a zone arquivo como um todo:

  • Registros requeridos: O apex de zone deve ter pelo menos um registro SOA e pelo menos dois registros NS
  • Conflitos de CNAME: Nomes com registros CNAME não podem ter qualquer outro tipo de registro
  • Restrições de apex: Registros CNAME não podem aparecer no apex de zone
  • Detecção de duplicata: Registros idênticos (mesmo nome tipo classe e dados) são sinalizados
  • Detecção órfã: CNAME ou alvos de MX que apontam para nomes não definidos na zone acionam um aviso

Linting de Arquivo de Zone na Prática

O hábito mais valioso que você pode construir em torno de gerenciamento de arquivo de zone é fazer lint antes de cada deployment. Leva segundos e pega os tipos de erros que causam interrupções durando minutos ou horas. Um pipeline CI/CD que inclui linting de arquivo de zone como um gate de pré-deployment é ainda melhor porque previne arquivos de zone quebrados de jamais alcançarem produção. Trate seus arquivos de zone como código: eles devem passar por revisão validação e teste antes de deployment.

Os erros que causam a maioria da dor operacional não são os que BIND recusa completamente. BIND recusará carregar uma zone com erro de sintaxe e enquanto isto é disruptivo pelo menos você sabe imediatamente que algo está errado. Os erros perigosos são os que BIND aceita mas que produzem comportamento incorreto: um ponto final ausente que cria um alvo de CNAME errado um registro duplicado que causa respostas inconsistentes dependendo de qual servidor autoritativo responde ou um conflito de CNAME que faz um tipo de registro funcionar enquanto outro falha silenciosamente. Este linter pega todos esses.

Ao debugar um arquivo de zone que o linter sinaliza comece com os erros e corrija-os antes de endereçar avisos. Erros indicam condições que causarão resolução de DNS falhar ou produzir resultados incorretos. Avisos indicam condições que são tecnicamente válidas mas provavelmente não intencionadas como registros duplicados ou TTLs que são incomumente curtos ou longos. Mensagens informacionais apontam coisas que estão bem mas vale estar ciente como o uso de nomes relativos que o linter resolveu usando o origin de zone.

Perguntas Frequentes

O linter verifica se hostnames realmente se resolvem?

Não. O linter valida sintaxe de arquivo de zone e correção estrutural sem realizar live DNS queries. Ele verifica que hostnames seguem regras RFC e que o arquivo de zone é internamente consistente mas não verifica se nomes externos referenciados existem em DNS.

Por que um ponto final ausente importa?

Em arquivos de zone BIND nomes sem ponto final são tratados como relativos ao $ORIGIN (apex de zone). Se sua zone é example.com e você escreve target.other.com sem ponto final BIND interpreta como target.other.com.example.com -- quase certamente não o que você pretendia. Nomes externos totalmente qualificados devem sempre terminar com um ponto.

O linter pode consertar erros automaticamente?

Não. O linter informa problemas mas não modifica o arquivo de zone. Fixes automatizados poderiam introduzir novos erros especialmente com conflitos de CNAME e issues estruturais que podem ter múltiplas resoluções válidas. O linter fornece informação específica o suficiente para você fazer o fix correto.

Qual é a restrição de CNAME-no-apex?

RFC 1034 proíbe registros CNAME no apex de zone porque CNAME não pode coexistir com outros tipos de registro e o apex deve ter registros SOA e NS. Se você precisa de aliasing de apex muitos provedores de DNS oferecem alternativas proprietárias como registros ALIAS ou CNAME flattening mas arquivos de zone padrão de BIND não suportam isto.

Devo fazer lint de arquivos de zone que são gerados por scripts?

Sim absolutamente. Geração de zone automatizada é uma das fontes mais comuns de arquivos de zone sutilmente inválidos. Um script pode produzir saída correta para a maioria dos inputs mas falhar em edge cases: hostnames com caracteres incomuns endereços IPv6 em formatos inesperados ou registros que criam conflitos de CNAME. Fazer lint da saída de seus scripts de geração pega esses issues antes de alcançarem produção.

Como lido com registros SOA multi-linha?

Registros SOA comumente abrangem múltiplas linhas usando parênteses. O linter lida com registros multi-linha rastreando parênteses de abertura e fechamento e juntando as linhas antes da validação. Parênteses ausentes ou desiguais são sinalizados como erros de sintaxe.

Ferramentas Relacionadas

IPparse•Ferramentas Gratuitas de Rede e Calculadora de Sub-redes

© 2026 IPparse. All tools run locally in your browser.

100% Privacy-First • No Data Collected