consulta BIND / DNSMASQ pendurado no servidor ubuntu 14.04.1

1

Estou testando uma configuração do BIND e DNSMASQ no meu VPS. Quando executo um programa que envia várias consultas (por volta de 10 a 20 por segundo), minhas respostas de DNS param de voltar por um período de tempo aleatório. Se enviar algo como 3 consultas por segundo, as consultas não parecem travar.

Por exemplo:

  • Posso consultar por 45 segundos e receber respostas. Então, de repente, por 5 segundos eu não recebo respostas.
  • Posso consultar por 15 segundos e receber respostas. Então, de repente, por 10 segundos eu não vejo respostas.

Eu tentei descobrir o que está acontecendo, observando o seguinte:

  • uso de memória
  • uso da CPU
  • entradas syslog da depuração de ligação
  • assista ao IPTABLES streaming de pacotes para ver se o iptables não é capaz de processar tantos pacotes de uma só vez. (Eu tenho regras iptables para restringir as solicitações DNS para vir somente do meu IP e bloquear todas as outras solicitações de IP para qualquer porta )
  • testado BIND e DNSMASQ.

o que eu vi:

  • BIND e DNSMASQ apresentam o mesmo problema.
  • O uso da memória
  • parece OK, o servidor não está eliminando processos e reiniciando os processos.
  • O uso da CPU nunca ultrapassa 0,7% para todo o sistema.
  • limitar o tamanho do cache de ligações não resultou em nenhuma diferença perceptível.
  • ao assistir IPTABLES com as regras estabelecidas, vi que os pacotes de entrada IPTABLES estavam sendo transmitidos em OK quando as consultas de DNS pararam de responder e os logs de DNS pararam de ser exibidos. Mas o que eu vi STOP em IPTABLES ao mesmo tempo em que os logs de DNS pararam, os pacotes para o meu IP específico na regra IPTABLES foram congelados, enquanto os pacotes entrantes continuaram rolando E minha janela do terminal SSH continuou atualizando obviamente desde que eu podia ver o contagem de pacotes crescendo em geral na entrada.
  • Eu, então, testei a descarga de todas as regras do IPTABLES, confirmei que o problema ainda ocorre com as regras do iptables liberadas. No entanto, ao observar a contagem de pacotes de entrada, a contagem geral continua crescendo como quando as regras estavam em vigor.

Eu ainda não sei 100% se o seu iptables não é capaz de processar os pacotes recebidos rápido o suficiente? (Mesmo com todas as regras liberadas?) (Eu estou pensando que é altamente improvável que 20 ~ ou mais consultas DNS por segundo possam fazer com que o iptables desligue durante o processamento de pacotes)

O que exatamente poderia estar causando esse problema? O que segue me deixa muito confuso:

  • O terminal SSH é totalmente bom ao atualizar a tela do console / aceitar comandos enquanto as consultas são suspensas
  • outros programas como o top / htop continuam a ser atualizados também enquanto as consultas são suspensas.
  • O contador de pacotes de entrada geral do iptables continua rolando enquanto a regra independente para o contador do meu IP não cresce

Na época, não pude testar o envio de consultas de dois IPs de uma só vez (eu sei que, potencialmente, todo esse problema pode ser o meu ISP / roteador está causando o bloqueio do tráfego DNS estou enviando?). No entanto, estou enviando a partir de dois computadores cliente diferentes na minha rede, que são encaminhados através de um IP público. Eu também não acho que este é o problema provável.

Como o BIND e DNSMASQ apresentam o mesmo problema com o mesmo tipo de configuração, estou achando difícil descobrir onde está o problema, é mesmo um problema de bind / dnsmasq ou algum tipo de problema de processamento de pacotes de sistema? ?

Eu também testei apontando para o googles DNS 8.8.8.8 e eu tive o mesmo problema que me faz acreditar que é algo potencialmente com o meu ISP / roteador? Apenas muito estranho que esse pequeno tráfego faria com que meu roteador / ISP ficasse porcaria? Talvez o googles dns bloqueie pedidos se eles chegarem tão rápido?

Alguma opinião?

meu VPS tem 1 núcleo de CPU, 256MB de ram, 10gb ssd. o uso do sistema geralmente é em torno de 130-160mb.

    
por RCG 30.12.2014 / 10:18

1 resposta

3

Pode ser uma limitação de taxa nos encaminhadores de DNS que você selecionou (seus ISPs e Google).

Também pode ser que o rastreamento de conexão (stateful firewalling) em seu roteador esteja causando o preenchimento de tabelas, de modo que novas solicitações de DNS não possam ser alocadas em uma entrada na tabela NAT e, portanto, não possam ser encaminhadas. No entanto, parece que você não está usando o NAT, se você tem um VPS?

iptables não tem nenhum problema com números extremamente grandes de pacotes. Eu vi isso usado em uma configuração de roteamento assimétrico com 4 Gbit / se mais tráfego, com milhares de solicitações por segundo. Apenas certifique-se de que a tabela conntrack seja grande o suficiente, eu tenho net/nf_conntrack_max = 524288 em sysctl.conf .

Pode ser útil configurar seu BIND como um encaminhador recursivo para seus próprios IPs, para que você não dependa de encaminhadores externos. Você está enviando solicitações de DNS para uma grande variedade de servidores DNS, em vez de apenas 2 ou 3, o que pode ajudar no NAT.

    
por 30.12.2014 / 11:02