Назад | Перейти на главную страницу

Случайное изменение DNS-серверов

Можно ли перечислить несколько серверов имен в /etc/resolv.conf в системе Unix и разрешать запросы DNS с использованием случайного сервера имен при выполнении запроса DNS, а не только первого?

Для систем Linux я использую timeout и rotate варианты в /etc/resolv.conf... Я обычно уменьшаю время ожидания DNS до 1 секунды.

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.

и

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.

Существуют различные виды рандомизации или псевдослучайности разрешения DNS в Linux.

С преобразователем libc и /etc/resolv.conf

«чередование опций» - это разновидность циклического перебора на стороне клиента, и поэтому его можно рассматривать как случайную выборку для бедняков. Однако преобразователь libc поддерживает не более 3 различных серверов. Вот образец /etc/resolv.conf который использует 3 популярных и надежных публичных DNS-сервера.

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

С несвязанным

При несвязке можно также указать несколько преобразователей (более 3). Рандомизация документирована следующим образом:

Самый быстрый сервер (выбирается случайным образом в так называемом диапазоне RTT 400 мс) выбирается, когда необходимо отправить запрос.

https://www.unbound.net/documentation/info_timeout.html

В /etc/resolv.conf:

nameserver 127.0.0.1

В /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

Краткий ответ: нет.

Более длинный ответ: в то время как почти все варианты Unix используют файл /etc/resolv.conf для конфигурации глобального разрешения имен, далеко не все они фактически используют одну и ту же библиотеку преобразователя для выполнения работы. Возможно, ваш конкретный вариант Unix может делать то, что вы хотите, но чтобы узнать это, вам придется прочитать его собственную документацию. Кроме того, он вообще не будет портативным.