概要
- macOS 26.3.1 アップデート後、 /etc/resolver/ によるカスタムDNS解決が一部TLDで機能しなくなった問題
- mDNSResponder がIANA未登録TLDを全てmDNSとして扱い、 unicast nameserver を参照しない不具合
- 開発用途やDocker、Kubernetes など、ローカルDNSワークフローが大きく影響
- /etc/hosts による手動回避策はあるが、動的運用には非現実的
- Appleへの バグ報告 済み、影響を受ける場合はアップデートを控える推奨
macOS 26で発生したカスタムTLDのDNS解決障害
- macOS 26.3.1 (Darwin 25.3.0, Build 25D771280a)へのアップデート後、 /etc/resolver/ を使ったTLD単位のDNSリゾルバ設定が一部TLDで機能停止
- IANAルートゾーンに存在しないTLD (例:.internal, .test, .lan, .home.arpa など)で障害発生
- mDNSResponder が該当TLDを全て mDNS(マルチキャストDNS) として内部処理し、 unicast nameserver を参照しない仕様変更
- これにより、 dnsmasq や bind などローカルDNSサーバを使った開発・検証環境のドメイン解決が全滅
- 公式ドキュメント(man 5 resolver)で推奨されていた運用が突然破綻
再現手順と検証結果
- dnsmasq をHomebrew経由で導入し、 /etc/resolver/example-private に
nameserver 127.0.0.1を記載 dig @127.0.0.1 probe.example-private Aは正常応答(127.0.0.1返却)ping probe.example-privateやpython3 socket.getaddrinfo()では Unknown host エラー- scutil --dns ではresolver設定が正しく登録されていると表示されるが、実際には動作しない
- tcpdump で確認しても、 dnsmasq へのクエリ自体が発生していない(mDNSResponderが内部で即座に応答)
影響範囲
- .internal, .test, .home.arpa, .lan など、IANA未登録もしくは特別用途TLD全般
- .test はRFC 6761で明確に「ローカルDNSテスト用」として予約されているが、macOS 26ではmDNS専用扱い
- google.com, bbc.co.uk 等、IANA登録済みTLDは従来通り正常動作
- 影響を受ける主なケース
- dnsmasq + /etc/resolver/ でローカル開発環境構築している全ての開発者
- Docker Desktop や Kubernetes(minikube, kind, k3d) のローカルクラスタ名解決
- Vagrant, Tailscale, VPNクライアント 等が自動生成するresolver設定
- scutil --dns 上は設定が正常に見えるため、原因特定が困難
回避策と問題点
- 唯一の確実な回避策は /etc/hosts への手動エントリ追加
- ただし、 動的なホスト名変化 (Dockerコンテナ等)には非現実的
- 追加・削除のたびに sudo権限 が必要
- 恒久的な解決には Apple側の修正 が必要
参考情報・関連資料
- man 5 resolver (macOS公式ドキュメント)
- RFC 6761 (.testなどの特別用途TLDの扱い規定)
- RFC 8375 (.home.arpaの用途規定)
- IETF draft (.internalの特別用途TLD提案)
- Apple Feedback Assistantへのバグ報告(https://feedbackassistant.apple.com/feedback/22280434)
総括・推奨
- macOS 26.x へアップデート予定の開発者は、 カスタムTLDを利用している場合はアップデートを控える ことを推奨
- 既にアップデート済みの場合は、/etc/hosts手動運用 で一時的に対応
- Appleの対応・修正 が出るまで、開発・検証環境のDNS設計見直しも検討
追記:Docker・ローカル開発者への注意喚起
- Docker や ローカルDNS を多用する開発者は、 macOS自動アップデート による環境破壊リスクに注意
- Appleへのフィードバック を積極的に送り、修正を促すことが重要