나는 상당히 표준적인 괴상한 설정이라고 생각되는 것을 실행합니다. 네트워킹 장비, 광고 차단을 위한 로컬 DNS 및 사용자 정의 내부 도메인 매핑을 통합합니다( *.home
).
매우 정기적으로 갑자기 내 Mac이 내부 DNS에 실패합니다. foo.home
? 들어 본 적이 없습니다. 외부 DNS는 영향을 받지 않고 계속됩니다. 그래서 지친 마음으로 옛 생각을 깨고 sudo killall -HUP mDNSResponder
(때때로 두 번) 갑자기 모든 것이 다시 좋아졌습니다.
dig
macOS DNS 시스템을 사용하지 않으면 nslookup
이러한 중단이 발생해도 계속해서 정상적으로 작동합니다.
가동 중단 시 실행하면 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로 이동합니다. . 이 가설을 어떻게 테스트해야 할지 잘 모르겠습니다. 나는 로컬 서비스가 실패하거나 충돌하는 경우 등으로 인해 다른 집 거주자가 '인터넷'의 완전한 실패를 경험하지 않기 때문에 DHCP 구성에서 2개의 DNS를 제공합니다.
저는 Tailscale을 실행하지만 이 문제는 제가 사용하기 전에 발생했습니다.
내 로컬 DNS 서비스는 HomeAssistant 감독 Docker 컨테이너로 실행되는 Adguard입니다. DHCP는 Unifi USG에서 제공됩니다.
mDNSResponder에 대한 Console.app의 로그 구문 분석을 시도했지만 값을 해시하는 것처럼 보이고 내가 찾고 있는 것이 100% 아니기 때문에 약간 비밀스럽습니다.
인터넷에는 이런 종류의 일에 관한 꽤 많은 히트작이 있으며, 더 흥미로운 것들은 다음과 같습니다:
- https://discussions.apple.com/thread/254717652
- https://www.reddit.com/r/MacOS/comments/s4ngui/dns_issues_on_safari/
이 문제는 Ventura보다 먼저 발생한 것으로 나타났습니다. 수년 동안 이런 일이 계속되어 왔고 저는 이 일이 꽤 지겨워서 여기서 무슨 일이 일어나고 있는지 자세히 알아보고 싶습니다.