DNS リゾルバとスプリットホライズンの落とし穴:クラウド Mac mini へ SSH ホスト名が失敗するとき(2026)
HK、JP、KR、SG、US の専用 Mac mini は到達できるはずなのに、クライアント側の macOS や Windows がホスト名を誤った IP、NXDOMAIN、またはルーティングできない IPv6 に解決してしまうことがあります。この 2026 年版ガイドは、パスワード誤りやファイアウォールを既に除外したチーム向けです。失敗マトリクスを辿り、システム・VPN・DoH ヘルパーなどリゾルバの積み重ねを比較し、インシデントチャンネルに貼れる9 ステップのランブックを示します。トンネルをポリシーが握る場合は ゼロトラスト VPN ルーティングと併せ、DNS の答えが妥当になったら MTR 診断と組み合わせてください。
DNS で痛む人—「クラウドが遅い」ではない
症状は三類型です。即時の NXDOMAIN(SSH が 1 秒未満で落ちる)、30〜75 秒のハング(リゾルバのタイムアウト階段)、成功が不安定(Wi‑Fi VLAN ごとに社内ビューが変わる)。スプリットトンネル VPN の開発者は多く、ノート PC が突然社内 DNS を優先し、プロバイダのホスト名をブラックホールやキャプティブポータル用 IP に書き換えます。運用チームは、ラップトップと同じ検索ドメインを転送しない Kubernetes ノードから /etc/resolv.conf を継承した CI ランナーでも苦しみます。
- 午後だけで オフィス有線、消費者向け VPN、企業 ZTNA を切り替えるハイブリッド勤務者。
- DNS-over-HTTPS ヘルパーをグローバルに入れ、UI の手がかりなしに macOS のリゾルバ優先度を並べ替える自動化ホスト。
- 企業の
search domainがあるときだけ解決する短い名前を使うsshエイリアスをコピーした人。
失敗マトリクス:症状 → DNS 仮説 → 証拠
| 症状 | 有力な DNS 原因 | 証明コマンド/シグナル | 典型的な修正の型 |
|---|---|---|---|
ssh: Could not resolve hostname が即時 | 権威またはスタブが再帰拒否による NXDOMAIN | 壊れたネットワークと正常ネットワークで dig A と dig AAAA を比較 | FQDN 例外を追加するか競合する検索サフィックスを無効化 |
| バナー前にハングし、その後は動く | デュアルスタック:AAAA を先に試し IPv6 経路がブラックホール | 一度 ssh -4 で実行し、AAAA の答えを確認 | Match で IPv4 を優先するか v6 ルーティングを修正 |
| LTE では動くがオフィス Wi‑Fi で失敗 | スプリットホライズンの社内ゾーンが公開レコードを覆う | 両経路で scutil --dns を取得 | プロバイダゾーン向けの IT フォワーダ迂回 |
| DNS TTL 変更後にランダムにセッション切断 | 短い TTL と anycast ローテーションと厳格な CheckHostIP | 低冗長 ssh -v で名前の再解決に伴う再鍵交換を確認 | ホスト鍵ピン留めを緩めるか安定した踏み台名を使う |
macOS のリゾルバ積み重ね:レースで勝つのは誰か
すべてのフラグを暗記するより順序を理解することが重要です。現行 macOS では scutil --dns がリゾルバのセグメントを表示します:インタフェース固有、VPN 提供、システム既定。ブラウザが DoH を使っても CLI はシステム経路のままかもしれません。セキュリティエージェントが getaddrinfo を横取りすれば、そうとも限りません。開発者が実際に使う VLAN ごとにスタックを記録してください。
| スタックの種類 | SSH/scp への影響 | チケットに残すログ |
|---|---|---|
| 純粋な ISP DHCP | ベースライン。すべての劣化はまずここと比較 | 先頭リゾルバのスクリーンショットと dig の TTL |
| 企業 VPN の DNS プッシュ | 検索ドメインの並べ替えが多い。「未知」の公開 SaaS に NXDOMAIN を入れることも | VPN プロファイル名とスプリットトンネルのオン/オフ |
| ローカル DoH/「セキュア DNS」エージェント | エージェントが libc を迂回すると dig @resolver と乖離しうる | ベンダー名・バージョン・ポリシー ID |
scutil --dns | head -n 80 を実行。出力を MTR のスクリーンショットの横に置けば、ネットワークとアプリの管轄争いが収まります。
9 ステップの DNS ランブック(Linux クライアントにも使える)
- 変数を固定: 正確な
sshの argv、クライアント OS のパッチ、Wi‑Fi SSID または Ethernet ドック型番、VPN のオン/オフを記録。 - 二重に解決: 壊れたノートから
A、AAAA、CNAME連鎖の順引きを実行。digが+jsonに対応していれば JSON で保存。 - VPN オフのカフェ等で比較(ポリシーが許す範囲で)し、スプリットホライズンを切り分け。
- IPv4 のみで試験:
ssh -4と、macOS のネットワーク設定でインタフェース順が壊れた IPv6 トンネルを好むか確認。 - 検索リストを点検:
~/.ssh/configから短名を外す。踏み台を標準化するなら FQDN とCanonicalizeHostnameを推奨。 - 逆引きの期待を検証: サーバ側で
UseDNSが有効な構成では PTR のノイズがセッションを殺すことがある—ヘルプセンターのガイドと併用。 - IT にフォワーダ方針を確認: ホスト名と、コンソールの割当から期待する正しい公開 IP を示す。
- 修正後、移行期間だけ TTL を一時的に下げ悪い答えを早く流す—その後は保守的な TTL に戻す。
- 成果物をアーカイブし パス診断の横に置く。次の採用担当が同じ 3 時間の Zoom を繰り返さないように。
議論を止める 3 つの数字
- 5 秒は人が「SSH が固まった」と感じる心の閾値で、クライアントは別のリゾルバ経路をまだ試していることがあります。パケットキャプチャのタイムスタンプに合わせてください。
- 300 秒は消費者 DNS でよくある正答キャッシュ TTL のオーダーです。プロバイダが anycast エッジを回すと、意図的にフラッシュしない限り、すべてのノートが新しい A レコードで揃うまでその程度かかることがあります。
- ProxyMac の5 リージョンは、実施したリゾルバ試験の横に HK/JP/KR/SG/US と書くべきだという意味です。将来の自分はシンガポールのベアメタルと東京をどのオフィスが使ったか覚えていません。
VPN 方針、MTR、料金への橋渡し
DNS はレイヤ 7 の意味論で、その下の経路は 企業 VPN 方針が既に形作ったものの上に載ります。答えが安定したら MTR で到達性を検証し、DNS の真実と RTT の現実の両方に合うリージョンを 料金ページから確保してください。
よくある質問
ping は通るのに ssh user@hostname が止まるのはなぜ? キャッシュ層が異なり、場合によっては sshd 設定の逆引きです。常に dig と ssh -vvv のタイムスタンプを突き合わせてください。
IP を ~/.ssh/config に直書きすべき? 一次切り分けには可。リージョン移行時に唯一の恒久策にするのは避けた方がよいです。
ブラウザの DoH は SSH に効く? 直接は稀。ただし企業エージェントがスタックを並べ替えることがあります。思い込みより scutil --dns を信頼してください。
DNS のドラマのあとも ProxyMac の Mac mini が合う理由
リゾルバが真実を言い始めたら、その努力に報いる金属が欲しくなります。Apple Silicon M4 の Mac mini はビルドと自動化に単一テナントで予測可能な性能を与え、ネイティブ macOS のリゾルバ挙動は開発者がローカルで直すのと同じです。HK/JP/KR/SG/US に配置でき、API の近さと DNS の近さを揃えられます。ProxyMac のモデル—SSH と VNC を ヘルプセンターで文書化—により、ユーザーが不満を言うのと同じネットワークから再現し、スプリントが終われば環境を下げ、所有ハードに遊休 DNS ゾーンを抱え込まなくて済みます。