Randomize Nameservers DNS

3

É possível listar vários servidores de nomes em /etc/resolv.conf em um sistema Unix e resolver consultas de DNS usando um servidor de nomes aleatório ao fazer uma consulta de DNS e não apenas a primeira?

    
por Steve 09.10.2014 / 18:18

3 respostas

7

Para sistemas Linux, eu uso as opções timeout e rotate em /etc/resolv.conf ... normalmente diminuo o tempo limite do DNS para 1 segundo.

timeout:n
    sets the amount of time the resolver will wait for a response from a remote name server
    before  retrying  the  query  via  a  different  name server.  Measured in seconds, the
    default is RES_TIMEOUT (currently 5, see  <resolv.h>).   The  maximum  value  for  this
    option is silently capped to 30.

e

rotate 
    sets RES_ROTATE in _res.options, which causes round robin selection of nameservers from
    among  those  listed.  This has the effect of spreading the query load among all listed
    servers, rather than having all clients try the first listed server first every time.
    
por 11.10.2014 / 13:49
3

Existem diferentes tipos de randomização ou pseudo-aleatoriedade de resolução de DNS no Linux.

Com o resolvedor libc e /etc/resolv.conf

"options rotate" é um tipo de round-robin do lado do cliente e, como tal, pode ser considerado como uma aleatoriedade de homem pobre. No entanto, o resolvedor libc suporta no máximo 3 servidores diferentes. Aqui está uma amostra /etc/resolv.conf que usa 3 servidores DNS públicos populares e confiáveis.

options timeout:1
options rotate

# resolver1.level3.net
nameserver 209.244.0.3  

# resolver1.opendns.com
nameserver 208.67.222.222  

# google-public-dns-a.google.com
nameserver 8.8.8.8

com dnsmasq

Com o dnsmasq, pode-se usar more de 3 servidores de nomes remetentes . O servidor é escolhido não apenas aleatoriamente, mas é de fato pseudo-aleatoriamente alterado a cada 50 consultas ou 10 segundos se passaram . Isso pode ser verificado fazendo consultas ( log-queries ).

Em /etc/resolv.conf :

nameserver 127.0.0.1

Em /etc/dnsmasq.conf

resolv-file /etc/resolv.dnsmasq

Em /etc/resolv.dnsmasq

# dns1.alternate-dns.com
nameserver 198.101.242.72  

# resolver1.dyndnsinternetguide.com
nameserver 216.146.35.35  

# dns1.safedns.com
nameserver 195.46.39.39  

# resolver1.level3.net
nameserver 209.244.0.3  

# ns1.recursive.dnsbycomodo.com
nameserver 8.26.56.26  

# ordns.he.net
nameserver 74.82.42.42  

# dns.yandex.ru
nameserver 77.88.8.8  

# resolver1.opendns.com
nameserver 208.67.222.222  

# google-public-dns-a.google.com
nameserver 8.8.8.8

# rdns1.ultradns.net
nameserver 156.154.70.1

Com unbound

Com o unbound, também é possível especificar vários resolvedores (mais de 3). A randomização é documentada da seguinte forma:

The fastest server (randomly picked within a so-called RTT band of 400 msec) is selected when a query has to be sent out

link

Em /etc/resolv.conf :

nameserver 127.0.0.1

Em /etc/unbound/unbound.conf :

forward-zone:
    name: "."
    # google
    #forward-addr: 8.8.8.8 

    # fnd.org
    forward-addr: 80.67.169.12 

    # comodo
    forward-addr: 8.26.56.26

    # level 3
    forward-addr: 209.244.0.3
    
por 21.07.2017 / 23:27
1

Resposta curta: Não, não é.

Resposta mais longa: Embora quase todas as variantes do Unix usem o arquivo /etc/resolv.conf para configuração de resolução de nome global, nem perto de todos eles usam a mesma biblioteca de resolvedores para fazer o trabalho. Pode ser que sua variante particular do Unix possa fazer o que você quiser, mas para descobrir isso você terá que ler sua própria documentação. Além disso, não será portável.

    
por 11.10.2014 / 10:34