Я использую то, что, как я полагаю, является довольно стандартной настройкой для задротов. Сетевое оборудование Unify, локальный DNS для блокировки рекламы и настраиваемое внутреннее сопоставление доменов ( *.home
).
Очень часто мой Mac внезапно просто выходит из строя для внутренних DNS. foo.home
? никогда не слышал об этом. Внешние DNS продолжают работать без изменений. Поэтому я устало выламываю старое sudo killall -HUP mDNSResponder
(иногда дважды), и внезапно все снова хорошо в мире.
dig
и nslookup
не используйте систему DNS macOS, и они продолжат нормально работать, несмотря на эти сбои.
В случае сбоя, если я запущу, то dscacheutil -q host -a name foo.home
ничего не получу. Перезапускаю mDNSResponder
, и он выдает нормальный вывод:
name: foo.home
ip_address: 192.168.1.4
То же самое для dns-sd -q foo.home
:
DATE: ---Wed 12 Jul 2023---
10:39:54.691 ...STARTING...
Timestamp A/R Flags IF Name Type Class Rdata
10:39:54.692 Add 40000002 0 foo.home.v Addr IN 0.0.0.0 No Such Record
Затем перезапустите mDNSResponder и:
DATE: ---Wed 12 Jul 2023---
10:58:17.585 ...STARTING...
Timestamp A/R Flags IF Name Type Class Rdata
10:58:17.591 Add 2 0 foo.home. Addr IN 192.168.1.4
Эта ошибка довольно часто приводит к отравлению внутренних кэшей DNS браузера, и мне приходится их очищать. До сих пор я сталкивался с такой проблемой в Brave, Firefox и Safari.
Вот мой scutil --dns
вывод:
DNS configuration
resolver #1
search domain[0] : tail44a85.ts.net
search domain[1] : home
nameserver[0] : 100.100.100.100
if_index : 22 (utun3)
flags : Supplemental, Request A records, Request AAAA records
reach : 0x00000003 (Reachable,Transient Connection)
order : 100200
resolver #2
nameserver[0] : 192.168.1.4
nameserver[1] : 9.9.9.9
if_index : 15 (en0)
flags : Request A records
reach : 0x00020002 (Reachable,Directly Reachable Address)
order : 200000
resolver #3
domain : tail44a85.ts.net.
nameserver[0] : 100.100.100.100
if_index : 22 (utun3)
flags : Supplemental, Request A records, Request AAAA records
reach : 0x00000003 (Reachable,Transient Connection)
order : 100201
resolver #4
domain : local
options : mdns
timeout : 5
flags : Request A records
reach : 0x00000000 (Not Reachable)
order : 300000
resolver #5
domain : 254.169.in-addr.arpa
options : mdns
timeout : 5
flags : Request A records
reach : 0x00000000 (Not Reachable)
order : 300200
resolver #6
domain : 8.e.f.ip6.arpa
options : mdns
timeout : 5
flags : Request A records
reach : 0x00000000 (Not Reachable)
order : 300400
resolver #7
domain : 9.e.f.ip6.arpa
options : mdns
timeout : 5
flags : Request A records
reach : 0x00000000 (Not Reachable)
order : 300600
resolver #8
domain : a.e.f.ip6.arpa
options : mdns
timeout : 5
flags : Request A records
reach : 0x00000000 (Not Reachable)
order : 300800
resolver #9
domain : b.e.f.ip6.arpa
options : mdns
timeout : 5
flags : Request A records
reach : 0x00000000 (Not Reachable)
order : 301000
DNS configuration (for scoped queries)
resolver #1
search domain[0] : home
nameserver[0] : 192.168.1.4
nameserver[1] : 9.9.9.9
if_index : 15 (en0)
flags : Scoped, Request A records
reach : 0x00020002 (Reachable,Directly Reachable Address)
resolver #2
search domain[0] : tail44a85.ts.net
nameserver[0] : 100.100.100.100
if_index : 22 (utun3)
flags : Scoped, Request A records, Request AAAA records
reach : 0x00000003 (Reachable,Transient Connection)
Я видел несколько разговоров в интернете о том, что проблема может быть в наличии «запасного» DNS, т. е. mDNSResponder пробует нашего локального парня, у него происходит сбой из-за какой-то странности сети или сервиса, а затем он списывается и переходит на DNS#2. Я не уверен, как проверить эту гипотезу. Я обслуживаю 2 DNS в конфигурации DHCP, потому что если локальный сервис выйдет из строя/откажется и т. д., то другие жильцы дома не испытают полного отказа «интернета».
Я использую Tailscale, но обнаружил, что эта проблема возникла еще до того, как я начал им пользоваться.
Моя локальная служба DNS — Adguard, работающий как Docker-контейнер HomeAssistant Supervised. DHCP предоставляется Unifi USG.
Я попытался проанализировать логи в Console.app на предмет mDNSResponder, но они немного запутаны, поскольку, похоже, они хэшируют значения, а я не на 100% понимаю, что ищу.
В Интернете есть немало ссылок на подобные темы, вот некоторые наиболее интересные из них:
- https://discussions.apple.com/thread/254717652
- https://www.reddit.com/r/MacOS/comments/s4ngui/dns_issues_on_safari/
Я обнаружил, что эта проблема возникла еще до Вентуры. Она длится уже много лет, и мне это надоело, поэтому хотелось бы разобраться, что здесь происходит.