Mac OS 10.14.6 не использует /etc/resolver/test

Вопрос или проблема

У меня есть dns-сервер, работающий на хосте в виртуальной машине с IP 192.168.99.169

Если я выполняю dns-запросы, я получаю такие ответы

dig:

dig @192.168.99.169 hello-john.test

результат:

;; Предупреждение: парсер сообщений сообщает о неправильно сформированном пакете сообщения.

; <<>> DiG 9.10.6 <<>> @192.168.99.169 hello-john.test
; (1 сервер найден)
;; глобальные параметры: +cmd
;; Получен ответ:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43698
;; флаги: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; ПРЕДУПРЕЖДЕНИЕ: Сообщение содержит 8 дополнительных байтов в конце

;; СЕКЦИЯ ВОПРОСА:
;hello-john.test.       IN  A

;; СЕКЦИЯ ОТВЕТА:
hello-john.test.    300 IN  A   192.168.99.169

;; Время запроса: 17 мс
;; СЕРВЕР: 192.168.99.169#53(192.168.99.169)
;; КОГДА: Вс Сен 29 09:50:18 CDT 2019
;; РАЗМЕР МСГ  получено: 73

nslookup:

nslookup hello-john.test 192.168.99.169

результат:

Сервер:     192.168.99.169
Адрес:      192.168.99.169#53

Неавторитетный ответ:
Имя:   hello-john.test
Адрес: 192.168.99.169

Все работает корректно для dns-сервера. Если я обновлю dns-серверы на mac так, чтобы единственным dns-сервером был 192.168.99.169, то все также работает так же, но мне не нужно указывать dns-сервер. Например:

Обновить dns-серверы

networksetup -setdnsservers Wi-Fi 192.168.99.169

dig:

dig hello-john.test
;; Предупреждение: парсер сообщений сообщает о неправильно сформированном пакете сообщения.

; <<>> DiG 9.10.6 <<>> hello-john.test
;; глобальные параметры: +cmd
;; Получен ответ:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6173
;; флаги: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; ПРЕДУПРЕЖДЕНИЕ: Сообщение содержит 8 дополнительных байтов в конце

;; СЕКЦИЯ ВОПРОСА:
;hello-john.test.       IN  A

;; СЕКЦИЯ ОТВЕТА:
hello-john.test.    300 IN  A   192.168.99.169

;; Время запроса: 7 мс
;; СЕРВЕР: 192.168.99.169#53(192.168.99.169)
;; КОГДА: Вс Сен 29 09:57:10 CDT 2019
;; РАЗМЕР МСГ  получено: 73

nslookup:

nslookup hello-john.test

результат:

Сервер:     192.168.99.169
Адрес:      192.168.99.169#53

Неавторитетный ответ:
Имя:   hello-john.test
Адрес: 192.168.99.169

Полное переопределение dns-серверов не работает для меня, так как мне необходимо иметь несколько ip-адресов, которые ищутся.

Я сбросил dns-серверы на нормальный dns-сервер.

networksetup -setdnsservers Wi-Fi 8.8.8.8

Я создаю файл /etc/resolver/test с содержимым:

domain test
nameserver 192.168.99.169
search_order 1
timeout 5

Я могу протестировать, что резолвер был загружен правильно с помощью scutil:

scutil --dns

результат:

Конфигурация DNS

резолвер #1
  nameserver[0] : 8.8.8.8
  флаги    : Запрос A записей
  доступность    : 0x00000002 (Доступен)

резолвер #2
  домен   : local
  параметры  : mdns
  таймаут  : 5
  флаги    : Запрос A записей
  доступность  : 0x00000000 (Недоступен)
  порядок    : 300000

резолвер #3
  домен   : 254.169.in-addr.arpa
  параметры  : mdns
  таймаут  : 5
  флаги    : Запрос A записей
  доступность  : 0x00000000 (Недоступен)
  порядок    : 300200

резолвер #4
  домен   : 8.e.f.ip6.arpa
  параметры  : mdns
  таймаут  : 5
  флаги    : Запрос A записей
  доступность  : 0x00000000 (Недоступен)
  порядок    : 300400

резолвер #5
  домен   : 9.e.f.ip6.arpa
  параметры  : mdns
  таймаут  : 5
  флаги    : Запрос A записей
  доступность  : 0x00000000 (Недоступен)
  порядок    : 300600

резолвер #6
  домен   : a.e.f.ip6.arpa
  параметры  : mdns
  таймаут  : 5
  флаги    : Запрос A записей
  доступность  : 0x00000000 (Недоступен)
  порядок    : 300800

резолвер #7
  домен   : b.e.f.ip6.arpa
  параметры  : mdns
  таймаут  : 5
  флаги    : Запрос A записей
  доступность  : 0x00000000 (Недоступен)
  порядок    : 301000

резолвер #8
  домен   : test
  nameserver[0] : 192.168.99.169
  таймаут  : 5
  флаги    : Запрос A записей
  доступность  : 0x00020002 (Доступен, адрес доступен напрямую)
  порядок    : 1

Конфигурация DNS (для ограниченных запросов)

резолвер #1
  nameserver[0] : 8.8.8.8
  if_index : 5 (en0)
  флаги    : Ограниченный, Запрос A записей
  доступность  : 0x00000002 (Доступен)

Однако, когда я запускаю dig или nslookup, он не использует резолвер. Я предполагаю, что это связано с порядком, в котором используются конфигурации резолвера.

dig:

dig hello-john.test

результат:

; <<>> DiG 9.10.6 <<>> hello-john.test
;; глобальные параметры: +cmd
;; Получен ответ:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 39721
;; флаги: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT ПСЕВДОСЕКЦИЯ:
; EDNS: версия: 0, флаги:; udp: 512
;; СЕКЦИЯ ВОПРОСА:
;hello-john.test.       IN  A

;; СЕКЦИЯ АВТОРИТЕТА:
.           86388   IN  SOA a.root-servers.net. nstld.verisign-grs.com. 2019092900 1800 900 604800 86400

;; Время запроса: 16 мс
;; СЕРВЕР: 8.8.8.8#53(8.8.8.8)
;; КОГДА: Вс Сен 29 10:06:50 CDT 2019
;; РАЗМЕР МСГ  получено: 119

nslookup:

nslookup hello-john.test

результат:

Сервер:     8.8.8.8
Адрес:      8.8.8.8#53

** сервер не может найти hello-john.test: NXDOMAIN

Если я выключаю Wi-Fi, я просто вижу, что резолвер #1 из scutil --dns просто отображается как

Конфигурация DNS

резолвер #1
  флаги    : 
  доступность    : 0x00000000 (Недоступен)

Я считаю, что мне не хватает какой-то конфигурации в /etc/resolver/test, но я не могу найти способ убедиться, что она используется.

Спасибо за вашу помощь!

Хотя nslookup и dig не возвращают корректный ответ, похоже, что я все равно могу пинговать хост

ping:

ping hello-john.test

результат:

PING hello-john.test (192.168.99.169): 56 байт данных
64 байта от 192.168.99.169: icmp_seq=0 ttl=64 время=0.259 мс
64 байта от 192.168.99.169: icmp_seq=1 ttl=64 время=0.390 мс

Это работает достаточно хорошо для моих целей

Ответ или решение

Проблема с разрешением DNS в Mac OS 10.14.6

Ваша ситуация с разрешением DNS в Mac OS 10.14.6, когда файлы в каталоге /etc/resolver/test не используются, несмотря на корректную настройку, может быть связана с несколькими аспектами.

1. Проверка конфигурации файла /etc/resolver/test

Убедитесь, что файл /etc/resolver/test создан и настроен корректно. Убедитесь, что вы используете правильные разрешения и правильный синтаксис. Лучше всего использовать следующие команды:

sudo chmod 644 /etc/resolver/test
sudo chown root:wheel /etc/resolver/test

Содержимое файла должно выглядеть так:

domain test
nameserver 192.168.99.169
search_order 1
timeout 5

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

2. Проверка настроек сети

Убедитесь, что настройки сети верны и что ваш Mac действительно использует указанный DNS-сервер. Вы можете это проверить с помощью команды:

scutil --dns

Это покажет список всех разрешателей DNS, которые используются вашей системой. Обратите внимание на то, что ваш DNS-сервер 192.168.99.169 должен быть в списке и с флагом "Reachable".

3. Проведение тестов

Для проверки использования вашего DNS-сервера попробуйте выполнить следующие команды:

dig hello-john.test @192.168.99.169

и

dig hello-john.test

Вы должны увидеть ответ от вашего локального DNS-сервера в первом случае. Если вместо этого вы получаете ответ от другого DNS-сервера (например, 8.8.8.8), это может указывать на то, что системный DNS-кэш не обновляется или что существует конфликт с конфигурацией.

Также обратите внимание, что поскольку вы можете пинговать hello-john.test, это значит, что локальная таблица хостов или кэш DNS всё еще работает как ожидается.

4. Очистка кэша DNS

Иногда кэш может хранить старые записи, что может вызывать подобные проблемы. Чтобы очистить кэш DNS на Mac, выполните следующую команду:

sudo killall -HUP mDNSResponder

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

5. Проблемы с конфигурацией

Если файл /etc/resolver/test используется, но все равно не работает, возможно, вы можете рассмотреть возможность использования другого подхода, такого как настройки в файле /etc/hosts или настройка файл NetworkManager, если у вас работает DHCP.

Заключение

Проблема с использованием файла /etc/resolver/test может быть сложной, и вам может понадобиться проверить несколько уровней конфигурации сети и DNS, чтобы найти источник проблемы. Следуя приведённым выше шагам и проверяя каждый уровень настройки, вы сможете диагностировать и устранить проблему. Если же проблемы сохранятся, может потребоваться глубокий анализ сетевых настроек или использование альтернативных методов конфигурации DNS.

Оцените материал
Добавить комментарий

Капча загружается...