DNSエイリアスとは
FSx for Windows File Serverでは、デフォルトで以下のようなDNS名が割り当てられます。(マルチAZ構成の場合)
amznfsxaa11bb22.ad-domain.com
このDNS名をそのまま利用することも可能ですが、DNSエイリアスを使うことで任意のDNS名を設定することができます。本機能を使う主な理由は以下になります。
- ユーザーが覚えやすい名前にしたい(ユーザー指定のDNS名を利用したい)
- (オンプレ等から移行する場合に)既存のFQDNを引き継いで移行したい
特に移行を行う場合、既存のFQDNを引き継ぐことで、クライアント側の設定やGPOのマッピング等への影響を最小限にすることができます。(ただし、移行元と移行先でフォルダパスが変わる場合はその限りではありません)
DNSエイリアスの設定
DNSエイリアス設定に必要な作業は以下の通りです。
| 作業対象 | 作業内容 |
|---|---|
| AWS | FSxの画面からDNSエイリアスを設定 |
| AD(DNS) | CNAMEレコードの作成(または更新) |
| AD | SPNを設定 |
CNAMEレコードの作成・更新、SPN設定はAD以外の端末からも実行できます。ただし、その場合は事前にモジュールのインストールが必要となるため、AD上(ドメインコントローラー上)で実行するのが簡単です。
①AWS:FSxの画面からDNSエイリアスを設定
まずは、FSxの画面からDNSエイリアスを設定します。対象のファイルシステムの「アクション」から「DNSエイリアスの管理」を選択します。
追加したいDNSエイリアスを設定します。ステータスが「利用可能」になるまで待ちます。

②AD(DNS):CNAMEレコードを作成
ドメインコントローラーにログインし、以下PowerShellを実行します。これにより、CNAMEレコードが作成されます。
- alias_fqdn:①で設定したDNSエイリアスに置き換えてください
- file_system_dns_name:Amazon FSxがファイルシステムに割り当てたDNS名に置き換えてください
$Alias="alias_fqdn"
$FSxDnsName="file_system_dns_name"
$AliasHost=$Alias.Split('.')[0]
$ZoneName=((Get-WmiObject Win32_ComputerSystem).Domain)
$DnsServerComputerName = (Resolve-DnsName $ZoneName -Type NS | Where Type -eq 'A' | Select -ExpandProperty Name) | Select -First 1
Add-DnsServerResourceRecordCName -Name $AliasHost -ComputerName $DnsServerComputerName -HostNameAlias $FSxDnsName -ZoneName $ZoneName
③AD:SPNを設定
ドメインコントローラーにログインし、以下PowerShellを実行します。これにより、SPNが設定されます。
- alias_fqdn:①で設定したDNSエイリアスに置き換えてください
- file_system_DNS_name:Amazon FSxがファイルシステムに割り当てたDNS名に置き換えてください
# Set SPNs for FSx file system AD computer object
$FSxDnsName = "file_system_DNS_name"
$Alias = "alias_fqdn"
$FileSystemHost = (Resolve-DnsName $FSxDnsName | Where Type -eq 'A')[0].Name.Split(".")[0]
$FSxAdComputer = (Get-AdComputer -Identity $FileSystemHost)
# Use the following command to set both the full FQDN and Alias SPNs
Set-AdComputer -Identity $FSxAdComputer -Add @{"msDS-AdditionalDnsHostname" = @($Alias, $Alias.Split(".")[0])}
DNSエイリアスに紐づくSPNが既に別のコンピューターに設定されている場合(例えば移行でファイルサーバーにアクセスするFQDNを引き継ぐ場合)、事前にSPNの削除が必要になります。AWSのドキュメントに従い削除を実施してください。
https://docs.aws.amazon.com/fsx/latest/WindowsGuide/step2-configure-spn-kerberos.html
SPNを設定しない場合の動作
実は③のSPNを設定しなくても、②までの作業が完了していれば、クライアントからは新規のDNSエイリアスでFSxにアクセスすることができてしまいます。なぜこのような事象が発生するのでしょうか。
これは、クライアントがファイルシステムにアクセスする際に、KerberosからNTLMにフォールバックしているためです。
正しくSPNが設定されていれば(ドメインコンピューターからアクセスする場合)Kerberosによって接続が行われます。しかし、AD側でSPNが設定されていない場合、クライアントからKDC(ドメイン環境ではAD)にサービスチケットを要求してもエラーが返ってくるため、NTLMに切り替わる動作となります。
GPOでNTLMを監査
実際の動作を実機で確認してみましょう。クライアントがNTLMで通信していることを確認するため、以下グループポリシーをGPOで設定し、クライアント(が存在するOU)に適用します。ポリシー定義は「すべて監査する」を設定します。
この状態で②までの設定を行い、DNSエイリアスでファイルサーバーにアクセスしてみます。ファイルサーバーには普通にアクセスできますが、クライアントのイベントログ(イベントID:8001)を確認するとNTLMが利用されたことがわかります。
- 「アプリケーションとサービスログ」>「Microsoft」>「Windows」>「NTLM」>「Operational」
klistコマンドを利用すると、クライアントコンピューターが取得したKerberosチケットを確認できます。NTLMの場合はファイルサーバーのサービスチケットが取得されないため、本コマンドでもNTLMの利用(=Kerberosチケットが取得されていないこと)を確認できます。
GPOでNTLMを制限
先ほどはグループポリシーを利用して、NTLMを監査することで動作を確認しました。次は、NTLMを制限した場合の動作についても確認してみます。先ほど設定したグループポリシーの定義を「すべて拒否する」に変更します。
本設定を行った後にファイルサーバーにアクセスすると、NTLMの利用が制限されるためアクセス自体が失敗します。
NTLMがブロックされたことが、イベントログ(イベントID:4001)で確認できます。
GPOの適用直後は、前回のセッションが残っている関係で想定通りの動作にならない場合があります。その場合は、コンピューターの再起動を行ってください。
本記事で設定したGPOの設定はリンクを外しても(あるいは設定を「未定義」としても)設定が戻りません。つまり、一度「すべて拒否する」の設定を行った後に「未定義」に戻してもNTLMは制限されたままとなります。この動作は、GPOタトゥーイングなどの名称で呼ばれます。そのため、一度設定を「すべて許可する」に変更・適用してからGPOのリンクを解除するのが良いでしょう。
なお、本GPOの実体はクライアントコンピューターのレジストリを書き換えるものです。以下コマンドでレジストリ値を確認することで、現在の設定を確認できます。
※値が0x0:NTLM許可、0x1:NTLM監査、0x2:NTLM拒否
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0" /v RestrictSendingNTLMTraffic
さいごに
FSx for Windows File Serverを利用する場合、DNSエイリアスを設定することは多いと思います。その際はSPNが正しく設定され、Kerberos認証ができることを忘れずに確認したいです。








