LoginSignup
8
9

ドメインコントローラーからDNSサーバーを分離(できなかった)

Last updated at Posted at 2024-01-10

こんにちは。先月からSEとなったdessinです。
実務でADの話がたくさん出てくるので勉強した内容を書きます。

背景

ADについてはこちらの連載が大変参考になりました。ID管理がワーキンググループからドメイン管理に発展したという経緯が書かれており、こういった歴史も書かれた記事は私のような素養のない者には助かります。
しかし、この記事に書かれた内容の、「ドメインコントローラーを構築すると、DNSサーバーにSRVレコードとAレコードが自動的に作成されます。」というのがよくわかりませんでした。ドメインコントローラーにそんなことできるのかと。
DNSサーバーは以前に構築したことがあるし、同じネットワーク内にドメインコントローラーを作れば、自動的にレコードが登録されるところが見られるかと思い、Azureに実装しました。

概要

  1. AD検証用のリソースグループ、Vnet作成
  2. DNSサーバーの構築(手前味噌ですが私の記事を参考に)
  3. ドメインコントローラーの構築

これだけ見ていても、いつレコードが自動で登録されるのか、登録できるように設定されるのかよくわかりませんが進めます。

補足

↑の通り進めようとしたのですが、DNSサーバーはドメインコントローラーの構築の際に自動的にインストールされてしまいました。そのため、「ドメインコントローラー+DNSサーバー」となったマシンでのDNSサーバーの様子を確認し、さらにそこからDNSサーバーの役割だけ削除して、2.で構築したDNSサーバーを使えないかを確認してみます。

作業

リソースグループ等の作成

リソースグループ名は"ADtest"、Vnet名は"ADnet"とします。Vnet内に作成するサブネットは10.0.0.0/24としています。仮想マシンは全部この中に作成します。
image.png
image.png

DNSサーバーの構築

概要に示した通り、以前の記事と同様にDNSサーバーを構築します。イメージはWindows Server 2019でサイズをStandard B2sにすることと、先に作ったVnet、サブネット内に作成することに注意。
image.png
image.png
image.png
image.png
作成したVMにRDPし、サーバーマネジャーからDNSサーバーのroleをインストールします。そして、名前解決要求のソースを制限するところまでやりました。
この検証の要点は、Forward Lookup Zonesに、ドメインコントローラーの情報が自動的に入ることを確認することですね。image.png
背景のところで紹介した記事を再度確認すると、やはり「前方参照ゾーン」に情報が入っていることが見えます。
DNSサーバーはいったんここまでにしてシャットダウンしポータルで停止し、ドメインコントローラーに移ります。

ドメインコントローラーの構築

Azure上でドメインコントローラーを使うときに特有の設定

Azureの仮想マシンをドメインコントローラーとして構築するには一工夫必要なそうです。この記事を参考に、まずは仮想マシンを作成します。どうやらキャッシュを無効にしたディスクを使用せねばならぬ模様。記事に従って、「ADサーバーの事前構築」のところから「Azure の ネットワークインタフェース の IP固定化」まで真似します。ただし、サイズはB2sに変更するなど、検証用に小さくしました。名前は適当に"DC"としました。
この記事のポイントは、「ディスク」のタブで「新しくディスクを作成する」ところですね。仮想マシンを作成しました。
RDPしてディスクの初期化をするところで、デフォルトだとGPTが選択されていました。image.png
とりあえず記事と同じMBRを選択しました。記事に従い、ディスクの設定を行いました。
さらにポータルでネットワーク構成でプライベートアドレスを「静的」に設定しました。

ドメインコントローラーのインストール

DCのRDPで、サーバーマネジャーでインストールします。ほとんどDNSサーバーのインストールと同じです。先ほどの記事と同じことをしますが、RDP画面を日本語化せずに進めているので、参考までにスクショを載せています。わかりづらければ先ほどの記事を参考にしてください。

image.png
チェックを付けようとすると別の画面が現れますが、そのままAdd Featuresします。image.png

ここでDNSサーバーの役割追加はせず、Active Directory Domain Seviceだけです。そういう検証です。
image.png
確認画面では、自動で再起動するチェックボックスを入れてからインストールします。
2024-01-08_18h01_55.png
インストールが完了したら、ドメインコントローラーにするためにこの部分をクリックします。image.png
始めの画面ではadd a new forestを選択し、適当なドメイン名を設定します。forestとはドメインの管理単位のひとつですが、今は初めて作成するのでnew forestを追加するということですね。
image.png
次の画面は、パスワード設定です。検証用にはあまり深く考えることはなさそうです。デフォルトの✓状況のまま、パスワードだけ設定します。
image.png
次の画面はそのまま次へ。image.png
次の画面も、自動で入るのでそのまま次へ。image.png
次の画面では、キャッシュを無効にしたディスクを使用するために、パスをいじります。先ほどの記事を参考に次のように作成していきます。image.png
最終的には下のように。image.png
次の画面は単なる確認画面です。image.png
最後は何か検証されますが、問題ないようです。黄色いチェックが出ていてもinstallをクリックします。image.png
ウィザードが終わると、自動で再起動が入るのでRDPは一度切断されます。再度接続すると、、、image.png
そこには"DNS"の文字が!!!なんでお前そこにおんねん!!!
分けて作成したDNSサーバーに、レコード登録されるところを確認したかったのですが・・・
教訓は、参考にした記事にはDNSが入るということは書かれてあったし、問題意識をもって記事を参考すること、それも通読しておくことが大事ということでしょうか。
とりあえずDNSサーバーの設定内容を確認してみます。そのあと、役割の削除でDNSサーバーを削除したらどうなるか確認します。

DNSサーバの中身

サーバーマネジャーの"DNS"をクリックし、下の画像の通り設定内容を確認します。image.png
クライアントがドメインに参加するには以下のことが必要です。

  1. DNSサーバーはドメインコントローラーのIPアドレスを知っている
  2. クライアントがそのDNSサーバーへアクセスできる
  3. 名前解決の時はそのDNSサーバーを優先的に使うよう設定する

あとはパスワードなどの資格情報です。
1については上の画像の通り確認できました。2についても、同じサブネット内に置かれた仮想マシンなら通信が可能です。3については参考にした記事に書かれている通り、ポータルで設定できます。

ドメイン参加

記事を参考にクライアントとなる仮想マシンを作成し、DNSサーバーを固定する設定をしました。image.png
(感想:DNSサーバーの設定は仮想ネットワークに紐づいているのか・・・・)
この仮想マシンにRDPして、GUIでドメイン参加します。image.png
このとき、一度再起動しないとドメインの名前解決ができず参加できませんでした。再起動するとDNSサーバーが指定の10.0.0.5になり、参加できました。image.png

ドメインコントローラーとDNSサーバーの分離

DNS機能の削除

まず、DNSサーバーと一体になったドメインコントローラーから、DNSサーバーの機能を削除します。
image.png
始めの画面ではNextをクリック。
image.png
次の画面では、サーバーを選択します。
image.png
役割と機能の追加の際にはチェックしなかったのに、DNSサーバーに✓が入っていました。✓を外してRemove Featuresします。
image.png
✓を外そうとしたときにこの画面が出てきました。DNSを必要とする機能を一緒に削除するか、という内容のようですが、その中にはActive Directory Domain Serviceはありませんね。分離させられそう。
image.png
次の画面ではなにも触らずにNextをクリック。
image.png
最後の確認画面で、DNSが削除されることを確認しRemoveをクリック。
image.png
Removeが終了したようです。再起動で反映されるといったようなメッセージが見えます。
image.png
再起動してRDPしたところ、ちゃんとDNSが削除されました。
image.png

クライアントへの影響

testuserにRDPして、再びドメインに参加してみます。今のところ、一度参加した後は特に何もしていないので切断されてはいない感じでしょうか。
image.png

Disconnectしようとすると警告されますが、検証なので無視します。
image.png
image.png
その後自動的に再起動されます。
同じ方法でドメイン参加しようとすると当然ですが失敗します。
image.png

ADデータベースの状態

DNSサーバー機能を削除しても、ADのデータベース自体には影響がないです。testuserのオブジェクトは依然として存在します。ドメインからDisconnectしたにもかかわらずこのような状態なのはドメインコントローラーとクライアントの通信ができていないからでしょうか。
image.png

別のDNSサーバーを使ってみる???

DNSサーバーにおけるドメインコントローラーの情報はSRVレコードといいます。これを別のマシンにインストールされたDNSサーバーに登録するとどうなるのでしょうか。
現状では、最初に作ったDNSサーバーには(当然ながら)ドメインコントローラーの情報はありません。image.png

「SRVレコードが自動登録される」という説明にひっかかったことが、この記事を書くきっかけでしたが、どちらかというと「ドメインコントローラー自身が、DNSサーバーと一体になっていることを利用してドメイン情報をDNS側に流用する」といった表現のほうがしっくりきますね。

SRVレコードを登録してみます。
New Zoneの追加でtest.comを追加。image.png
Other New RecordsをクリックするとSRVレコードを選択できるようです。image.png
image.png
よくわからないがServiceにはLDAPを選択しました。そしてサーバー情報にはDC.test.com(=ドメインコントローラーのFQDN)を入力。
image.png
IPアドレスがないと名前解決にならないのではないかと思いますが、SRVレコードにはIPアドレスを入力するべき場所がありません。そこでAレコードでdc(.test.com)の名前に対して10.0.0.5を登録しておきます。image.png
これで、DNSサーバーのローカル環境で、ドメインコントローラーの(プライベート)名前解決ができました。image.png

さらに、仮想ネットワークに指定した静的DNSサーバーを10.0.0.4 (ドメインコントローラーじゃないほうのDNSサーバー)に設定しなおしました。

クライアントでドメイン参加しなおし

さてクライアントでの名前解決はどうでしょうか。いけました。image.png
とりあえずDNSサーバーを介してドメインコントローラーにアクセスできる状態です。これでドメイン参加できなかったら、SRVレコードの登録方法をいじってみるか、そうでなければもうDNSサーバーはドメインコントローラーから分離するなって感じです。
image.png
↑できませんでした!
ドメインコントローラーが管理しているはずのtest.comに参加できませんでした。

まとめ

他の情報源を当たってみると、DNSサーバーとドメインコントローラーは分けずに作成するのが通常の運用方法のようです。公式DOCを見つけたかったのですが、「同じマシンにドメインコントローラーとDNSサーバーを構築します」といったような表現は見つからず、「DNSの名前空間を利用します」というような表現があるのみでした。しかし、この検証(実験)からは、ADをインストールした時に入っているDNSを素直に利用するほうがよいことがわかりました。

全然知らないADについて無謀な実験をしました。駄文をだらだら書いてしまいましたが、自分の中ではADというものがわかるきっかけになりました。ADの冗長構成とは、この内容は関係が深いのではないかと推測します。
お疲れさまでした。

8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9