Dns

1. Dns

Ro
ro2011

(usa Debian)

Enviado em 27/07/2019 - 21:20h

Caros, como faço para verificar no servidor dns qual máquina cliente está fazendo mais requisões?


  


2. Re: Dns

Paulo
paulo1205

(usa Ubuntu)

Enviado em 27/07/2019 - 22:20h

Geralmente você habilitaria logs de consultas feitas ao servidor, e examinaria o resultado desses logs. Mas a forma de fazer isso em detalhes depende de qual sistema de serviço de DNS você está usando. Seria o BIND, o djbdns, Knot DNS, ou algum outro?

Outra forma de fazer é pendurar um tcpdump na interface por onde chegam as requisições, e ver quem se comunica com o servidor. O exemplo abaixo escuta mil pacotes na porta de DNS (53), e exibe a lista de clientes alguns resultados estatísticos simples após esses mil pacotes.
sudo tcpdump -t -n -i sua_interface_de_rede \( udp or tcp \) and dst port 53 and dst host seu_ip -c 1000 | \
perl -ne '
next unless /^IP\s+(\d+\.\d+\.\d+\.\d+)\.\d+\s*>\s*.*\((\d+)\)\s*$/ || /^IP\s+(\d+\.\d+\.\d+\.\d+)\.\d+\s*>\s*.*\slength\s+(\d+)\s*$/;
$tot_pkts++; $pkts{$1}++;
$tot_bytes+=$2; $bytes{$1}+=$2;
END {
printf("%-8.8s %-5.5s %-8.8s %-5.5s %s\n", qw(PACKETS %PCKT BYTES %BYTE CLIENT));
foreach $ip (sort { $pkts{$a}<=>$pkts{$b} } keys(%pkts)){
printf("%-8.8g %-5.4g %-8.8g %-5.4g %s\n", $pkts{$ip}, $pkts{$ip}*100/$tot_pkts, $bytes{$ip}, $bytes{$ip}*100/$tot_bytes, $ip);
}
}'


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)


3. Re: Dns

Paulo
paulo1205

(usa Ubuntu)

Enviado em 29/07/2019 - 08:23h

Estranho que o VOL indica que há quatro respostas neste tópico, mas eu só vejo minha resposta anterior.


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)


4. Re: Dns

Ro
ro2011

(usa Debian)

Enviado em 29/07/2019 - 20:14h

Paulo, obrigado pela atenção. Estou utilizando BIND

Tudo isso é um comando só, vai inserindo na mesma linha?

tks


5. Re: Dns

Paulo
paulo1205

(usa Ubuntu)

Enviado em 30/07/2019 - 00:35h

ro2011 escreveu:

Paulo, obrigado pela atenção. Estou utilizando BIND

Tudo isso é um comando só, vai inserindo na mesma linha?

tks


O shell entende isso como uma única linha de comando, tanto para fins de histórico quanto para decidir o momento de executar o que nessa linha está contido. Eu escrevi em múltiplas linhas para dar clareza, mas usando recursos do shell que permitem realmente dividir essa única linha de comando em várias linhas físicas (a barra invertida no final da primeira linha, e o texto entre apóstrofos, que pode ser compostos por várias linhas). Você pode digitar o texto da maneira como está ali, com várias linhas, ou pode condensar tudo numa linha física só, se quiser, embora isso diminua a clareza, na minha opinião.

Estritamente falando, porém, não é um comando só. É uma só pipeline (conjunto de comandos encadeados, em que a saída de um comando serve como entrada para o comando seguinte). Essa pipeline é composta por dois comandos distintos, que são invocações aos programas externos tcpdump e perl. Cada um deles tem argumentos que definem pequenos algoritmos: no caso do tcpdump, formando uma expressão lógica para filtrar os pacotes a serem capturados, e, no caso do Perl, para contar e, ao fim, exibir, em ordem, quantos pacotes cada cliente observado enviou ao servidor.


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)


6. Re: Dns

Ro
ro2011

(usa Debian)

Enviado em 31/07/2019 - 20:31h

Paulo, obrigado pelas informações