Como posso determinar se minhas consultas ao DNS no servidor DNS fornecido pela Amazon estão falhando devido ao controle de utilização do DNS da VPC?

5 minuto de leitura
0

Minhas consultas ao DNS no servidor DNS fornecido pela Amazon estão falhando ou expirando. As consultas ao DNS da minha instância estão falhando devido ao controle de utilização do DNS da VPC?

Descrição resumida

Os servidores DNS fornecidos pela Amazon impõem um limite de 1024 pacotes por segundo por interface de rede elástica. Os servidores DNS fornecidos pela Amazon rejeitam qualquer tráfego que exceda esse limite.

Os logs de fluxo da VPC não capturam o tráfego que sua aplicação envia aos servidores DNS fornecidos pela Amazon. Você pode usar capturas de pacotes ou espelhamento de tráfego para identificar a causa das falhas na consulta ao DNS.

Observação: o registro em log de consultas do Amazon Route 53 captura somente o tráfego que chega ao resolvedor VPC.2 (AmazonProvidedDNS). No entanto, as consultas ao DNS têm utilização controlada no nível da interface de rede elástica. Portanto, as consultas com utilização controlada não aparecem no registro em log de consultas.

Resolução

Primeiro, use um dos métodos a seguir para identificar a origem das falhas na consulta de DNS. Em seguida, se você determinar que a causa é o controle de utilização de DNS, use uma das correções recomendadas a seguir.

Determinar a origem das falhas na consulta ao DNS

Opção 1: usar tcpdump (somente Linux)

1.    Use o comando a seguir para fazer capturas rotativas de pacotes em sua instância do EC2. O comando a seguir captura os 350 bytes iniciais do pacote e salva 20 arquivos de 100 MB cada enquanto sobrescreve as capturas de pacotes antigas.

sudo tcpdump -i eth0 -s 350 -C 100 -W 20 -w /var/tmp/$(curl http://169.254.169.254/latest/meta-data/instance-id).$(date +%Y-%m-%d:%H:%M:%S).pcap

2.    Execute o comando do Linux a seguir para determinar o número de consultas ao DNS enviadas.

tcpdump  -r <file_name.pcap> -nn dst port 53 | awk -F " " '{ print $1 }' | cut -d"." -f1 | uniq -c

3.    Se o número de consultas ao DNS for maior ou igual a 1024 por segundo, todas as consultas adicionais terão a utilização controlada.

Opção 2: usar o espelhamento de tráfego

Se não for possível usar o tcpdump no seu caso de uso, você poderá aproveitar o espelhamento de tráfego para identificar se as consultas ao DNS são de utilização controlada.

Observação: o espelhamento de tráfego está disponível para instâncias baseadas em Nitro e tipos de instâncias não Nitro. Aplicam-se taxas de espelhamento de tráfego.

Primeiro, capture dados de tráfego:

1.    Conclua os pré-requisitos de espelhamento de tráfego.

2.    Crie um destino de espelho de tráfego. Confirme se a interface de rede elástica de destino ou o Network Load Balancer permitem tráfego de entrada na porta UDP 4789.

3.    Crie um filtro de espelho de tráfego. Em Configurações de filtro, confirme se o amazon-dns está habilitado para Serviços de rede - opcional.

4.    Crie uma sessão de espelho de tráfego. Depois de configurar o espelhamento de tráfego, o tráfego espelhado é coletado e armazenado no destino do espelho de tráfego.

Observação: o espelhamento de tráfego é uma transmissão ao vivo de dados. Para capturar os pacotes espelhados que chegam ao destino e salvá-los em um arquivo pcap, capture o tráfego com a porta UDP 4789.

Em seguida, analise os dados capturados usando o Wireshark:

1.    Abra o tráfego capturado no Wireshark.

2.    Escolha a guia Estatísticas.

3.    Selecione o Gráfico de E/S e desmarque todas as opções.

4.    (Somente para Linux) Em Filtro de exibição, adicione um filtro usando o identificador de rede VXLAN e o sinalizador de consulta ao DNS. Por exemplo, se o identificador de rede VXLAN for 53 e o sinalizador de consulta ao DNS for 0x0100, o filtro de exibição do gráfico será (vxlan.vni == 53) && (dns.flags == 0x0100).

5.    Analise o gráfico para verificar se ele se estabiliza em torno de 1024 (o limite de pacotes por segundo do servidor DNS fornecido pela Amazon). Se o gráfico se estabilizar em torno desse valor, o controle de utilização de DNS ocorrerá na origem espelhada.

Opção 3: métrica de performance de rede do driver Adaptador de Rede Elástica (ENA)

Se sua instância do EC2 estiver executando uma das seguintes versões do driver ENA, você poderá revisar as métricas em tempo real de utilização controlada do DNS usando a métrica linklocal_allowance_exceeded:

  • Linux: 2.2.10 ou posterior
  • Janela: 2.2.2.0 ou posterior

A métrica linklocal_allowance_exceeded indica o número de pacotes moldados e descartados devido à margem de taxa de PPS excedida para serviços locais. Exemplos de serviços locais são: Serviço de DNS da Amazon VPC, Serviço de Metadados de Instância (IMDS) e Serviço de Sincronização Temporal da Amazon. Você pode verificar essa métrica em vários intervalos para observar se a contagem está aumentando. Como essa métrica é cumulativa desde a última reinicialização do driver (geralmente devido a uma parada e início ou reinicialização da instância), ela somente será significativa se estiver aumentando.

Para recuperar o valor da métrica linklocal_allowance_exceeded, execute o seguinte comando:

ethtool -S eth0

Corrigir problemas de controle de utilização de DNS

Se achar que a causa das suas falhas de DNS é o controle de utilização de DNS, você poderá:


Informações relacionadas

Cotas e considerações sobre o espelhamento de tráfego

Trabalhar com o espelhamento de tráfego

Monitorar a performance de rede de sua instância do EC2

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos