Можно ли перечислить несколько серверов имен в /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.
/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 может делать то, что вы хотите, но чтобы узнать это, вам придется прочитать его собственную документацию. Кроме того, он вообще не будет портативным.