второй сервер имен в /etc/resolv.conf не найден wget

14

Мой 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, чтобы использовать оба сервера имен?

benhsu
источник

Ответы:

24

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

nameserver Имя сервера IP-адрес

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

И:

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

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

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

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

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

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

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

Стефан Ласевский
источник
2

да, вы можете использовать «поворот» и настройку тайм-аута для улучшения поиска 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
Гарри
источник
1

Является ли 10.0.4.48 рекурсивным днс-сервером или распознавателем?

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

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

Michuelnik
источник
0

Поэтому, чтобы заставить его работать как положено, установите 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.48DNS - сервере и любых других в 8.8.8.8.

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

nameserver 127.0.0.1

Для получения более подробной информации о настройке dnsmasq смотрите мой ответ здесь: /unix/55090/change-default-dns-on-openvpn-connect/545591#545591 .

Nux
источник
-3

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

search mcdc
nameserver 127.0.0.1
nameserver 8.8.8.8

Блейк
источник
6
Какая часть вопроса указывает, что они запускают DNS-сервер на своем компьютере или хотят?
Джей
1
Блейк: Обратите внимание, что 127.0.0.1 обычно используется только для систем, в которых есть демон кэширования сервера имен на локальном хосте. См. Tldp.org/HOWTO/DNS-HOWTO-3.html
Стефан Ласевский