macOS 26が「.internal」を含むカスタムDNS設定を破損する
概要
- 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へのフィードバックを積極的に送り、修正を促すことが重要