2 ポイント 投稿者 GN⁺ 2026-03-21 | 3件のコメント | WhatsAppで共有
  • macOS 26.3.1で /etc/resolver/ ベースのドメイン別DNS設定が非標準TLDに対して無効化され, 既存のローカル開発環境が停止する問題が発生
  • mDNSResponder がカスタムTLDへのリクエストをmDNSとしてのみ処理し, 指定されたユニキャストネームサーバーをまったく参照しない
  • .internal, .test, .home.arpa, .lan など IANAルートゾーンに存在しないTLD全般で失敗し, 標準ドメイン(google.com など)は正常に動作
  • 唯一の暫定回避策は /etc/hosts への手動登録だが, 動的環境(Docker, Kubernetes など) では現実的ではない
  • macOS開発者コミュニティで長年使われてきた ローカルDNSワークフロー全体が停止し, 開発ツールやVPN統合機能に広範な影響が出ている

macOS 26で発生したDNSリグレッション

  • macOS 26.3.1(Darwin 25.3.0, Build 25D771280a)で /etc/resolver/ によるドメイン別DNS設定機能が壊れている

    • macOS 25.xまでは正常に動作していた機能が, 26へのアップデート後に停止
    • Appleの公式ドキュメント(man 5 resolver)に明記されている機能にもかかわらず, 非標準TLDではもはや動作しない
  • mDNSResponder がすべてのカスタムTLDリクエストをmDNSとして横取りし, 指定されたユニキャストネームサーバーを無視する

    • getaddrinfo() を使うすべてのアプリケーション(ping, curl, python3 socket)で “Unknown host” エラーが発生
    • tcpdump の結果, ローカルDNS(127.0.0.1:53)へのトラフィックがまったく発生しない
    • dns-sd -G v4 コマンドでは “No Such Record” 応答と異常に長いTTL(約108,002秒)が表示される

テストと再現手順

  • Homebrewでインストールした dnsmasq をローカルDNSリゾルバとして設定し, *.internal または *.example-private ドメインを 127.0.0.1 にマッピング

    • /etc/resolver/example-private ファイルに nameserver 127.0.0.1 を指定
    • scutil --dns コマンドでは当該リゾルバが正常に登録されているように表示される
    • しかし ping probe.example-private を実行すると “Unknown host” エラーが発生
  • dig @127.0.0.1 および host コマンドは正常な応答を返すが, システムリゾルバを使うアプリはすべて失敗する

    • これは mDNSResponder が内部的にクエリを遮断し, ユニキャストDNSを呼び出していないため

影響を受けるTLD一覧

TLD 状態 備考
.internal 失敗 IETFドラフトの特別用途TLD。macOS 25では正常
.test 失敗 RFC 6761 §6.2によりローカルテスト用として予約
.home.arpa 失敗 RFC 8375により家庭用ネットワーク向けとして予約
.lan 失敗 非公式だが広く使われている
その他の未登録TLD 失敗 IANAルートゾーンに存在しないすべてのTLD
  • .test の場合, RFC 6761に明記されている通り 通常のDNSで解決されるべきにもかかわらず, macOS 26ではこれをmDNS専用として処理している
  • 一方で, google.com, bbc.co.uk など IANA登録済みドメインは従来通り正常に動作する

開発環境とツールへの影響

  • ローカル開発用DNSワークフロー全体が停止している

    • dnsmasq + /etc/resolver/ の組み合わせで *.test, *.internal などを使う開発者
    • Docker Desktop や類似ツールの コンテナ名解決機能
    • /etc/resolver/ ファイルを自動生成する Vagrant, Tailscale, VPNクライアント
    • Kubernetesのローカル開発ツール(minikube, kind, k3d など)の *.cluster.local 解決
  • システムは scutil --dns ではリゾルバ設定が正常に見えるため, ユーザーは問題に気づきにくく, ログやエラーメッセージもない

暫定回避策と限界

  • 唯一動作する方法は /etc/hosts にドメインマッピングを手動で追加すること
    • この方法は mDNSResponder を完全に回避する
    • しかし Dockerや動的DNS環境では現実的ではなく, 変更のたびに sudo 権限が必要になる

技術仕様と検証環境

  • macOS 26.3.1 (Build 25D771280a), Apple Silicon(arm64)
  • dnsmasq はHomebrew経由でインストールされ, 127.0.0.1:53で待ち受け
  • dig および host コマンドは正常応答, pingcurlpython3 socket.getaddrinfo は失敗
  • 関連ドキュメントおよび標準:
    • man 5 resolver — macOSの /etc/resolver/ メカニズムに関する文書
    • RFC 6761 — .test, .localhost, .invalid, .example など特別用途ドメインの定義
    • RFC 8375 — home.arpa ドメインの定義
    • IETF draft-ietf-dnsop-interneti-mdn — .internal 特別用途ドメインのドラフト

3件のコメント

 
lidar 2026-03-22

このせいで Tailscale MagicDNS を数日間使えずにいます..

 
minhoryang 2026-03-21

Tailscaleがこの問題を回避してくれることを期待します。

 
GN⁺ 2026-03-21
Hacker Newsのコメント
  • こういう些細な不具合(papercuts)のせいで macOS を離れた
    LLM でバグレポートを書くこと自体は、レビューを前提とするなら構わないが、「macOS 25 では動いていた」のような明らかな誤りがそのまま入っていると信頼性が落ちる
    こうしたレポートが増えると、検証の負担のせいで人々は
    AI が書いたレポート
    をそのまま捨てるようになる気がする

    • AI が作ったコンテンツであることを明示しない利用は絶対に容認できないと思う
      AI に自分の名前で文章を書かせるのは、「自分の時間は君の時間より大事だ」という印象を与える無礼な行為
      もし公に AI の利用を明かすと都合が悪いなら、その時点でその利用目的自体を考え直すべきだ
    • どの OS にもこういう些細な問題はある
      Linux や Windows でも同じくらいつらい事例はいくらでも書ける。結局は**「どの毒を選ぶか」**の問題だ
    • これは何十年も続いてきた Apple の伝統だ
      Microsoft は後方互換性の維持、Apple は既存機能を大胆に壊すことで知られていた
      最近は Microsoft も昔ほど保守的ではなく、Apple はむしろ以前より安定志向になった気がする
    • そもそも Apple は昔からレポートをあまり読まない会社として有名なので、LLM レポートを捨てたとしても大して変わらない気がする
    • 自分はどの OS でもこうした些細な問題に遭ってきたが、Linux はロールバックが簡単
      NixOS のようにブートメニューで前のバージョンを選べば、システム全体を元に戻せる
      ノート PC では macOS を使っているが、実際の作業の大半はLinux コンテナの中でしている
  • macOS 26 はこれまでで最も互換性が壊れているバージョン
    いくつもの意図的な変更によってアプリ開発が非常に難しくなった
    たとえば Lunar は SDR ニット値を任意に設定できなくなって輝度制御が塞がれ、
    YellowDot はマイク表示灯の明るさ調整ができなくなって使えなくなった
    さらに、タイトルなしウィンドウでのマウスイベントの問題、ガンマテーブルを適用できない問題、
    Clop のようなアプリでドラッグ時に元ファイルのパスを失う問題など、さまざまなバグがある

    • iOS 27 がSnow Leopard スタイルの安定化版になるという噂がある
      macOS 27 もそうなってほしい(ソース
    • 音楽制作を趣味にしている立場からすると、マイク表示灯は本当に不要で邪魔だ
      macOS の哲学があまりにも頑固で一方的で息苦しい
    • YellowDot の問題は、LUT を使って録画ドットの色を黒にマッピングする形で回避できるのではないかと思う
      macOS は使っていないが、理論上は可能に見える
    • M1 では 1600 ニットまで問題なかったのに、M5 では 600 ニット以上にできない理由はこれだったのか
      しばらくは諦めるしかなさそうだ
    • マイクのドットの明るさ制限はプライバシー保護のため
      マルウェアがカメラやマイクへのアクセスを隠せないようにする措置だ
      また、SDR 輝度制限は今後登場するOLED ディスプレイのバッテリー問題を先回りして防ごうとしているのかもしれない
  • Apple がハードウェアとソフトウェアで分離される日を今でも待っている
    Apple Silicon は欲しいが、彼らの OS は嫌いだ
    自分のカーネルやモジュールを直接動かせないなら、それは自分の機材ではない
    隣のノート PC は coreboot で起動しているが、それが自分の哲学を表している

    • Mac でもカーネルを自分で動かせるのでは? 問題はドライバー対応ではないのか
    • macOS が完璧ではないにせよ、全体を「ひどい」と呼ぶのは大げさな評価だと思う
    • 自分も macOS は嫌いではない。ただ「ひどい」と断じるのは説得力に欠ける
  • ローカルの Web 開発では *.localhost を使っている
    すべてのモダンブラウザがこれを自動的に127.0.0.1 に解決するので、DNS 設定や hosts の修正が不要だ
    ただしブラウザ以外のプログラム(python、wget など)には適用されない

    • *.*.localhost もサポートされているので、今では本番ドメイン構成をそのままローカルに複製できる
      ArchiveBox はこの機能でスナップショットごとのドメイン分離を実装し、セキュリティリスクを減らした
    • Tahoe では python や wget でも問題なく動く
    • Chrome で試したが、Safari でも同様に動くはずだ
    • 自分もこの方法を使っている。ただ .localhost は少し長いのが惜しい
      以前は .local を使っていたが、衝突が多かった
    • こちらでは dev.our-root-domain.com公開 DNS で 127.0.0.1 にマッピングして使っている
  • 古い Yosemite マシンで、複数のローカル TLD を提供する設定を長く使ってきた
    /etc/resolver 方式はすでに 2014 年ごろから廃止予定だったが、今回ついに完全に削除されたようだ
    代わりに scutil を直接使って設定を保存するのが正攻法だ

    • ただし scutil だけでは不十分だ
      macOS の一部の名前解決は依然としてmDNSResponder経由で、この設定を無視したり上書きしたりする
      そのため結局はunbound や dnsmasqを使う方が単純だ
  • 自分も /etc/resolver/X と dnsmasq の組み合わせで複数の TLD を使っているが、問題は出ていない
    設定ファイルには常に domain ディレクティブを入れている
    実際にはこの設定がほぼ常に必要だった
    おそらく**domain 項目を追加すれば解決**するかもしれない

  • 自分は主に Linux を使っているが、人々がなぜ macOS のデザインが悪いと言うのかよく分からない
    UX だけ見れば、macOS はかなり洗練されていると感じた
    人気のある Gnome テーマの多くも、結局は macOS スタイルを模倣している

    • オンラインでは不満の大きい人だけが目立つ偏りがある
      特に HN ではそうだと思う
    • Tahoe 版も大半は問題なかった
      ウィンドウの角の調整はやりにくいが、全体としては満足している
      結局どの OS にもバグはある
    • Apple の**機能追加文化(feature creep)**のせいで、UX が毎回不必要に変わることが多い
      たとえば通知ダイアログがその代表だ
    • 自分も macOS の美的感覚は良いと思う
      ただ、カスタマイズ性の不足は残念だ
      Windows 98 のような昔の UI を懐かしむのは世代差なのかもしれない
    • 全体として UX は気に入っている
      フルスクリーン切り替えの方式は独特だが、慣れれば便利だ
      ただしウィンドウタイル機能の不在は不便だ
      それでも Linux の方を好む。suspend や電源管理が 8 年経っても問題だが
  • 以前、Apple が iOS で自己署名証明書を塞いでしまい、ローカル HTTPS 開発がほぼ不可能になったことがあった
    なぜそういう部分に手を入れたのか理解しがたい

  • 自分は macOS が好きだ
    標準でzsh が搭載されていて、Linux でやっていたことのほとんどを個人用 PC でもできる

  • *.localhost は標準で動作する
    dnsmasq なしでも複数のホスト名を 127.0.0.1 に向けられる

    • ただし、内部のプライベート IP を別のアドレスにマッピングする必要がある場合には、この方法では足りない
    • *.example-private のようなドメインは、複数の機器をプライベート IP で区別するために必要だ
      単に localhost だけ使うなら、127.0.0.1 を使えばいい
      個人的には *mDNS の .local を使って DHCP ベースの自動設定を活用している