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 / unix / Perguntas / 417645
Accepted
Jonny Asmar
Jonny Asmar
Asked: 2018-01-17 16:45:27 +0800 CST2018-01-17 16:45:27 +0800 CST 2018-01-17 16:45:27 +0800 CST

dnsmasq e systemd causando picos de CPU intermitentes

  • 772

Problema:

Executando o Ubuntu 17.10

Estou tentando resolver (hehe) esse problema há cerca de uma semana e, apesar de inúmeras pesquisas no Google e cerca de 20 tentativas diferentes, não consigo impedir que o dnsmasq faça com que minha CPU pique periodicamente por cerca de um minuto com os seguintes infratores:

  • systemd-resolved
  • systemd-journald
  • dnsmasq

Monitoramento journalctl -f, vejo isso toda vez que isso acontece:

número máximo de consultas DNS simultâneas atingido (150)

Acompanhado/precedido por um loop maluco de solicitações para algum domínio (geralmente verificação de conexão ubuntu) como o seguinte:

query[A] connectivity-check.ubuntu.com from 127.0.0.1
forwarded connectivity-check.ubuntu.com to 127.0.1.1
forwarded connectivity-check.ubuntu.com to 127.0.0.53
query[A] connectivity-check.ubuntu.com from 127.0.0.1
forwarded connectivity-check.ubuntu.com to 127.0.0.53
query[AAAA] connectivity-check.ubuntu.com from 127.0.0.1
forwarded connectivity-check.ubuntu.com to 127.0.0.53
query[AAAA] connectivity-check.ubuntu.com from 127.0.0.1
forwarded connectivity-check.ubuntu.com to 127.0.0.53
query[A] connectivity-check.ubuntu.com from 127.0.0.1
forwarded connectivity-check.ubuntu.com to 127.0.0.53
query[AAAA] connectivity-check.ubuntu.com from 127.0.0.1
forwarded connectivity-check.ubuntu.com to 127.0.0.53

Descobri que mudar meu /etc/resolv.conf para uso nameserver 127.0.0.53faz com que o pico se dissipe quase instantaneamente.

No entanto, como esse arquivo é atualizado regularmente pelo Network Manager, tenho que fazer isso uma vez por hora.


Configuração:

/etc/resolv.conf

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.

nameserver 127.0.0.1
search fios-router.home

/etc/NetworkManager/NetworkManager.conf

[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=false

[device]
wifi.scan-rand-mac-address=no

/etc/dnsmasq.conf

// All default except this at the very end for my wildcard DNS
address=/asmar.d/127.0.0.1

/run/dnsmasq/resolv.conf

nameserver 127.0.0.53

/run/resolvconf/interfaces:

lo.dnsmasq:

nameserver 127.0.0.1

systemd-resolved:

nameserver 127.0.0.53

/etc/resolvconf/interface-order:

# interface-order(5)
lo.inet6
lo.inet
lo.@(dnsmasq|pdnsd)
lo.!(pdns|pdns-recursor)
lo
tun*
tap*
hso*
em+([0-9])?(_+([0-9]))*
p+([0-9])p+([0-9])?(_+([0-9]))*
@(br|eth)*([^.]).inet6
@(br|eth)*([^.]).ip6.@(dhclient|dhcpcd|pump|udhcpc)
@(br|eth)*([^.]).inet
@(br|eth)*([^.]).@(dhclient|dhcpcd|pump|udhcpc)
@(br|eth)*
@(ath|wifi|wlan)*([^.]).inet6
@(ath|wifi|wlan)*([^.]).ip6.@(dhclient|dhcpcd|pump|udhcpc)
@(ath|wifi|wlan)*([^.]).inet
@(ath|wifi|wlan)*([^.]).@(dhclient|dhcpcd|pump|udhcpc)
@(ath|wifi|wlan)*
ppp*
*

systemd-resolve --status:

Global
         DNS Servers: 127.0.0.1
          DNSSEC NTA: 10.in-addr.arpa
                      16.172.in-addr.arpa
                      168.192.in-addr.arpa
                      17.172.in-addr.arpa
                      18.172.in-addr.arpa
                      19.172.in-addr.arpa
                      20.172.in-addr.arpa
                      21.172.in-addr.arpa
                      22.172.in-addr.arpa
                      23.172.in-addr.arpa
                      24.172.in-addr.arpa
                      25.172.in-addr.arpa
                      26.172.in-addr.arpa
                      27.172.in-addr.arpa
                      28.172.in-addr.arpa
                      29.172.in-addr.arpa
                      30.172.in-addr.arpa
                      31.172.in-addr.arpa
                      corp
                      d.f.ip6.arpa
                      home
                      internal
                      intranet
                      lan
                      local
                      private
                      test

Link 5 (br-b1f5461ac410)
      Current Scopes: none
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

Link 4 (docker0)
      Current Scopes: none
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

Link 3 (wlp62s0)
      Current Scopes: none
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

Link 2 (enp61s0)
      Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 8.8.8.8
                      8.8.4.4
                      ::1

Perguntas:

Como posso resolver esse problema enquanto ainda uso meu nome de domínio curinga?

Opcional : como posso conseguir isso usando o DNS do Google?

Por favor, não recomende o aumento das consultas de DNS simultâneas. Isso não é uma solução.


RESOLVIDO!

Veja o curso intensivo de DNS da telcoM (a resposta aceita) que me levou à solução

Veja meu acompanhamento e solução final enquanto eu experimentava o conhecimento adquirido com essa resposta

ubuntu dnsmasq
  • 4 4 respostas
  • 4435 Views

4 respostas

  • Voted
  1. Best Answer
    telcoM
    2018-01-20T01:18:16+08:002018-01-20T01:18:16+08:00

    Parece que você pode ter dnsmasqprocesso em 127.0.0.1 e systemd-resolvedprocesso em 127.0.0.53 passando consultas entre si, causando um loop. Mesmo dnsmasqsozinho pode ser capaz de fazer um loop, pois, por padrão, ele procura /etc/resolv.confencontrar os servidores DNS reais a serem usados ​​para os nomes para os quais não possui informações.

    Sua configuração de DNS provavelmente tem muitas camadas:

    • primeiro, há as informações do servidor DNS que você obtém do seu ISP por DHCP ou similar.
    • então, há NetworkManager, que pode ser configurado para substituir as informações e usar dnsmasq, mas atualmente não está configurado dessa forma.
    • em vez disso, NetworkManagerestá configurado para usar a resolvconfferramenta para atualizar o arquivo /etc/resolv.conf. E dnsmasqpode incluir uma configuração drop-in para resolvconfsubstituir quaisquer serviços DNS recebidos pelo DHCP e usar 127.0.0.1 enquanto dnsmasqestiver em execução.
    • systemd-resolved também pode incluir uma configuração drop-in para resolvconf, mas aparentemente está sendo substituída por dnsmasq.

    O que ainda não entendo é de onde vêm o 127.0.1.1 e o 127.0.0.53. Eles talvez sejam mencionados na dnsmasqconfiguração padrão do Ubuntu?

    Como diz no comentário de /etc/resolv.conf, execute este comando para ver mais informações sobre systemd-resolvedconfiguração:

    systemd-resolve --status
    

    Verifique também o conteúdo do /run/resolvconf/interface/diretório: é onde a resolvconfferramenta coleta todas as informações do servidor DNS que obtém de várias fontes. O /etc/resolvconf/interface-orderirá determinar a ordem em que cada fonte é verificada, até que um endereço de loopback seja encontrado ou 3 servidores DNS tenham sido listados de verdade /etc/resolv.conf.

    Já que você está usando dnsmasqpara configurar um domínio curinga, você vai querer manter 127.0.0.1em seu /etc/resolv.conf- mas você vai querer configurar dnsmasqpara não usar esse arquivo, mas obter os servidores DNS que ele deve usar de outro lugar.

    Se /run/NetworkManager/resolv.confcontém os servidores DNS que você obtém do seu ISP por DHCP, você pode facilmente usá-lo dnsmasqadicionando esta linha à sua configuração:

    resolv-file=/run/NetworkManager/resolv.conf
    

    Isso informa dnsmasqonde obter informações de DNS para as coisas que ainda não conhece. Portanto, se você quiser usar o DNS do Google, poderá configurar dnsmasqcom

    resolv-file=/etc/google-dns-resolv.conf
    

    e coloque as linhas de configuração de DNS do DNS do Google no formato usual para /etc/google-dns-resolv.conf.

    • 5
  2. Pieter
    2018-08-08T01:46:59+08:002018-08-08T01:46:59+08:00

    Corrigido minha corrida dnsmasq systemd-resolve com configuração dnsmasq.

    1. Use systemd-resolve (127.0.0.53) para DNS externo, pois ele faz DNSsec e possui servidores raiz.
    2. Ligar apenas o dnsmasq ao loopback para algumas configurações estáticas, poderia adicionar mais interfaces se eu precisar dele para dhcp.

    /etc/dnsmasq.d/myconfig

    #PES 20180808 dnsmasq and systemd-resolve conflict.
    # dont use /etc/resolv.conf, go direct to systemd-resolve, only bind to lo
    no-resolv
    bind-interfaces
    interface=lo
    server=127.0.0.53
    
    • 1
  3. ben.c
    2019-03-09T06:14:07+08:002019-03-09T06:14:07+08:00

    No Ubuntu 18.04

    1 - Crie /etc/google-dns-resolv.conf

    nameserver 8.8.8.8
    nameserver 8.8.4.4
    

    2 - Crie um arquivo de configuração /etc/dnsmasq.d/my_dnsmaq.conf

    resolv-file=/etc/google-dns-resolv.conf
    

    3 - Insira no final de /etc/default/dnsmasq

    IGNORE_RESOLVCONF=yes
    

    4 - Por fim, reinicie seu serviço dnsmasq

    sudo service dnsmasq restart


    Eu usei a resposta de Johny acima, mas faltava a etapa nº 3 da minha resposta para que meu arquivo de configuração dnsmasq fosse lido corretamente. Obrigado

    • 1
  4. Jonny Asmar
    2018-01-20T04:13:12+08:002018-01-20T04:13:12+08:00

    Originalmente, documentei isso como parte da pergunta, enquanto tentava várias soluções. Isso foi recortado/colado dessa pergunta para esta resposta para maior clareza, mas essa resposta não é independente sem o insight fornecido na resposta do telcoM .

    Solução:

    Fiz a seguinte alteração de acordo com a sugestão do telcoM abaixo.

    Criado /etc/google-dns-resolv.confcom o conteúdo:

    nameserver 8.8.8.8
    nameserver 8.8.4.4
    

    Adicionado resolv-file=/etc/google-dns-resolv.confa /etc/dnsmasq.conf

    Depois de fazer a alteração e executar sudo service dnsmasq restarta CPU ainda disparou, mas agora rsyslogdentrou na mistura de infratores. Ele se acalmou depois de cerca de um minuto, mas eu não vi 127.0.1.1mais journalctl -f.

    Atualização: após cerca de 10 minutos, a CPU disparou novamente:

    insira a descrição da imagem aqui

    Atualização nº 2: Graças ao excelente curso intensivo de DNS da telcoM abaixo e ao ceticismo sobre de onde 127.0.0.53vinha, pesquisei um pouco (veja meus comentários sobre a resposta dele) e descobri que vinha de /run/dnsmasq/resolv. conf , que tinha o conteúdo nameserver 127.0.0.53. Decidi atualizar o conteúdo para nameserver 127.0.0.1. Agora, o único endereço IP do qual vejo saída journalctl -fé 127.0.0.1e não experimentei um pico de CPU desde então (aproximadamente 10 minutos agora; que é pelo menos tão longo quanto qualquer período de descanso que minha CPU desfrutou antes)!

    [RESOLVIDO] Atualização nº 3: Usar 127.0.0.1em /run/dnsmasq/resolv.conf era tolice. Isso matou totalmente minha resolução de DNS (pareceu funcionar no início porque eu estava acessando apenas DNSes em cache). Depois de mudar para usar os servidores de nomes do Google ( 8.8.8.8& 8.8.4.4), a resolução DNS funciona novamente, meus domínios curinga continuam funcionando e não estou tendo picos de CPU. Vou ver como isso se comporta por cerca de uma hora enquanto executo minhas atividades diárias típicas e atualizo novamente de acordo; espero que com um RESOLVIDO !

    Atualização nº 4: isso parece estar resolvido agora seguindo as etapas da atualização nº 3 . Obrigado telcoM por todos os excelentes detalhes que me orientaram na direção certa. A recompensa será concedida quando estiver disponível em 15 horas.

    • 0

relate perguntas

  • Torne as configurações do teclado Apple persistentes em ../hid_apple/parameters/

  • traçar gráfico 2D com pontos de um arquivo

  • Como faço para verificar se estou usando 9.9.9.9 para DNS?

  • Instale várias distribuições Linux em paralelo

  • O OpenVPN auto-compilado não inicia a partir do systemd

Sidebar

Stats

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

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk 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