内部およびリモートからアプリにアクセスするためのスプリットホライズンDNSの設定方法

エヴァ・ウォン は テクニカルライター であり ZimaSpaceの常駐ティンカーでもあります。 生涯のオタクであり、 ホームラボとオープンソースソフトウェアに情熱を持っています。彼女は複雑な技術的概念をわかりやすく、 実践的なガイドに翻訳することを専門としています。エヴァはセルフホスティングは楽しくあるべきで、怖がるものではないと信じています。彼女のチュートリアルを通じて、コミュニティが ハードウェアのセットアップを解明する手助けをしています。初めてのNAS構築からDockerコンテナの習得まで。

どこからでも同じアプリケーションのホスト名を使用し、信頼された内部クライアントやVPNクライアントにはプライベートなプロキシアドレスを、外部クライアントにはパブリックまたはトンネルのエンドポイントを返します。両方の経路でTLS名を同一に保ってください。

ヘアピンNATを利用できない場合や、ローカル通信をLAN内にとどめたい場合、スプリットホライズンDNSが役立ちます。クライアントが意図したリゾルバーを迂回したり、古い応答が残ったり、内部エンドポイントが異なる証明書を提供したりすると機能しません。2つのビューを定義し、移行前にTTLを短くして、名前解決とHTTPSを分けてテストしてください。

内部ビューと外部ビューを定義する

各アプリケーションに1つのFQDNを選びます。パブリックDNSでは、外部から到達可能なプロキシ、トンネル、またはゲートウェイを指すように設定し、内部DNSでは、ローカルプロキシのプライベートアドレスに上書きします。

証明書対応を避けるためだけに、別の内部専用ホスト名を作成しないでください。ただし、アプリケーションが2つの正規URLをサポートしている場合は除きます。1つの名前に統一すると、場所が変わってもブックマーク、コールバック、モバイルクライアントを一貫して利用できます。

内部ビューを受け取るサブネットを文書化します。ゲストネットワークにはパブリックな応答が必要な場合がありますが、信頼されたLANとリモートアクセスVPNのクライアントには、割り当てられたリゾルバーを通じてプライベートな応答を返します。

リゾルバーの選択を確実にする

DHCPとVPNプロファイルを通じて内部リゾルバーを通知します。まず明示的にそのリゾルバーへ問い合わせ、次にオペレーティングシステム経由で問い合わせて、ローカルキャッシュや暗号化DNSによる迂回を検出します。

リゾルバーのキャッシュや異なるDNSライブラリによって、予期しない結果が生じることがあります。この一般的なDNS障害のパターンの一覧では、権威DNSでの変更がクライアントにすぐ反映されない理由を説明しています。

レコードが情報源で正しいことを確認してから、関係するキャッシュだけをフラッシュします。管理対象ブラウザーが独自の暗号化リゾルバーを使用している場合は、承認済みのポリシーを適用するか、ローカルゾーンを何度も編集する代わりにパブリック経路を使用してください。

プロキシ、証明書、アプリケーションの動作をそろえる

両方のエンドポイントで、共有FQDNに対して有効な証明書を提示し、そのホストを同じアプリケーションの識別情報へルーティングする必要があります。証明書の警告は、DNSによってエンドポイントには到達したものの、そのエンドポイントが要求された名前用に設定されていないことを示します。

リダイレクト、WebSocket、コールバックURL、アプリケーションの外部URLを確認します。IPアドレスや別のホスト名へリダイレクトするローカルプロキシは、単一名の設計を損ないます。

アプリケーションがサブパスを使用する場合は、ベースURLとプロキシルートを同期させます。Jellyfinコンテナのアップグレードに関するZimaSpaceのチェックリストは、変更前にプロキシ、マウント、URLの設定を維持するのに役立ちます。

内部アクセスとリモートアクセスの切り替えをテストする

Wi-Fiでは、DNSサーバー、返されたアドレス、証明書、アプリケーションの結果を記録します。Wi-Fiを無効にした状態で携帯回線でも繰り返します。ホスト名と証明書の識別情報は同じまま、アドレスだけが変わるはずです。

外部ネットワークからVPNに接続して、同じテストを繰り返します。VPNがプライベート経路を使用するはずなのにパブリックな応答を受け取る場合は、アプリケーション設定を変更する前に、VPNのDNS割り当てまたはルーティングを修正してください。

最後に、クライアントをネットワーク間で移動し、TTLが経過するまで待ちます。3つの経路すべてが確実に動作するまで停止してください。クライアントが誤ったプロキシに到達する場合や、使用するリゾルバーを制御できない場合は、内部上書きを元に戻します。

サポートとヒント

もっと読む

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.