macOS DNS で何が起こっているのでしょうか?

macOS DNS で何が起こっているのでしょうか?

私が実行しているのは、かなり標準的なオタク設定だと思います。ネットワーク機器を統合し、広告ブロック用のローカル DNS とカスタム内部ドメイン マッピング ( *.home) を使用しています。

非常に頻繁に、突然、私の Mac が内部 DNS で失敗します。foo.home? 聞いたことがありません。外部 DNS は影響を受けません。そのため、私は疲れ果てて古いもの (時には 2 回) を取り出しsudo killall -HUP mDNSResponder、突然、すべてが元通りになります。

digmacOS の 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 によって提供されます。

Unifi DHCP DNS設定

mDNSResponder の Console.app でログを解析しようとしましたが、ハッシュ値が表示されているようで少しわかりにくく、探しているものが 100% 見つかりません。

インターネットには、この種のことに関するヒットが数多くありますが、特に興味深いものは次のとおりです。

この問題は Ventura より前からあったことがわかりました。何年も続いていて、もううんざりしているので、ここで何が起こっているのかを突き止めたいと思います。

関連情報