В настоящее время я использую простую конфигурацию ванильного Linux для resolv.conf
... чего-то вроде:
nameserver 123.123.123.123
nameserver 8.8.8.8
Когда 123.123.123.123 падает, DNS-запросы становятся невыносимо медленными, я предполагаю, что Linux каждый раз повторяет первый. Есть ли способ заставить Linux быть умнее в этом вопросе? Проверки работоспособности или что-то в этом роде? Или я неправильно понимаю, как это resolv.conf
должно работать?
решение1
В дополнение к замечательному ответу ewwhite, некоторые дополнения.
Вы можете добавить это в/etc/resolv.conf
options timeout:1 attempts:1 rotate
Значения по умолчанию: время:5, попытки:2.
Происходит следующее: библиотека распознавателя попытается использовать перечисленные /etc/resolv.conf
сверху вниз серверы имен, если опция поворота отсутствует. Если опция поворота присутствует, то она выполняет циклический выбор. Если распознаватель переходит в конец списка, а сервер не отвечает в течение X секунд (учитывая, что X — это параметр тайм-аута), то она повторит весь процесс циклического выбора снова Y-1 раз (где Y — это количество попыток).
Однако следует быть осторожнее и избегать dig и его друзей для тестирования этих опций resolv.conf. Поскольку они избегают библиотеки resolver и напрямую запрашивают серверы имен. getent hosts — лучшая команда для использования. Обратите внимание, что все, что использует glibc resolver, должно подчиняться /etc/resolv.conf
file.
решение2
Это описано через man resolv.conf
.
Попробуйте использовать один из вариантов тайм-аута, чтобы уменьшить значение по умолчанию с 5 секунд до, возможно, 1 секунды...
options timeout:1
nameserver 123.123.123.123
nameserver 8.8.8.8
Но на самом деле, DNS имеет так много доступных отказоустойчивостей, что можно жить без тайм-аутов низкого разрешения. Можно ли выбрать лучший публичный DNS или запустить свой собственный внутренний резолвер?