あなたは正確に間違ったツールを使用しています。

あなたは正確に間違ったツールを使用しています。

2つのネットワークカードを持つFreeBSDシステムがあります。設定は次のとおりです。

  • em0 ---> IP set via DHCP (192.168.1.0/24). "home" domain
  • em1 ---> IP set statically (10.0.0.2). "lab" domain

すべての意図と目的のために、私のプライマリドメインが正しく実行されています。インターネットに接続して、ネットワーク上のすべてのホストにpingを送信できます。ルーティングも機能します。 IPを介してFreeBSDシステムで任意のドメインのホストをpingできますが、ホームネットワークの名前だけを解決できます。

ファイルを作成し、次のようにファイル/etc/resolvconf.confに検索ドメインとネームサーバーを追加しました。resolv.conf

search_domains="lab"
name_servers="10.0.0.10" 

次に、次のコマンドを使用してresolv.confを更新しました。

$ sudo resolvconf -u

labこれでネットワークで名前を解決できますが、ネットワークhomeで名前を解決できなくなりました。 resolv.confファイルを手動で編集し、ドメインとネームサーバーの順序を変更すると解決しますが、正反対ではありませんhomelab

resolv.conf特定のドメイン(静的に設定されたIP)に対して1つのDNSサーバーを使用し、DHCPを介して他のIPに関するDNS情報を取得できるようにするにはどうすればよいですか。


参考用にのみ....

/etc/rc.conf:

hostname="beastie1"
ifconfig_em0="DHCP"
ifconfig_em1="inet 10.0.0.2 netmask 255.255.255.0"
defaultrouter="192.168.1.1"

/etc/resolv.conf

# Generated by resolvconf
search lab home.
nameserver 10.0.0.10
nameserver 192.168.1.1

ドメイン 10.0.0.0 の DNS 「サーバー」は、labDHCP リースを提供する安価なコンシューマー Netgear ルーターに過ぎません。これはブートイメージに使用されるTFTPサーバであるため、これを静的に設定し、一部のCiscoデバイスでファームウェアアップデートをフラッシュしようとしたときに、便宜上10.0.0.2に設定しました。

答え1

あなたは正確に間違ったツールを使用しています。

これはDNSクライアントライブラリ内では行われません。 DNSクライアントライブラリは、探している名前に基づいてクエリを別の一連のコンテンツDNSサーバーにルーティングすることを決定するのに十分洗練されていません。 DNS クライアント ライブラリは、この種の操作を含む重いクエリ検証操作をプロキシ DNS サーバー検証に委任します。 それら実装されるもの分割地平線DNSサービス、これが望むメカニズムです。

あなたがFreeBSD(またはDragonFly BSDやTrueOSなどの派生製品)を直接使用した場合、これはunboundローカルで実行されるインスタンスになります。

次の3つのことを行います。

  • あなたは実行しますunbound通常の方法で自動的に起動するように有効にしますlocal_unbound_enable=YES/etc/rc.conf
  • unbound分割スカイラインを実行するようにDNSサービスを設定します。 あなたはこれをスタブエリアinはあなたとあなたのドメインをunbound.conf表し、そのドメイン名とその下のすべてのエントリ、およびそのDNSサーバーの内容を表し、役割を果たします。lab.example.com.home.example.com.10.0.0.10192.168.1.1
  • DNSクライアントライブラリにサーバーのみを照会するように指示します。DNSクライアントライブラリに通信するように指示する行nameserver/etc/resolv.confname_serversキーと値のペア)があります。 /etc/resolvconf.confunbound

メモ:

  • home.とを使用しませんlab. これは実際のトップレベルドメインです。あなたが所有していないものhome.これまでに10の申請書がICANNに提出されました。ドメイン名の使用あなたが持っているもの、あなたが知らない人ではありません。example.com.上記の内容に置き換えてください。local.いいえ、あなたは、、、localhost.またはdev.その他corp.のコンテンツの大部分を所有していません。

    たとえば、がある場合とをradiantnexus.com.使用します。home.allan.radiantnexus.com.lab.allan.radiantnexus.com.

  • 検索ドメインを適切に調整してください。、完全修飾されていないドメイン名がローカル名前空間に見つかると予想されます。

    search_domains="home.allan.radiantnexus.com lab.allan.radiantnexus.com"前の例に進みます。

  • 解決のために他の人のプロキシDNSサーバーを使用できるとは思わないでください。 既定のルーター、ISP、またはGoogleが提供する検証プロキシDNSサーバーを追加するのは大きな間違いです。 DNSクライアントライブラリが直接通信するすべてのサーバー〜しなければならない供給同じ見方互いに一致するDNS名前空間の一部です。 Google パブリック DNS何も知らないまず、内部ネームスペースについて申し上げます。代替DNSサーバーが必要な場合は、次のものが必要です。別の地域DNS サーバーは、次のように構成されたどこかにあります。同じ水平分割設定。
  • また、名前検索のためにスタブゾーンの名前を指定するには、プライベートIPv6とIPv4アドレスがすべて必要です。 実際にはこれらのものがたくさんあり、それらのルックアップトラフィックは実際にあなた/あなたの組織の境界の外に漏れてはいけません。うん、そうです。しなければならない結合されたDHCP / DNSサーバーによって展開されたリースに対してアドレス名のルックアップが機能するようにするには、このゾーンがローカルゾーンではなくスタブゾーンである必要があります。

ボーナスコンテンツ

私はFreeBSDでdjbdnsを使用しています(パッチ...まあ...私がしました)。

  • [email protected]noshツールセットの設定インポートサブシステムは、ローカル検証プロキシDNSサーバーを実行しているサービスと通信するために、ローカルルートコンテンツDNSサーバーを[email protected]実行するサービスを設定します。[email protected][email protected]

    enable次のコマンドを使用してこれらのサービスを有効にします/etc/system-control/presets/20-djbwares.preset

    〜できるようにする[Eメール保護]
    cyclog@axfrdnsを有効にする
    〜できるようにする[Eメール保護]
    cyclog@tinydnsを有効にする
    〜できるようにする[Eメール保護]
    cyclog@dnscacheを有効にする
  • .ローカルルートコンテンツDNSサーバーのデータベースには、ICANNから取得された公開データ(およそ毎年使用されます)axfr-getと私が所有しているドメイン名の内部名データが混在しています。

    % ls -dl root/{data*,p*,root*,Makefile}
    -rw-r--r-- 1 ルートチャクラ 968 9月16日 09:43 root/Makefile
    -rw-r--r-- 1ルートチャクラ571334 11月28日、00:33ルート/データ
    -rw-r--r-- ルートチャクラ 1個 1088169 11月28日 00:33 root/data.cdb
    -rw-r--r-- 1ルートチャクラ3243 9月16日09:55ルート/プライベート
    -rw-r--r-- 1ルートチャクラ6962 11月28日、00:32ルート/公開
    -rw-r--r-- ルートチャクラ 1個 560853 2017年3月11日 ルート/ルート
    -rw-r--r-- ルートチャクラ 1個 3668733 2017年3月11日 root/root.zone
    %

    このroot/privateファイルには、次の個人データが格納されます。

    =machine97.jdebp.eu:192.168.100.97:::lo
  • root/servers/@カバレッジがそのポイントに送信できるパブリックコンテンツDNSサーバーのアドレス情報を知ることができるように、各分割地平線クリーンアップポイントに対してこのファイルを複製しました。[email protected]dnscache

    % ls -dli root/server/{@,CEFip6.arpa,machine97.jdebp.eu}
    352608 -rw-r--r-- 46 ルートチャクラ 11 2016年11月23日 root/servers/@
    352608 -rw-r--r-- 46 ルートチャクラ 11 2016年11月23日 root/servers/CEFip6.arpa
    352608 -rw-r--r-- 46 ルートチャクラ 11 2016年11月23日 root/servers/machine97.jdebp.eu
    %
    (実際、noshツールセットは私のためにプライベートIPアドレスを標準に設定しています。提供されているものとそれを使用するさまざまな方法についての全章があります。スナックガイド.)

これはプライベートルート設定。それの一つですその他2つのコンテンツDNSサーバーを使用して分割水平DNSサービスを提供する方法はいくつかあります。 (unbound上記の設定では、マルチコンテンツDNSサーバーの配列もあります。ローカルコンテンツDNSサーバーは、コンピューター自体の専用DNSサーバーではなく、LAN上の他のコンピューター上のサーバーです10.0.0.10。)192.168.1.1127.53.0.1

また、プライベートルートは、Google Chromeの検出からインターネット全体にエスケープするのではなく、fec0::/12IPv6アドレスとIPv4アドレスを逆マッピングしたいものまで、存在しないものにDNSクエリトラフィックをダッピングするという利点も提供します。192.168.0.0/16

プライベートルートにも使用できますunbound。しかし、スタブ領域よりも複雑です。私はこれを読者のための練習として残しており、この回答の範囲外です。

追加読書

関連情報