Route 53 Resolver Outbound Endpoint無しでMicrosoft Office LTSC入りAMIを使えないか試してみた

2022.12.25

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

しばたです。

前回の記事でMicrosoft Office LTSC入りAMIの動作確認を行いました。

この中で「Office入りAMIを使う場合はRoute 53 Resolver Outbound Endpointが必須」と解説し、実際AWSのドキュメントにも

  • You must configure DNS forwarding for any additional VPCs to the AWS Managed Microsoft AD you register for user-based subscriptions. You can use Amazon Route 53 or another DNS service for DNS forwarding. For more information, see the blog post Integrating your Directory Service’s DNS resolution with Amazon Route 53 Resolvers.

といった記述がされています。

実際のスクリプトを見てみると...

たしかにOffice入りAMIからEC2インスタンスを作成した際に実行されるSSM Run Commandを確認すると以下の様に対象製品がOfficeの場合はインスタンスのDNS設定変更をスキップします。
(逆を言えばOffice以外の場合はDNS設定をAWS Managed Microsoft ADに向ける様設定変更されます)

ドメイン参加スクリプトから一部抜粋

# Set DNS address only for VS. For Office we are taking Route53 resolver approach
if($IsOfficeProductCode -eq 'false'){
    Write-Output 'Setting the DNS address to MAD Domain Controller IP for VS Product...'
    try{
        $dns = Get-DnsClientServerAddress
        Write-Output "Current Value for index " $dns.InterfaceIndex[0] "-" $dns.ServerAddresses
        Set-DnsClientServerAddress -InterfaceIndex $dns.InterfaceIndex[0] -ServerAddresses ($DCIpAddress1, $DCIpAddress2) -ErrorAction Stop
        $dns = Get-DnsClientServerAddress
        Write-Output "Updated Value for index " $dns.InterfaceIndex[0] "-" $dns.ServerAddresses
        Write-Output 'Successfully! updated the DNS address to MAD Domain Controller IP...'
    }
    catch [System.Exception] {
        Write-TerminatingError -Message "Unable to set DNS address: $_"
    }
}

このため直接AWS Managed Microsoft ADのActive Directoryに対する名前解決ができない状況となります。

しかしながら、ライセンスアクティベーションスクリプトの中身を確認するとLicense Manager VPC Endpointを以下の様にDNSサーバー(169.254.169.253)を明示して名前解決させています。

ライセンスアクティベーションスクリプトから一部抜粋

# This is required since AD does not uses default Amazon DNS
$ServerIPAddress = (Resolve-DnsName "$Endpoint" -Server 169.254.169.253).IPAddress | Select -First 1
if (-not (Test-Path -LiteralPath ".\ospp.vbs")) {
            Write-TerminatingError -Message "Failure... the script ospp.vbs does not exist."
}
Write-Output "Running the activation script with the license manager : $ServerIPAddress"
cscript ospp.vbs /sethst:$ServerIPAddress

最終的にVPC EndpointはIPアドレスしか使っていませんし、DNSサーバーを明示して名前解決しているのであればRoute 53 Resolver Outbound Endpointが無くてもどうにかできる気がします。

というわけで実際に試してみることにしました。

試してみた

今回は下図の構成を試してみます。

Route 53 Resolver Outbound Endpoint以外の構成は変更ありません。
License ManagerのVPC Endpointは必須ですし、VPC Endpointの名前解決のためにVPCのDNS設定も有効にする必要があります。

EC2のDNS設定は通常Route 53 Resolverに向いていますが、DHCPオプションセットの設定を変えてデフォルトでAWS Managed Microsoft ADのDNSサーバーを参照する様にしてやります。
理屈の上ではこれでドメイン参加スクリプト内でDNS設定を変更せずとも上手く動作するはずです。

基本環境

前回の記事の環境をそのまま流用します。
Route 53 Resolver Outbound Endpointを事前に削除しておきます。

DHCPオプションセットの設定

次に新規にDHCPオプションセットを作成します。
今回は「ドメインネームサーバー」設定だけAWS Managed Microsoft ADのDNSサーバー(ここでは10.0.21.11910.0.22.189)に更新します。

作成したDHCPオプションセットをVPCに紐づければ完了です。

AWS Managed Microsoft ADのフォーワーダー設定

今回の環境ではAWS Managed Microsoft ADのDNSフォーワーダー設定はデフォルトでRoute 53 Resolver(10.0.0.2)を向いていたのでそのままにしています。

EC2の起動

前回同様にEC2インスタンスを作成します。

これでしばらく待つと...インスタンスは実行中となり上手くいっている様に見えます。

SSM Run Commandの履歴も良い感じです。

(ドメイン参加スクリプトの結果)

(ライセンスアクティベーションスクリプトの結果)

接続確認

ユーザーのサブスクライブを行いRDP接続したところ特に問題なく実行できました。

DNS設定がAWS Managed Microsoft ADのDNSサーバーを指しつつドメイン参加とOfficeのアクティベーションができています。
Microsoft KMSサーバーもVPC Endpointに向いていました。

ちなみに今回はAWS Managed Micorosft AD → Route 53 Resolverへのフォーワーダー設定がされているため、このEC2上ではデフォルト状態でVPC Endpointの名前解決は可能です。

# -Server 169.254.169.253 を明示して名前解決
PS C:\> $Endpoint = 'vpce-xxxxxxxxxx-sw05a846.activation-license-manager.ap-northeast-1.vpce.amazonaws.com'
PS C:\> (Resolve-DnsName "$Endpoint" -Server 169.254.169.253).IPAddress
10.0.21.102
10.0.22.86

# -Server を明示しなくても名前解決可能 (※この挙動はAWS Managed Microsoft ADのフォーワーダー設定次第)
PS C:\> (Resolve-DnsName "$Endpoint").IPAddress
10.0.21.102
10.0.22.86

最後に

以上となります。

思いつきで試した割にはかなり上手くいきました。
ただし、

  • DHCPオプションセットを変更するため影響範囲がVPC全体となる
  • AWSで正式にサポートされる方法かどうかは未確認
    • 今のサービス実装だからたまたま上手くいっている可能性は否定できない

という点はご注意ください。

Route 53 Resolver Outbound Endpointはそれなりに費用が掛かるため少しでもコストを抑えたい場合はこの方法もアリかもしれません。
実際に試す際はAWSサポートに確認の上ご検討ください。