Windows Server DNSでホストファイルを使用して特定のホスト名を解決する方法


18

[注:この質問の解決策は、タイトルが示すものから逸脱した何かによって完璧です。]

私は小さな問題に直面していWindows Server 2003 DNS serviceます。私の会社では、私は(マイクロソフトDNSサーバーを実行している172.16.0.12(のドメイン名が終了し、私の会社のイントラネットに名前解決を行うために)dev.nls。IP 172.16に解決。)、そしてまた(他のドメイン名を転送するために、DNSフォワーダとして設定されています例:* .google.com、* Internet real DNS servers。sf.net)から。この内部DNSサーバーは、外部のユーザーにサービスを提供する傾向はありません。

そして、会社のファイアウォール内でメールサーバー(実際のインターネットドメインの受信メールを処理@nlscan.com)を実行しており、どちらの方法でもアクセスできます。

  1. 172.16.0.10イントラネット内から接続します。
  2. インターネットから接続mail.nlscan.com(に解決202.101.116.9)する。

172.16.0.10202.101.116.9は同じ物理マシンではないことに注意してください。2021ポートのポートフォワーディングを行うファイアウォールマシンである25110イントラネットアドレスには172.16.0.10

さて、私の質問:企業LAN内のユーザーが解決したい場合mail.nlscan.com、解決され202.101.116.9ます。メールトラフィックはファイアウォールマシンに送られてからにバウンスされるため、これは正しく実行可能ですが、良くありません172.16.0.10internal DNS server名前mail.nlscan.comを傍受して、172.16.0.10に解決できることを願っています。そのため、これを行うために「hosts」ファイルにエントリを書き込むことができることを願って172.16.0.12います。しかし、Microsoft DNS serverこの「hosts」ファイルをどのように認識できますか?

おそらく、イントラネットユーザー172.16.0.10にメールサーバーへのアクセスを許可しないのはなぜですか。ユーザー(従業員)がラップトップで、昼間はオフィスで、夜は自宅で作業しているとします。彼が家にいるとき、彼は使用できません172.16.0.10

ドメインのネームサーバーはISP上にあり、nlscan.comの下にある他のホスト名とサブドメインを解決するため、nlscan.com内部のゾーンを作成するDNS serverことはできませんnlscan.com

[編集]

WesleyDavid提案され、私は解決策の続く単に名前のゾーンを作成mailserver.nlscan.comし、そのゾーンに無名のAレコードを配置します。時間はこれがうまくいくことを証明しています。


+1これはまさに私がしていることだからです。私の内部DNSリゾルバーはmail.example.comを192.168 ..にポイントしますが、私のプライマリDNSはmail.example.comを他の全員のインターネットIPにポイントします。これの欠点を聞きたいです。
コリーJ

こんにちは、コリー、あなたは事実を正しく理解していないのではないかと心配しています。joeqwertyがこのトピックで後述するように、hostsファイルはDNSサーバーコンポーネントではなく、DNSクライアントリゾルバーコンポーネントによって使用されます。そのため、172.16.0.12でホストを編集しても、Microsoft DNSサービスには役立ちません。
ジムチェン

6月、回答を承認済みとしてマークすると、他の人がソリューションが何であるかを知ることができます。それはあなたのためにうまくいったことを嬉しく思います!=)
ウェスリー

回答:


12

この投稿の後半は間違っています。キャッシュを作成するためのWindows DNSサーバーサービスのタスクの一部は、ホストファイルをロードすることでもあるというWebで読んだものに基づいて、私は印象に残りましたキャッシュとそのローカルゾーンデータ。私はあちこち検索しましたが、これに関する確固たる証拠は見つかりませんでした。私は自分のServer 2008 R2マシンで理論をテストしましたが、hostsファイルはDNSサーバーのキャッシュを構築するために使用されていないことがわかりました。

ただし、Massimoよりも少しエレガントなソリューションがあると思います。nlscan.comゾーン全体に対して権限のあるゾーンを作成する代わりに、mailserver.nlscan.comという名前のゾーンを作成し、そのゾーンに名前のないAレコードを配置します。名前のないAレコードには、ゾーン自体と同じ名前が付けられ、必要なIPアドレスを付けることができます。nlscan.comの下にある他のすべてのドメインとnlscan.com自体は、パブリックDNSによって解決されます。

私は自分のServer 2008 R2 DNSサーバーでこれをテストし、パブリックDNSサーバーを介して友人のWebサイト(nessus.nl)を解決することができましたが、特定のサブドメイン(blog.nessus.nl)はApple.com IPアドレスに解決しました。それを試して、それがあなたのために働くかどうか確かめてください。

古い、間違った投稿が始まります:

私の理解が正しい場合(編集:正しくない場合)、DNSキャッシュがServer 2003マシンで構築されると、ホストファイルとそのゾーンデータからエントリを取得します。172.16.0.10 mailserver.nlscan.comServer 2003マシンのhostsファイルに配置すると、問題が解決するはずです。hostsファイルを変更した後、DNSサービスを再起動します。

ホストファイルのエントリを表示するには、Windowsマシン(具体的にはServer 2003 DNSマシン)でipconfig / displaydnsを使用します。また、否定応答はクライアントにキャッシュされるため、実験しているクライアントで常にipconfig / flushdnsを実行してください。そうしないと、ゾーン/ホストファイルに入力したばかりの名前をクライアントが解決できない理由を疑問に思うため、さまざまなハードオブジェクトを悪用することになります。=)

これを試して失敗しましたか?


2
Windows Server 2003のDNSは、名前の解決にファイルを使用しませんhosts。ローカルファイルではなく、独自のデータ、フォワーダー、または再帰クエリを使用しhostsます。
マッシモ

@マシモあなたは正しいです!テストして失敗しました。しかし、私はあなたの提案を取り入れて、それをもう少しエレガントにするために単純化したと思います。ご意見をお聞かせください。
ウェスリー

downvoteを削除:-)
Massimo

@マシモTY。そして、これを自分で試してみてくれてありがとう。私は新しいことを学びました。いつも楽しい。=)
ウェスリー

1
ダンノは、あなたが再びうんざりした理由は、私が定期的に出くわす問題に対するきちんとした解決策のように思われ、(パブリック)インターネットゾーン全体にシャドウイングを設定するよりもはるかに簡単です。
ヘルヴィック

3

内部ユーザーにリソースの内部IPを取得させ、外部ユーザーに同じリソースの外部IPを取得させたいという要望は一般的です。これは、スプリットブレインDNSと呼ばれます。インターネットに面する1つのDNSサーバーと、ローカルユーザー用の別の内部DNSサーバーがあります。内部ユーザーは、ネットワーク上のDHCPと、内部DNSサーバーをアドバタイズするDHCPサーバーを使用します。ユーザーがオフィスを離れている場合、DHCPサーバーは、外部ゾーンのみを認識するDNSサーバーにユーザーを割り当てます。

実際にゾーンを内部でホストすることなく、スプリットブレインDNSが必要なようです。ユーザーが自宅で仕事をしているときにユーザーに内部IPを取得させたくないので、ゾーンを内部でホストすることは問題があるとお勧めしますが、それは意味がありません。内部DNSサーバーをアドバタイズすることはありません。ISPのDNSサーバーをアドバタイズします。これは、外部ゾーンのみを知っているため、外部IPアドレスのみを提供します。

最後に、DNSサーバー上のhostsファイルからレコードを提供するようにDNSサーバーに依頼しても成功しないと思います。DNSサーバーは、そのゾーンファイルからレコードを提供します。そのDNSサーバー上のローカルホストファイルは、そのマシンでのルックアップにのみ適用されるローカルクライアント解決キャッシュにエントリを伝播します。これらのエントリは、別のメカニズムであるDNSサーバーによって提供されません。

スプリットブレインDNSを参照してください-この状況を処理する通常の方法です。


「しかし、それは意味をなさない」-申し訳ありませんが、あなたは私を誤解します。現在、私は会社のスタッフに自宅でmail.nlscan.comを202.101.116.9に正しく解決するつもりですが、自宅でsomehomt.dev.nlsを解決することを期待していません(VPNサーバーをセットアップしない限り)。そして、スプリットブレインDNSを指摘してくれてありがとう。会社のイントラネットでmail.nlscan.comという名前を微調整したいだけなので、スプリットブレインDNSのセットアップはそれほど便利ではないかもしれません。
ジムチェン

2

Wes:だれがあなたにうんざりしているかわかりませんが、hostsファイルの使用を明確にしたいと思います。hostsファイルは、DNSサーバーコンポーネントではなく、DNSクライアントリゾルバーコンポーネントによって使用されます。DNSサーバー上のホストファイルのエントリは、DNSサーバーがDNSクライアントとして機能しているときに使用されます。たとえば、W2K8 DNSサーバーのホストファイルのエントリは次のようになります。

1.1.1.1 test.test.com

DNSサーバーのDNSクライアントキャッシュに読み込まれます(サーバーキャッシュではありません)。DNSサーバーからtest.test.comにpingを実行すると、期待どおり1.1.1.1が返されます。次に、DNSサーバーでnslookupを実行し、test.test.comを要求すると、test.test.comに登録された正しいパブリックIPアドレスが返されます。これは、DNSサーバーのDNSクライアントコンポーネントがDNSサーバーコンポーネントに解決を求めているためです。 (他のDNSクライアントと同じように)。頭を包むのは紛らわしい考えですが、DNSサーバーはDNSクライアントでもあり、DNSクライアントコンポーネントが実行されると、他のDNSクライアントと同じように動作します。 -hostsファイルからロードされます。DNSクライアントコンポーネントがDNSサーバーコンポーネントを使用する場合のみ(その中に構成されているDNSサーバーを照会することにより)

DNSサーバーのDNSクライアントキャッシュは、DNSサーバーコンポーネントではなくサーバー自体によって(DNSクライアントとして)使用されるため、DNSサーバーを照会するDNSクライアントは常にホストエントリではなく「実際の」回答を取得します。


あなたのテストと結果は、今日の午後の私の探求を正確に反映しています。何らかの理由で、DNSサーバーサービスは、リゾルバだけでなく、hostsファイルを使用してキャッシュをシードすることも読んだと思っていました。サベージとハイネマンと呼んでください!=)
ウェスリー

サベージとハイネマン、すごい!しかし、誰が誰ですか?セイウチの口ひげを生やしてベレー帽を着なければならないと言わないでください。;)
joeqwerty

1

私の知る限り、Windows DNSがhostsファイルを使用して名前解決を処理する方法はありません。しかし、これは必要ありません。

パブリックインターネットゾーンと同じ名前の内部DNSサーバーにゾーンを安全に作成できます。発生するのは、サーバーが、そのゾーンの権限のあるネームサーバーに要求を転送するのではなく、独自のデータを使用して、そのゾーンの名前の要求を処理することです。これは「シャドウ」と呼ばれることもあります。これは、「実際の」パブリックゾーンを内部クライアントが利用できなくなり、代わりに「偽の」データで応答するためです。

注意する必要があるのは、この内部ゾーンに、必要な場合はパブリックIPアドレスを使用しても、必要なすべての名前を入力する必要があるということです。そうしないと、内部クライアントはそれらの名前を解決できません。

パブリックゾーンが次のようになっているとします。

www.nlscan.com    202.101.116.8
mail.nlscan.com   202.101.116.9

内部クライアントがmail.nlscan.comを172.16.0.10として解決するようにします。それで構いませんので、内部DNSサーバーに「nlscan.com」ゾーンを作成し、そこに「mail.nlscan.com-> 172.16.0.10」を配置します。
しかし、今では、内部クライアントは「www.nlscan.com」を解決できません。これは、サーバーがそのゾーンに対して権限があると判断し、クエリに応答しないためです(ホストを知らないため)誰にも転送しません。
これを解決するには、内部ゾーン内にも「www.nlscan.com」を配置する必要があります。クライアントがその方法でアクセスできるようにする場合は、実際のパブリックIPアドレスを指すことができます。または、「www」の場合、「mail.nlscan.com」で使用しているのと同じリダイレクトを使用できます。また、ファイアウォールによって内部サーバーに転送されています。
同じ原則がゾーン内のすべての名前に適用されます。

このセットアップは、外部クライアントや、一時的にネットワーク外にいるユーザーには影響を与えません。これは、内部の「シャドウ」ゾーンがインターネットから見えないためです。


nlscan.comドメイン全体に権限ゾーンを作成する必要はないと思います。サブドメイン:mailserver.nlscan.comを作成してから、名前のないAレコードを作成できると思います。詳細については私の投稿を参照してください。
ウェスリー

はい、それは動作します。そして、実際にはシンプルになります... 単一のホストをリダイレクトする必要がある場合。それらのいくつかをリダイレクトする必要がある場合は、フルゾーンの方が良いでしょう。
マッシモ

DNSサーバーであなたの条件付きフォワーダフォルダにnlscan.comを追加

1

ホストファイルを気にせず、DNS mail.domain.comに新しいゾーンを追加し、ゾーンにホストを追加します。名前を空白のままにし(自動的にゾーンの名前を使用します)、ローカルメールサーバーのIPアドレスを入力します;-)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.