Identificador de objeto cliente em logs de consulta BIND 9

Identificador de objeto cliente em logs de consulta BIND 9

O Manual de Referência do Administrador BIND 9, por exemplo, para versão14.9.11ou9.17.1estados em

  • 5.2. GRAMÁTICA DO ARQUIVO DE CONFIGURAÇÃO
    • A categoryfrase
      • queries

A entrada do log de consulta primeiro relata um identificador de objeto cliente em @0x<hexadecimal-number>formato.

Este termo não foi mencionado em nenhum outro lugar do ARM e é a única menção de qualqueridentificador de objetode forma alguma.

  • Parece não estar relacionado ao cliente que estava enviando a consulta:

    • poderia ser o mesmo para consultas de muitos endereços IP não relacionados, mas
    • pode ser diferente para duas consultas do mesmo endereço IP.
  • Por exemplo@0x123456789abc

    • a primeira metade 123456parece sempre a mesma
    • a segunda metade 789abcmuda de tempos em tempos.
  • Nos exemplos de log de consulta, pode ser de 32 @0xffffffffou 48 bits @0xffffffffffff.

  • Alan Clegg, nesteRegistro BINDapresentação de outubro de 2019, apenas descreve através do que não é:

    A @0xseguido pelo identificador do objeto do cliente (nada a ver com o endereço do cliente)

O que é e como é calculado?
Que informações podemos extrair disso? Por que está registrado de qualquer maneira?

Responder1

De acordo com Tony Finchresponderpara a lista de discussão de usuários vinculados em agosto de 2019:

É o endereço na memória da estrutura de dados que o BIND usa para manter seu estado de funcionamento para a consulta.

Estou surpreso que este pareça ser o único lugar onde isso é realmente explicado. A nomenclatura parece um tanto enganosa, pois, com base nisso, não se trata doclientenemidentificadores de objetoOID (porITU-T X.660| ISO/IEC 9834-1).

A explicação parece credível, pois é coerente tanto com o formato como com o comportamento do valor. Este registro vem do ISClib/ns/client.cou seja, oobjeto cliente(Obrigado, Patrick Mevzek!):

2715    isc_log_write(ns_lctx, category, module, level,
2716              "client @%p %s%s%s%s%s%s%s%s: %s", client, peerbuf, sep1,
2717              signer, sep2, qname, sep3, sep4, viewname, msgbuf);

Aqui, o %pfato é o endereço de memória (ponteiro) doclient, como está escrito em C, e "client @%p %s%s%s%s%s%s%s%s: %s"é umstring de formato printf, onde o%espaço reservadotem:

A sintaxe para um espaço reservado de formato é

%[parameter][flags][width][.precision][length]type

Campo de tipo

  • s: string terminada em nulo.
  • p: void *(ponteiro para void) em um formato definido pela implementação.

Em vez disso, o Manual de referência do administrador do BIND 9PODERIAsimplesmente diga algo como:

A entrada do log de consulta primeiro relata o endereço de memória da estrutura de dados usada para manter o estado de funcionamento da consulta, em @0x<hexadecimal-number>formato.

Bem, o parágrafo inteiro também poderia serformatado como uma listaem vez de uma história...

informação relacionada