はじめに

今回は作成済みのAmazon FSx for Windows File Server(以降FSx)で
DNS エイリアスを使用する手順について紹介します。

前提条件

今回は以下を前提として、FSxでDNSエイリアスを使用する手順を紹介します。
以下の構築方法についてはこちらの記事をご参照ください。

  • FSx の設定が完了している
  • FSx に接続出来るWindowsサーバ(ドメイン参加済み)がある
  • 上記Windowsサーバに管理者権限でログイン出来る

設定手順

DNSエイリアスをFSxに関連付ける

AWSコンソールにアクセスし、Amazon FSxからファイルシステムを選択し、作成済みのFSxを選択します。

開いたFSxでネットワークとセキュリティのタブからDNSエイリアスの「管理」を選択します。

DNSエイリアスの管理でFSxに関連付けるDNSエイリアスを入力し、「関連付ける」を選択します。
DNSエイリアスに入力したDNS名が表示され、ステータスが作成から利用可能になったことを確認し閉じます。

以上でFSxへのDNSエイリアスの関連付けは完了となります。

Kerberos のサービスプリンシパル名 (SPN) を設定する

FSx に接続出来るWindowsサーバにアクセスします。
手順内で実行しているコマンドについては、こちらのドキュメントをご参照ください。

管理者としてPowerShellを開き、ActiveDirectory関連の作業を行なうため
下記コマンドでPowerShell ActiveDirectoryモジュールをインストールします。

Install-WindowsFeature RSAT-AD-PowerShell

既存のSPNを検索

下記コマンドで既存SPNがあるか確認を行ない、既存SPNがある場合は削除を行ないます。

PS C:\Windows\system32> $ALIAS = "DNSエイリアス名"
PS C:\Windows\system32> SetSPN /Q ("HOST/" + $ALIAS)
ドメイン DC=my-test-domain,DC=com を確認しています

そのような SPN は見つかりませんでした。
PS C:\Windows\system32> SetSPN /Q ("HOST/" + $ALIAS.Split(".")[0])
ドメイン DC=my-test-domain,DC=com を確認しています

そのような SPN は見つかりませんでした。
PS C:\Windows\system32>

既存のSPNの削除

今回は既存SPNがなかったため削除は不要でしたが、もし既存SPNがあった場合は
こちらのドキュメントを参考に削除を行なってください。

SPNの設定

下記コマンドを実行し、FSxのActiveDirectoryにSPNを設定します。

PS C:\Windows\system32> $FSxDnsName = "FSxのDNS名"
PS C:\Windows\system32> $ALIAS = "DNSエイリアス名"
PS C:\Windows\system32> $FileSystemHost = (Resolve-DnsName $FSxDnsName | Where Type -eq 'A')[0].Name.Split(".")[0]
PS C:\Windows\system32> $FSxAdComputer = (Get-AdComputer -Identity $FileSystemHost)
PS C:\Windows\system32>
PS C:\Windows\system32> Set-AdComputer -Identity $FSxAdComputer -Add @{"msDS-AdditionalDnsHostname"="$Alias"}
PS C:\Windows\system32> SetSpn /S ("HOST/" + $Alias.Split('.')[0]) $FSxAdComputer.Name
ドメイン DC=xxxxxxx,DC=com を確認しています

CN=amznfsxxxxxxx,OU=FSx,OU=AWS Reserved,DC=xxxxxxx,DC=com の ServicePrincipalNames を登録しています
        HOST/test-FSx
更新されたオブジェクト
PS C:\Windows\system32> SetSpn /S ("HOST/" + $Alias) $FSxAdComputer.Name
ドメイン DC=xxxxxxx,DC=com を確認しています

CN=amznfsxxxxxxx,OU=FSx,OU=AWS Reserved,DC=xxxxxxx,DC=com の ServicePrincipalNames を登録しています
        HOST/test-FSx.xxxxx.xxxx.com
更新されたオブジェクト
PS C:\Windows\system32>

設定したSPNが登録されていることを確認する

下記のように設定したSPNが確認できれば、SPNの設定は完了となります。

PS C:\Windows\system32> $FSxDnsName = "amznfsxxxxxxx.xxxxxx.com"
PS C:\Windows\system32> $FileSystemHost = (Resolve-DnsName ${FSxDnsName} | Where Type -eq 'A')[0].Name.Split(".")[0]
PS C:\Windows\system32> $FSxAdComputer = (Get-AdComputer -Identity ${FileSystemHost})
PS C:\Windows\system32> SetSpn /L $FSxAdComputer.Name
次の項目に登録されている CN=amznfsxxxxxxx,OU=FSx,OU=AWS Reserved,DC=xxxxxxx,DC=com:
        〜〜〜〜〜〜〜〜〜省略〜〜〜〜〜〜〜〜〜〜

        HOST/test-FSx.xxxxx.xxxx.com
        HOST/test-FSx

        〜〜〜〜〜〜〜〜〜省略〜〜〜〜〜〜〜〜〜〜
PS C:\Windows\system32>

ファイルシステムのDNSCNAMEレコードを作成する

DNSCNAMEレコードを更新するため、下記コマンドでPowerShellDNSサーバーモジュールをインストールします。

Install-WindowsFeature RSAT-DNS-Server

既存のDNSCNAMEレコードをFSxのDNSレコードに切り替えます。

PS C:\Windows\system32> $ALIAS = "test-FSx.xxxxx.xxxx.com"
PS C:\Windows\system32> $FSxDnsName = "amznfsxxxxxxx.xxxxxx.com"
PS C:\Windows\system32> $AliasHost=$Alias.Split('.')[0]
PS C:\Windows\system32> $ZoneName=((Get-WmiObject Win32_ComputerSystem).Domain)
PS C:\Windows\system32> $DnsServerComputerName = (Resolve-DnsName $ZoneName -Type NS | Where Type -eq 'A' | Select -ExpandProperty Name)[0]
PS C:\Windows\system32>
PS C:\Windows\system32> Add-DnsServerResourceRecordCName -Name $AliasHost -ComputerName $DnsServerComputerName -HostNameAlias $FSxDnsName -ZoneName $ZoneName
PS C:\Windows\system32>

上記でFSxに設定したDNSエイリアスがDNSCNAMEに追加されました。

DNSエイリアスでFSxをWindowsサーバにアタッチ

下記コマンドでDNSエイリアスを使用してFSxをアタッチします。

PS C:\Windows\system32> net use Z: \\test-FSx.xxxxx.xxxx.com\share
コマンドは正常に終了しました。

PS C:\Windows\system32>

エクスプローラーからZドライブにFSxがマウントされていることが確認できました。

以上でFSxでDNSエイリアスを使用する手順は完了となります。

まとめ

SPNの設定やDNSCNAMEレコードを作成など、少々手間がかかる作業はありましたが
DNSエイリアスを使用してFSxをマウントすることができました。

DNSエイリアスを使用することで、緊急時のバックアップからの復旧の際に、DNSの設定を更新をせずに
既存のDNSエイリアス名でFSxに保管されたデータへアクセスできるなどの利点があるため、要件にあわせて
上手く活用していただければと思います。