Microsoft Active Directoryの話です。
目次
事の発端
古くから(と、いうか登場の初期は)Active Directoryのドメイン名に ”ドメイン.local” を使うことが多かったので、現在のドメイン名が “xxx.local” である場合があります。Windows10(1803)のトラブルもあり、最近はActive Directoryのドメイン名に ”ドメイン.local” は使わないほうが良いといった風潮があります。
そこで、Microsoft社に正式に話を聞いてみました。
Microsoft社の回答
Microsoft社の回答を簡単に言うと以下になります。
・Active Directoryのドメイン名に ”ドメイン.local” を使うことは ”非推奨ではない”
・推奨は ”登録ドメイン(インターネットドメイン)のサブドメインを使う”
例にすると、
推奨としては以下だが、
・登録ドメイン(インターネットドメイン)→ contoso.com
・Active Directoryドメイン → corp.contoso.com
以下を非推奨にはしていない
・登録ドメイン(インターネットドメイン)→ contoso.com
・Active Directoryドメイン → contoso.internal
と、いうことになります。
ただし、”.local” を使うとトラブルになることがあるよ、特に “mDNSを使う場合” は。 ということです。
なお、Microsoft社は、.localを使ったActive Directoryのドメイン名は ”非推奨”とは言っていません。”非推奨”とは ”サポート対象外”ということになります。
もう少し細かく
この問題はWindowsというよりもDNSの変化といえるかもしれません。今まで使っていなかった機能を使いだすと、古い考え方では問題が出ることがあります。そういった問題といえます。
Microsoftサポートの回答を簡単に言うと、今回の理由は大きく分けると以下です。
①mDNS(マルチキャストドメインネームサービス)
②ドメイン名が一意でない
それぞれを見ると、
①mDNS(マルチキャストドメインネームサービス)
mDNS(マルチキャストドメインネームサービス)は2013年2月20日にインターネット標準規格 (RFC6762)として採用されました。
mDNSでは .local を使用しているため、Active Directoryのドメイン名に “.local” を使っていると “DNS名前解決” にコンフリクトが発生する場合があります。
そのため、mDNSに準拠している機器類を含めて、想定外の所(Active directoryやインターネット)にアクセスする可能性があり、機能的にもセキュリティ的にも問題が生じます。
特に、OS X 10.3 移行のの Macコンピュータがネットワーク上にある場合は(Active Directoryドメイン参加にかかわらず)、Active Directoryドメイン名に “.local” 以外の名を指定する必要があります。その理由は、OS X 10.3 以上搭載の Macコンピュータの Rendezvous サービスで、”.local” を使用してネットワーク上の他のコンピュータを検索しているからです。
今までは、MacやLinux系で “Avahi” で使っていただけでWindows10から機能は実装されたもののうまく動いていませんでした。Windows10(1803)で mDNS がやっと正常に動くようになりました。
既定の受信の規則 “mDNS (UDP 受信)” が機能しない問題
正常にうごくようになったから”やっと問題がでた”なんてWindowsらしいといえばらしいけどね。
②ドメイン名が一意でない
Microsoft社のWebサイトにあるように
Active Directory: Best Practices for Internal Domain and Network Names
ここで言っていることは、Active Directory では ”ドメイン名が一意であること” が必要となります。そのため、設計のベストプラクティスの指針として「Active Directory のネームスペースには登録ドメイン(インターネットドメイン)のサブドメインを使用する」ことを推奨しています。
その理由は、登録ドメイン(インターネットドメイン)は世界で一意のドメインであるため、そのサブドメインを使っているActive Directory のドメイン名も世界で一意となるからです。
基本的に “.local” は登録ドメインとしてインターネットに公開される DNSレコード としての登録はできませんので、一意のドメインとは認められません。
つまり、世界中のどこかに「同じ xxx.local」ドメインが存在する可能性があるということになります。
もし、「同じ xxx.local」ドメインを保有している企業が存在した場合には(例えば、佐藤コーポレーション=SC.local と、鈴木コーポレーション=SC.local の合併など)、Active Directoryの統合の際に問題が出る可能性があります。
では、どうすればいい
一番良く、かつ、恒久的なのは、Active Directoryのドメイン名を登録ドメイン(インターネットドメイン)のサブドメインにすることです。
ですが、新規の構築でない限りActive Directoryのドメイン名を変更することは多くの時間と費用がかかるので現実的ではありません。
暫定的ではありますが、”とりあえず”以下の方法でしのぐことができます。
①DNSサーバ機(ドメインコントローラサーバ)
DNSサーバ機(ドメインコントローラサーバ)のスペック(メモリ増設、CPU増設、DiskのSSD化など)を上げ、DNSレコード問い合わせのレスポンスを向上してタイムアウトが発生しないようにする。
②クライアントPC対策
Windows10(1803)では、 mDNSを停止する。
停止させるには、「セキュリティが強化された Windows Defender ファイアーウォール」で送信の規則、受信の規則から mDNS を外します。
[手順]
1. [スタート (Windows ロゴ)] – [Windows 管理ツール] – [セキュリティが強化された Windows ファイアウォール] をクリック
2. 左ペインの [受信の規則] を右クリックして [新しい規則] をクリック
3. 規則の種類の選択画面で [事前定義] を選択して、セレクトボックスから すべての “mDNS” を選択し、[次へ] をクリック
4. 事前定義された規則の画面で、中央の規則の欄に表示された “mDNS (UDP 受信)” にチェックを入れ、[次へ] をクリック
5. 操作の画面で、[接続をブロックする] を選択して [完了] をクリック
もうひとつ
最近の流行り(と、いうか必然かも)として、SSO(シングルサインオン)やMicrosoft Office365との連携があります。
例えば、Microsoft Office365との連携であれば、Active DirectoryとOffice365で、「ユーザID」と「パスワード」の同期を行いたい場合もあるかともいます。
この場合でも、Azure AD Connectを使うことでActive Directoryのドメイン名が ”ドメイン.local” であっても問題なく ”Active DirectoryとOffice365の「ユーザID」と「パスワード」の同期” を行うことができます。
SSO(シングルサインオン)の上位(というか高機能というか高密接というか)の連携としてMicrosoft365やAzure AD Premiumとの連携をすることがあるかと思います。この場合は、Active Directory フェデレーション サービス (AD FS) を使いますが、こちらの場合もActive Directoryのドメイン名が ”ドメイン.local” であっても連携できないということはありません。
(でも、Active Directoryのドメイン名が ”登録ドメイン(インターネットドメイン)のサブドメインのほうが楽だけど)
ディレクトリ同期のためのルーティング不可能なドメインを準備します。
でも、やっぱり!
もう少し強く言ってもいいと思うのだけど、やや控えめに言ってますね。
OS X Mountain Lion:Active Directory の「.local」ドメインにおけるモバイルユーザのログイン時間の改善
iOS で「.local」が末尾に付いたユニキャスト DNS での名前を解決できない
ここでは
・だめ → .local
・よい → .private、.intranet、.internal、.lan
Mac OS X v10.4、10.5、10.6:「.local」ホスト名を Bonjour および標準 DNS を使って検索する方法