Dar a um cliente um endereço de resolvedor fixa onde as consultas são enviadas, não qual fonte o resolvedor verá. O encaminhamento, a reexpedição e a tradução têm cada um a sua vez entre os dois extremos. Um manual de procedimento para questões de fonte segue a consulta salto a salto e regista o que cada observador viu realmente. A ordem importa, porque uma afirmação feita antes da observação é apenas um palpite com melhor formatação.

Registe a disposição antes de recolher provas

Quatro locais podem dizer-lhe algo sobre uma fonte DNS, e nem todos dizem o mesmo. O núcleo do cliente sabe que fonte usaria, um encaminhador sabe o que enviou para montante, um dispositivo que traduz sabe o que reescreveu, e o resolvedor que recebe sabe o que chegou. Registe quais desses consegue realmente alcançar antes de recolher seja o que for.

Observation pointWhat it can proveWhat it cannot proveHow to read it
client kernelwhich source address it would use for that resolveranything a device in between rewroteip route get against the resolver address
forwarderthat it sent an upstream query, and from which sourcewhat the client originally asked forits own log and its cache state
translating devicethat a source was rewritten, and to whatwhether the query was legitimateNAT policy and its counters
receiving resolverthe address that actually arrivedwhich client behind that address askeda scoped capture on port 53

Registe também a sua expectativa, incluindo o resolvedor que julga estar em uso. Uma rota dividida pode enviar uma consulta para um local completamente diferente, e uma cache pode responder sem qualquer troca para montante, pelo que uma suposição guardada apenas na memória não sobreviverá à primeira surpresa. Mantenha o desenho declarado e o caminho observado em colunas separadas da mesma nota; quando os dois divergirem, encontrou a pergunta que vale a pena perseguir.

Verifique que processo enviou realmente a consulta

Comece pelo cliente: registe o endereço do resolvedor, o nome consultado e a hora, e depois confirme que processo a enviou. A primeira linha abaixo nomeia o processo que detém o socket UDP, e essa é a verificação que este título promete. Se esse processo for um assistente do navegador ou um ambiente de execução de contentores em vez do resolvedor do sistema, o resto do rasto descreve um caminho que ninguém pediu.

ss -tunp 'dport = :53'
dig @10.20.30.53 host.corp.example +noall +answer
ip route get 10.20.30.53

Num anfitrião com várias interfaces, descubra que endereço de origem o núcleo escolhe para esse destino antes de olhar para outro lado. É o último ponto em que o caminho está totalmente sob o seu controlo, e é o valor que vai comparar com o que o resolvedor relata. Uma divergência é o sinal de que algo pelo meio reescreveu o pacote, ou de que foram enviadas duas consultas diferentes.

Mantenha os nomes de teste internos, porque um nome interno enviado a um resolvedor público não prova nada sobre o caminho interno e publica um nome que não precisava de publicar. Um navegador com DNS seguro ativado não aparecerá de todo nessa lista de sockets, e essa ausência é ela própria a resposta.

O encaminhador faz uma segunda consulta, separada

Um encaminhador transforma uma troca em duas. O pedido descendente chega, e o encaminhador envia então a sua própria consulta para montante a partir de um endereço que escolhe. A sua configuração, não o cliente, decide o que o resolvedor de montante vê.

O manual do dnsmasq vale a pena ser lido por esse motivo: documenta como um encaminhador escolhe servidores de montante e liga o seu lado de escuta, e nada nessa disposição transporta a fonte do cliente para montante. Um registo de resolvedor que mostra um endereço de gateway é, por isso, normal e não prova de falha. A ausência é igualmente fácil de ler mal, porque um acerto de cache não produz qualquer consulta para montante e parece idêntico a uma consulta que nunca chegou. Leia a configuração do encaminhador e o estado da sua cache antes de tirar qualquer das duas conclusões. Duas perguntas, dois locais onde olhar.

Leia a fonte no resolvedor que recebe

A única observação que resolve isto é feita do lado do servidor. Tudo o que se infere da lista de interfaces do cliente continua a ser uma hipótese até o resolvedor relatar o que chegou realmente.

tcpdump -ni any port 53 and host 10.20.30.53

Capture no anfitrião do resolvedor, mantenha a captura curta e limitada, e guarde-a onde a política o permitir. Se a fonte observada for um endereço traduzido, a pergunta seguinte é que dispositivo fez a tradução e se a sua política é a pretendida. Uma captura responde ao que chegou; não explica por que a política o permitiu. Nomeie o observador e o salto na nota, porque uma afirmação de privacidade sobre um gateway é uma afirmação sobre esse salto e não sobre todo o caminho.

Escreva a conclusão como um caminho, não como um endereço

Registe o cliente, o resolvedor, qualquer encaminhador, a fonte observada em cada salto e a política que o rege. Esse registo responde à maioria das perguntas futuras sem outra captura. Desenhe-o como uma cadeia, porque uma lista de endereços esconde que salto produziu qual.

Junte a data, a versão do cliente e a revisão da configuração ao desenho, para que um leitor posterior possa dizer se ainda se aplica. Separe a fonte de transporte de tudo o resto que o serviço processa, porque ver um endereço de gateway não diz nada sobre o que mais é conservado. A localização de um resolvedor também não diz nada sobre que cliente perguntou. Manter essas afirmações separadas é o que torna a conclusão defensável em revisão.

Artigos relacionados