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

时间:2016-01-04 06:43:53

标签: powershell azure dns

我正在将所有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记录,如

* .somes.com或something.com

我假设它与

有关(没有双关语)

New-AzureRmDnsRecordSet -Name“www”

但是通过所有文档和互联网示例,我似乎无法找到正确的措辞。

2 个答案:

答案 0 :(得分:1)

您遇到的问题是rules of 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" @"用asterix" *"像

这样的东西
$rs = New-AzureRmDnsRecordSet -Name "*" -RecordType A `
       -ZoneName example.com -ResourceGroupName $RG `
       -Ttl $ttl -Force -Overwrite
#You know the rest

答案 1 :(得分:0)

如前面的答案所述,您无法在区域apex(name =“@”)创建CNAME。这是因为RFC约束,正确的方法是使用其他记录类型,例如正如之前的受访者解释的那样,在区域顶点的记录。

但是,您可以在区域顶点创建通配符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 has a good page了解有关通配符DNS的更多信息。