特定のドメインに対してカスタムDNSサーバーを使用するようにシステムを構成するにはどうすればよいですか?

特定のドメインに対してカスタムDNSサーバーを使用するようにシステムを構成するにはどうすればよいですか?

このhostsファイルを使用すると、DNSサーバーシステム全体をオーバーライドし、特定のDNS名を特定のIPアドレスに解決するようにシステムを構成できます。しかし、この目的で特定のDNSサーバーを使用したい場合はどうすればよいですか?

答え1

これは…分割地平線DNSサービスこれを行う方法は4つあります。たとえば、分割地平線unix.stackexchange.com.(もちろん、その下のドメイン名ツリーのすべての部分)を構成するとします。これを行う方法は、ローカルで実行するように選択した項目によって異なります。

  1. あなたは地域を運営フォワードプロキシDNSサーバー これはローカルキャッシュを必要としますが、ローカルシステムがパブリックインターネットからファイアウォールで保護されている場合や、これらのシステムのクエリ検証がLAN上の1つの場所で集中的にクエリを実行するのに比べて比較的高価な一般的な状況です。

    unix.stackexchange.com.別のサーバーに転送するように指示します。unix.stackexchange.com.サブドメインに対するクエリの解決方法を知っている2番目の(リモート)プロキシDNSサーバーを設定する必要があります。また、そのドメインとそのサブドメインの実際の代替データを提供し、unix.stackexchange.com.2番目のプロキシDNSサーバーが認識して使用するように構成されたプライベートコンテンツDNSサーバーを設定する必要があります。

    あなたはできるすでに持っている後者の2つは、特に大規模な組織である場合はさらにそうです。実際には、クエリ検証操作を実行する中央コンピュータとして、検証プロキシDNSサーバーが既に存在する可能性があります。さまざまな内部トラフィックが組織外に「漏洩」するのを防ぐために、パブリックコンテンツDNSサーバーをローカルにミラーリングするプライベートコンテンツDNSサーバーがすでに存在している可能性があり、ここにデータを.追加するだけです。unix.stackexchange.com.

    ローカルフォワードプロキシDNSサーバーの設定:

    • Bernstein dnscacheFORWARDONLYモード)などのサーバーの場合は、servers/unix.stackexchange.comプロキシDNSサーバーのIPアドレス構成ファイル(サーバーのルート/作業ディレクトリにあります)を使用してクエリをサーバーに渡してサーバーを再起動できます。
    • ~のため分割されたDNSサーバーは、MicrosoftのDNSサーバー、ISCのBINDと同じです。転送エリアunix.stackexchange.com.サーバーを再ロード/再起動します。

    2番目(リモート)プロキシDNSサーバーは、以下のオプション#2に示すように構成されています。オプション#2は、マシンのDNSクライアントライブラリが指定されている場合にも適用されます(例/etc/resolv.conf:)。まっすぐフォワードプロキシDNSサーバーを仲介者として使用する代わりに(ローカル/リモート)プロキシDNSサーバーで解決します。

  2. あなたは地域を運営プロキシDNSサーバーの確認 1980年代にDomain Name Systemが登場した後、UnicesやLinuxなどのマルチタスクオペレーティングシステムは、過去のようにすべてのコンピュータで検証プロキシDNSサーバーを実行することを躊躇しませんでした。ただし、オプション#1で説明したように、「ローカル」は単一のコンピュータのローカルではなく、LANのローカルである可能性があります。

    unix.stackexchange.com.クエリ解決は、パブリックDNSデータベースに公開されているものとは異なるDNSサーバーで起動する必要があることを知らせます。unix.stackexchange.com.サブドメインの実際の代替データを提供するには、プライベートコンテンツDNSサーバーを設定する必要があります。

    ローカル検証プロキシDNSサーバーを設定します。

    • Bernsteinなどのサーバーdnscache(非FORWARDONLYモード)の場合は、servers/unix.stackexchange.comコンテンツDNSサーバーのIPアドレス設定ファイル(サーバーのルート/作業ディレクトリにあります)を使用してクエリ検証を開始し、サーバーを再起動できます。
    • ~のため分割されたDNSサーバーは、MicrosoftのDNSサーバー、ISCのBINDと同じです。スタブエリアunix.stackexchange.com.サーバーを再ロード/再起動します。
  3. パブリックコンテンツDNSサーバーは、クエリを送信した人に基づいて代替データを提供できます。 まれにこれを行うソフトウェアがある場合は、構造的に設定するのが最も簡単です。

    プロキシDNSサーバーを操作する必要はなく、2番目のプライベートコンテンツDNSサーバーを設定する必要もありません。どのクライアントクラスがどのクラスに属するかを公開コンテンツDNSサーバーに通知し、サービスするラベル付きのさまざまなデータセットunix.stackexchange.com.とそのサブドメインをサーバーに提供します。何があっても、誰もが何らかの方法で公開コンテンツDNSサーバーに到達しました。

    • Bernsteinなどのサーバーのtinydns場合位置コード機能し、すべての「あなたの」プロキシDNSサーバー(バックエンドクライアントIPアドレス)を1つの場所コードに設定し、残りのインターネットを別の場所コードとして設定します。最初の位置コードを使用して、プロキシDNSサーバーに表示されるデータベース内のすべてのデータと、残りのインターネットに表示されるすべてのデータ(または場所コードがまったく存在しない)を表示できます。
      %時:10
      %si:192.168
      %lo:127
      =unix.stackexchange.com:127.0.0.1:::lo
      =unix.stackexchange.com:192.168.72.3:::si
      =unix.stackexchange.com:151.101.1.69:::
    • MicrosoftのDNSサーバーの場合、使用にはもう少し問題があります。地理的範囲システム。 DNS クライアントの送信元 IP アドレスを表示するのではなく、サーバー自体の受信インターフェイスの IP アドレスを表示することで機能します。 MicrosoftのPowerShellの例を適用しました。
      追加-DnsServerQueryResolutionPolicy - 名前 "SplitHorizo​​nZonePolicy" - 操作を許可する -ServerInterface "eq,10.0.0.56" -ZoneScope "internal,1" -ZoneName "stackexchange.com"
      追加-DnsServerResourceRecord -ZoneName "stackexchange.com" -A - 名前 "unix" -IPv4Address "151.101.1.69"
      追加-DnsServerResourceRecord -ZoneName "stackexchange.com" -A - 名前 "unix" -IPv4Address "10.0.0.69" -ZoneScope "内部"
    • ISCのBINDの場合、それを使用することは間違いなくもっと面倒です。コメントシステム。

    パブリックDNSコンテンツを提供するために外部企業に頼っている場合可能残念ながら、これらのアイデアが主流に入ってから数年が経過した今日でも同様です。これらのDNSサーバーソフトウェアのいずれかを使用しても、顧客にこの機能を提供する会社はほとんどありません。

    tinydnsしかし、独自のパブリックOpenBSDシステムに独自のデータを公開する場合、この方法で分割水平DNSサービスを提供することは非常に簡単です。 ☺

  4. 洗練されたDNSクライアントソフトウェアを使用してください。 一般に、DNSクライアントは、システムのアプリケーションソフトウェアに接続されたCライブラリのコードです。しかし、時にはそうではないときもあります。

    アプリケーションソフトウェアは、systemdと通信するデスクトップバスシステムなどのものを使用できますsystemd-resolved。プロキシDNSサーバーはDNSプロトコルを使用しません。 (systemdの人々はアプリケーションソフトウェアの作成者がこの作業を中止することをお勧めします。)代わりに、彼らはこれを行うために特別で非標準的なデスクトップバスプロトコルを使用しますsystemd-resolvedsystemd-resolvedその結果、現在のネットワーク構成に基づいて実際の方向を決定する複雑なシステムがあります。どのDNSサーバーがDNSプロトコルクエリを送信するか。

    このローカル DNS サービスは、systemd-resolvedlibc NSS または [デスクトップ] バス API と同じように、すべての機能を備えているわけではありません。 [...] したがって、すべてのアプリケーションはlibc NSS APIまたはデフォルトのsystemd-resolved[デスクトップ]バスAPIを使用することをお勧めします。
    レナート・ポートリン、2016-06-25

    これを操作することは、このような一般的な範囲の質問と回答の範囲をはるかに超えています。

MicrosoftのDNSサーバー、ISCのBINDなどの実行後に忘れてしまうDNSサーバーソフトウェアの場合、dnsmasqオプション#1、#2、#3が混在しているように見える複雑なシナリオがいくつかあります。本当に複雑ですバージョン#2を選択してください。しかし、ほぼ20年間、すべてを一度に維持しようとする無駄な試みは、多くのDNS世界で悪い考えと見なされました。 (Microsoft DNSサーバーの世界でも約10年間続きました。)DNSサーバーは、コンテンツDNSサーバーとプロキシDNSサーバーを統合してはいけません。 (そのような人もいます。オープンレゾルバプロジェクトこれを行うには、人々のパブリックDNSサーバーを積極的に調査します。 )すでにSMTPおよびHTTPサービスに対して行ったように、サービスタイプを複数のサーバーに適切に分離すると、選択は上記のいずれかに単純化されます。

追加読書

答え2

bind1つの解決策は、直接制御したいドメインのゾーンファイルをインストール()して設定することです。named

これを行うための簡単なチュートリアルがたくさんありますが、特に気に入っています。https://www.digitalocean.com/例えばこれ

関連情報