Azure DNS中的通配符和裸CNAME记录

powershell azure dns

910 观看

2回复

306 作者的声誉

我正在将所有DNS服务迁移到Azure DNS。使用Powershell,我成功地创建了CNAME记录,以使www.something.com解析为Azure网站,

$rs = New-AzureRmDnsRecordSet -Name "www" -RecordType "CNAME" -ZoneName "something.com" -ResourceGroupName "DNSRecords" -Ttl 60 -Overwrite -Force
Add-AzureRmDnsRecordConfig -RecordSet $rs -Cname "MySomethingAzureWebsite.azurewebsites.net"
Set-AzureRmDnsRecordSet -RecordSet $rs -Overwrite

但是我如何为通配符和裸地址创建CNAME记录,例如

* .something.com或something.com

我假设这是与(没有双关语意)

New-AzureRmDnsRecordSet-名称“ www”

但是通过所有文档和Internet示例,我似乎找不到正确的词汇。

作者: TRH 的来源 发布者: 2016 年 1 月 4 日

回应 (2)


1

9298 作者的声誉

决定

您遇到的问题是DNS规则存在问题,DNS规则禁止存在其他记录的CNAME记录。裸地址(或Apex)example.com已经有两个记录(SOA和NS),因此不允许使用CNAME。

如果节点上存在CNAME RR,则不应存在其他数据。这样可以确保规范名称及其别名的数据不能不同。该规则还确保可以使用缓存的CNAME,而无需与权威服务器检查其他RR类型。

为了创建一个Apex记录,例如example.com,您需要使用A记录,这意味着它需要指向您Azure网站的IP。有了该名称后,您就可以从www到example.com创建一个CNAME。(这是受支持的方法-您用于Azure网站的IP地址是静态的)

您正在寻找的命令将类似于

$rs = New-AzureRmDnsRecordSet -Name "@" -RecordType A `
       -ZoneName example.com -ResourceGroupName $RG `
       -Ttl $ttl -Force -Overwrite
Add-AzureRmDnsRecordConfig -RecordSet $rs -Ipv4Address $IPAddress
Set-AzureRmDnsRecordSet -RecordSet $rs -Overwrite

然后

$rs = New-AzureRmDnsRecordSet -Name "www" -RecordType "CNAME" `
      -ZoneName "something.com" -ResourceGroupName "DNSRecords" `
      -Ttl 60 -Overwrite -Force
Add-AzureRmDnsRecordConfig -RecordSet $rs -Cname "example.com"
Set-AzureRmDnsRecordSet -RecordSet $rs -Overwrite

这将创建您的区域顶点记录,并将www cname指向它,从而使example.com和www.example.com指向同一位置。

对于通配符,您可以将Apex“ @”替换为星号“ *”,例如

$rs = New-AzureRmDnsRecordSet -Name "*" -RecordType A `
       -ZoneName example.com -ResourceGroupName $RG `
       -Ttl $ttl -Force -Overwrite
#You know the rest
作者: Michael B 发布者: 04.01.2016 07:59

0

1018 作者的声誉

如前一个答案所述,您不能在区域顶点(名称=“ @”)上创建CNAME。这是由于RFC约束所致,正确的方法是使用其他记录类型,例如使用区域顶端的A记录代替,如先前的受访者所述。

但是,您可以在区域顶点创建通配符CNAME。由于通配符不能与DNS中的空字符串匹配,因此它们不会违反RFC约束。例如,在PowerShell中:

$z = New-AzureRmDnsZone -Name myzone.com -ResourceGroupName MyResourceGroup
$rs = New-AzureRmDnsRecordSet -Name "*" -Zone $z -Ttl 3600 -RecordType CNAME
Add-AzureRmDnsRecordConfig -RecordSet $rs -Cname cnametarget.com
Set-AzureRmDnsRecordSet -RecordSet $rs

这将解决对foo.myzone.com的查询,但不会解决对myzone.com的查询。

Wikipedia上有一个很好的页面,可以了解有关通配符DNS的更多信息。

作者: Jonathan Tuliani - MSFT 发布者: 08.01.2016 10:57
32x32