AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 800071
Accepted
Lawrence Wagerfield
Lawrence Wagerfield
Asked: 2016-08-31 12:37:46 +0800 CST2016-08-31 12:37:46 +0800 CST 2016-08-31 12:37:46 +0800 CST

Como fazer o DIG honrar TTLs / usar o cache local do sistema operacional?

  • 772

Quando executo, dig example.coma resposta retorna com SERVER: 192.168.0.1, mesmo nas execuções subsequentes. Isso implica que o DIG está sempre fazendo uma chamada de rede para resolver o registro DNS.

Eu (um tanto ignorantemente) presumi que meu sistema operacional estaria armazenando em cache o registro DNS de acordo com seu TTL e que o DIG estaria usando esse cache.

O DIG ignora o TTL/não faz uso de caches por padrão? Em caso afirmativo, como posso fazer com que o DIG use um cache e honre os TTLs?

Antecedentes / Problema XY:

Eu quero uma maneira de resolver rapidamente os registros DNS TXT para um script nginx que estou escrevendo. O script encaminhará as solicitações com base no conteúdo desses registros TXT, portanto, gostaria que o método que estou usando respeitasse os TTLs e usasse registros armazenados em cache localmente quando apropriado.

domain-name-system networking nginx linux-networking dig
  • 2 2 respostas
  • 736 Views

2 respostas

  • Voted
  1. Best Answer
    HBruijn
    2016-08-31T12:59:18+08:002016-08-31T12:59:18+08:00

    dig (apalpador de informações de domínio), como explica o manual, é uma ferramenta flexível para interrogar servidores de nomes DNS , não consulta ou usa seu cache DNS local (e/ou hostsarquivo), mas consulta diretamente o servidor de nomes para o qual você o aponta. Por padrão, esse será o(s) de /etc/resolv.conf.

    Para usar o cache DNS do seu sistema a partir da linha de comando, use getent hosts [ip-address | hostname]ou em scripts/código, use uma versão nativa da man 3 gethostbynamechamada do sistema.

    Reconhecidamente, isso não ajuda você com mais nada além A AAAAou PTRregistros.


    Na digsaída, o rótulo SERVER é o endereço IP do servidor dig de nomes usado, que nunca terá um TTL...

    dig ANY www.google.com
    
    ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> www.google.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27695
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4
    
    ;; QUESTION SECTION:
    ;www.google.com.                IN      A
    
    ;; ANSWER SECTION:
    www.google.com.     173     IN      A       216.58.212.132
    
    
    ;; AUTHORITY SECTION:
    google.com.         146915  IN      NS      ns2.google.com.
    google.com.         146915  IN      NS      ns3.google.com.
    google.com.         146915  IN      NS      ns1.google.com.
    google.com.         146915  IN      NS      ns4.google.com.
    
    ;; ADDITIONAL SECTION:
    ns2.google.com.     145115  IN      A       216.239.34.10
    ns1.google.com.     145115  IN      A       216.239.32.10
    ns3.google.com.     145115  IN      A       216.239.36.10
    ns4.google.com.     145115  IN      A       216.239.38.10
    
    ;; Query time: 0 msec
    ;; SERVER: 127.0.0.1#53(127.0.0.1)    <========== My Name SERVER is localhost
    ;; WHEN: Tue Aug 30 22:51:26 2016
    ;; MSG SIZE  rcvd: 184
    

    Eu executo meu próprio servidor DNS de cache localmente, em vez de usar um resolvedor público do ISP ou do Google (8.8.8.8), principalmente para spamassassin, que tem a vantagem de ser local, mas o cache também não é pré-semeado/preenchido por outros usuários .

    • 4
  2. Andrew B
    2016-08-31T15:02:14+08:002016-08-31T15:02:14+08:00

    Esta é realmente uma questão de resolução de sistema operacional, mas você não especificou o sistema operacional. Como digé mencionado, vou presumir que estamos trabalhando com algum tipo de UNIX aqui.

    Os sistemas operacionais baseados em UNIX não implementam um cache DNS dentro do próprio kernel. Existem alguns tópicos que precisam ser resumidos antes de entrarmos em como isso é realmente implementado.

    NSS

    As chamadas para a biblioteca do resolvedor geralmente implementam suas pesquisas usando Name Service Switch (NSS), um sistema modular para especificar fontes de dados a serem usadas e a ordem em que são pesquisadas. Você pode encontrar uma lista dessas pilhas de módulos em /etc/nsswitch.conf. Para referência, aquele com o qual estamos preocupados aqui é hosts.

    Não é recomendado brincar com a hostsentrada a /etc/nsswitch.confmenos que você realmente saiba o que está fazendo. Reordenar esses módulos pode resultar em coisas esquisitas como DNS consultado antes do /etc/hostsarquivo!

    nscd

    Antes de consultar a pilha de módulos, o NSS verifica a presença de um nscdsoquete em execução e tenta consultá-lo. Se nscdestiver configurado para manter um cache para o banco de dados NSS em questão, é possível que uma entrada em cache nscdseja retornada sem que os módulos NSS sejam consultados. A maioria das distribuições Linux que conheço não habilitam o cache do hostsbanco de dados por padrão e /etc/nscd.confdevem ser personalizadas.

    Dito isso, deve-se notar que muitos administradores consideram o nscddaemon "stock" não confiável, pelo menos no Linux. Há pelo menos uma implementação alternativa por aí. Sua milhagem pode variar.

    Juntando tudo

    Sabendo do exposto, a ordem de pesquisa para o banco de dados de hosts funciona nesta ordem:

    • nscd(se estiver em execução, seu soquete está presente e o cache de hosts está ativado)
    • Módulos NSS, na ordem listada em/etc/nsswitch.conf
    • Se não for encontrado em um módulo NSS, ele não existe.

    Isso nos leva a onde digse enquadra nessa equação. Você pode se referir a toda a resposta do HBrujin ( dignão usa NSS, apenas fala sobre TCP / IP), mas o problema é que não há cache para NSS, a menos que 1) nscdesteja em execução e 2) esteja configurado para armazenar em cache o hostsbanco de dados.

    tl;dr

    A complexidade de fazer com que o cache DNS funcione bem no NSS geralmente é o motivo pelo qual a maioria dos administradores adota a solução "mais simples" de executar seu próprio servidor DNS recursivo. Você não precisa saber nada sobre NSS. Apenas aponte /etc/resolv.confpara o seu novo cache DNS brilhante e deixe-o esconder os males do NSS de você. (pelo menos até você precisar aprender como funciona a integração do LDAP)

    • 2

relate perguntas

  • Ferramentas de utilização de largura de banda? [fechado]

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve