ToC
DNS SubDomainの委任
委任とは…
ドメインに新しくサブドメインを作成します。その際に、そのサブドメインの管理権限を 他の権威サーバーに移すことをゾーンの委任と言います。ゾーンの委任により別の管理者が サブドメインを管理できるようになります。
委任の想定ケース
example.io
という親ドメイン親を保持していると仮定します。
今回、新たに blueprint.example.io
というサブドメインを作成して、
そのサブドメインを委任をしてもらうことを想定したケースを実施してみたいと思います。
現在、親ドメインであるexample.io
のネームサーバーはAWSのRoute 53を利用しており、
blueprint.example.io
のネームサーバーにAlibaba DNSを採用します。
Alibaba Cloudの提供するDNSサービスであるAlibaba DNSでも、2019/8/13のアップデートにより サブドメインを管理できるようになりました。これにより、今回の想定ケースが実装を行うことできます。
ビジネスニーズに合わせて、ドメイン名は他のDNSサービスで解決し、サブドメイン名を AlibabaCloud DNS で解決できるようになりました。またドメイン名とサブドメイン名を 違う AlibabaCloud のアカウントで管理できるようになりました。 https://jp.alibabacloud.com/news/product
ゾーンカットの実施
親ドメイン側で登録する内容
親ドメイン側では、サブドメインの委任(ゾーンカット)を示す情報の登録が必要です。
具体的には、サブドメインのネームサーバーを示すNSレコードセット
を登録します。
blueprint.example.io. IN NS ns7.alidns.com.
blueprint.example.io. IN NS ns8.alidns.com.
なお、Alibaba DNSをサブドメインの権威サーバーとして登録する際には、
Alibaba DNSから親ドメインの所有者の検証を行うために追加の TXTレコードセット
を
登録して置く必要があります。
こちらは、事前にAlibaba Cloudの Alibaba DNSのコンソールから登録情報を取得します。
コンソールで取得したホスト名と値を指定したレコードをAWSに登録します。
alidnscheck.example.io. IN TXT YOUR-CODE-1234567890
サブドメイン側で登録する内容
サブドメイン側の権威サーバーにドメインの作成(SOAレコードセット
)とサブドメインの
ネームサーバーを示すNSレコードセット
を登録します。
blueprint.example.io. IN SOA ns7.alidns.com. hostmaster.hichina.com. 2020010410 3600 1200 86400 360
blueprint.example.io. IN NS ns7.alidns.com.
blueprint.example.io. IN NS ns8.alidns.com.
ドメインの登録(SOAレコードの登録)
SOAレコードの登録は、Alibaba Cloudでは「ドメインの登録」により、実行します。
先ほどは、「ドメインの所有者の検証コードの取得」画面となりましたが、
親ドメインへTXTレコードセット
が登録されているため登録が続行できるようになります。
登録情報の確認
これで blueprint.example.io
は、Alibaba DNSで管理されるようになりました。
別のレコードセットを登録・追加することも可能です。
Alibaba ROSのサンプル
Infrastructure as Codeも同時に実施したので、参考までにAlibaba ROS
のテンプレートも
下記に記載しておきます。
ROSTemplateFormatVersion: '2015-09-01'
Parameters:
DomainName:
Type: String
Description: Domain name
Default: blueprint.example.io
GroupName:
Type: String
Description: Domain group name
Default: blueprint
Resources:
DomainGroup:
Type: 'ALIYUN::DNS::DomainGroup'
Properties:
GroupName:
Ref: GroupName
Domain:
Type: 'ALIYUN::DNS::Domain'
Properties:
DomainName:
Ref: DomainName
GroupId:
'Fn::GetAtt':
- DomainGroup
- GroupId
NsDomainRecord1:
Type: 'ALIYUN::DNS::DomainRecord'
Properties:
RR: '@'
DomainName:
Ref: DomainName
Value: ns7.alidns.com
TTL: 900
Line: default
Type: NS
DependsOn: Domain
NsDomainRecord2:
Type: 'ALIYUN::DNS::DomainRecord'
Properties:
RR: '@'
DomainName:
Ref: DomainName
Value: ns8.alidns.com
TTL: 900
Line: default
Type: NS
DependsOn: Domain
Outputs:
GroupName:
Description: The name of the domain name group
Value:
'Fn::GetAtt':
- Domain
- GroupName
DomainId:
Description: Domain ID
Value:
'Fn::GetAtt':
- Domain
- DomainId
DomainName:
Description: Domain name
Value:
'Fn::GetAtt':
- Domain
- DomainName
DnsServers:
Description: The DNS list for the domain name under resolution
Value:
'Fn::GetAtt':
- Domain
- DnsServers
GroupId:
Description: Domain name group ID
Value:
'Fn::GetAtt':
- DomainGroup
- GroupId
NsDomainRecord1Id:
Description: Parse the ID of the record
Value:
'Fn::GetAtt':
- NsDomainRecord1
- RecordId
NsDomainRecord2Id:
Description: Parse the ID of the record
Value:
'Fn::GetAtt':
- NsDomainRecord2
- RecordId