Вопрос или проблема
У меня есть 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.