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

второй сервер имен в /etc/resolv.conf не загружен wget

Мой файл resolv.conf выглядит так:

; generated by /sbin/dhclient-script
search mcdc
nameserver 10.0.4.48
nameserver 8.8.8.8

если я сделаю nslookup www.google.com оно работает

nslookup www.google.com
;; Got SERVFAIL reply from 10.0.4.48, trying next server
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
www.google.com  canonical name = www.l.google.com.

но когда я скручиваю www.google.com, он не может разрешить хост.

Я попытался запустить curl под strace и обнаружил, что curl использует только первый сервер имен в resolv.conf, а не второй. Если я переключу две строки сервера имен, www.google.com разрешится, а внутренние DNS-имена - нет, так что это не лучший обходной путь.

Как я могу исправить resolv.conf для использования обоих серверов имен?

По умолчанию resolv.conf и преобразователь проверяют серверы в указанном порядке. Преобразователь будет пробовать следующий сервер имен только в том случае, если время ожидания первого сервера истекло. В справочная страница resolv.conf говорит:

nameserver IP-адрес сервера имен

Интернет-адрес (в виде точек) сервера имен, который должен запрашивать преобразователь. Может быть указано до MAXNS (в настоящее время 3, см.) Серверов имен, по одному на ключевое слово. Если серверов несколько, библиотека распознавателя запрашивает их в указанном порядке.

И:

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

Также см. резольвер (5) справочную страницу для получения дополнительной информации.

Вы можете изменить поведение решателя, используя rotate, который будет запрашивать серверы имен в циклическом порядке:

rotate устанавливает RES_ROTATE в _res.options, что вызывает циклический выбор серверов имен из числа перечисленных. Это приводит к распределению нагрузки запросов между всеми перечисленными серверами, вместо того, чтобы все клиенты каждый раз пробовали первым из перечисленных серверов.

Однако nslookup будет использовать второй сервер имен, если получит SERVFAIL с первого сервера имен. Из Справочная страница nslookup:

[нет] сбой Попробуйте следующий сервер имен, если сервер имен отвечает с помощью SERVFAIL или отсылки (nofail) или завершает запрос (сбой) на такой ответ.

(По умолчанию = нет)

да, вы можете использовать настройку «поворота» и тайм-аута для улучшения поиска DNS, ниже приведен пример,

Пример:

[root@centos-xxxxxx ~]# cat /etc/resolv.conf
options rotate
options timeout:1
search xyz.abc.local
nameserver 192.168.56.3
nameserver 10.0.2.4

10.0.4.48 - это рекурсивный DNS-сервер, известный как преобразователь?

Или это только авторитетный сервер для ваших внутренних зон?

Вам следует настроить внутренний преобразователь, который также может хранить ваши достоверные данные.

Итак, чтобы он работал должным образом, установите dnsmasq или другой облегченный репитер DNS (или полноценный DNS-сервер). Видеть Сравнение программного обеспечения DNS-серверов.

Настроить dnsmasq очень просто:

server=10.0.4.48
server=8.8.8.8

Вы также можете указать, для каких доменов следует использовать DNS. Например.:

server=/mcdc/10.0.4.48
server=8.8.8.8

Это заставит dnsmasq искать *.mcdc в 10.0.4.48 DNS сервер и любой другой в 8.8.8.8.

В /etc/resolv.conf вы просто используете свой локальный DNS:

nameserver 127.0.0.1

Подробнее о настройке dnsmasq см. Мой ответ здесь: https://unix.stackexchange.com/questions/55090/change-default-dns-on-openvpn-connect/545591#545591.

Если можно, я бы настроил его таким образом.

search mcdc
nameserver 127.0.0.1
nameserver 8.8.8.8