Na prática, você não deve tentar calcular previamente o tamanho exato da resposta dos seus registros TXT antes de implementá-los. Existem muitas variáveis em jogo, algumas das quais você não controla. A maioria dos administradores generaliza com base no tamanho de uma resposta de registro TXT existente que eles observam de seu servidor autoritativo e a chamam de um dia. Como o foco da sua pergunta é como evitar a generalização, essa resposta vai se concentrar no motivo pelo qual é difícil usar cálculos precisos.
(Esta resposta não deve ser tomada como uma declaração a favor ou contra a tentativa de ficar dentro de 512 bytes, é um comentário sobre a abordagem usada para fazer isso.)
sDNSHeader + sQuestion + sAnswer + sAuthority + sAdditional
- A própria consulta aparece na seção de perguntas do pacote de resposta e deve ser levada em consideração.
- Como você imaginou, o número de respostas e seu comprimento de bytes também devem ser levados em consideração.
- Se o servidor autoritativo estiver configurado para listar os servidores de nomes na seção de autoridade e os registros de endereço correspondentes na seção adicional, eles também deverão ser incluídos no fator.
- Se a solicitação continha uma pseudo-seção EDNS0 dentro da seção adicional, um servidor compatível responderia com sua própria pseudo-seção. A consulta provavelmente solicitou um tamanho de mensagem maior que 512 bytes se EDNS0 estiver em execução, mas ainda é uma consideração, especialmente porque o hardware de rede no caminho de comunicação pode rejeitar incorretamente pacotes DNS > 512 bytes como inválidos e forçar o limite efetivo de mensagens de volta para as restrições originais.
- A compressão de mensagem RFC 1035 também é um fator.
Você pode escrever um programa ou script que fará todo esse cálculo para você? Certo. É um bom uso do tempo para o problema que você está tentando resolver? Provavelmente não. Use um registro TXT existente na zona como sua diretriz de dimensionamento aproximado e, se o crescimento de mais de 512 bytes for uma preocupação, certifique-se de estar familiarizado com qualquer funcionalidade "include" incorporada ao padrão relevante que aproveite os registros TXT. (SPF, etc.)