使用 Azure 资源管理器时使用静态 IP 反向 DNS
Reverse DNS with Static IP while using Azure Resource Manager
我非常清楚Reverse DNS is possible on Azure Cloud Services。那不是我要问的。我需要知道在使用 Azure 资源管理器时是否可行。我在网上看了很多,虽然我发现了一些(2 年以上)关于它的老问题,但我找不到任何答案。
谢谢!
在 Azure 中注册反向 DNS 很复杂,因为在注册反向之前,您需要有一个指向 IP 地址的正向 A 记录。也就是说,您需要注册 www.example.com 以指向 Azure 中的 IP 地址,然后才能注册反向地址。
这意味着如果您通过模板创建,您需要预先配置一个转发域,否则模板将失败。
假设您使用的是模板,则需要事先执行几个步骤。
创建一个 Azure 静态地址 - 这需要是静态的,因为我们不会将它分配给一台机器。如果我们创建了一个动态地址,那么在附加它之前它是不可用的。
$ip = New-AzureRmPublicIpAddress -Name TestIP1 `
-ResourceGroupName $ResourceGroupName `
-Location $location -AllocationMethod Static
在 DNS
中注册您从 $ip.IpAddress
获得的地址
www IN A 123.45.67.89 ;; $ip.IpAddress address
运行 部署脚本,如果使用模板
"properties": {
"publicIPAllocationMethod": "Dynamic",
"dnsSettings": {
"domainNameLabel": "[variables('PublicDNS2')]",
"ReverseFqdn": "[concat(parameters('vmName2'), '.', variables('domainname'))]"
}
将域转发到新地址(这可以作为模板的输出检索)
www IN A 123.45.67.90 ;; Deployment IP Address
最后删除临时IP地址
Remove-AzureRmPublicIpAddress -Name TestIP1 `
-ResourceGroupName $ResourceGroupName -Force
如果您已经创建了一个静态 public IP 并想为其添加反向 DNS:
使用 Azure Powershell:
- 使用以下方式登录到 Azure 订阅:
登录-azurermaccount
- Select 订阅使用:
select-azurermsubscription -subscriptionname mysubscription
- 获取 IP 使用:
$p = get-azurermpublicipaddress -name myipname -resourcegroupname myresourcegroupname
- 使用以下方法设置反向 DNS(确保先设置正向 DNS):
$p.dnssettings.reversefqdn = "mail.mydomain.com"
- 使用以下方法完成设置:
设置 azurermpublicipaddress -publicipaddress $p
好的,虽然其他两个答案很有帮助,但都没有让我一路走下去。但我终于想通了。向提供巨大帮助的 Michael B 大喊大叫!
我用来学习和玩的域名是woodswild.com。如果您想按照这些步骤操作,只需根据需要换出即可。希望这有助于节省一些时间。我花了很长时间才弄明白。
还有一件事:这些步骤假定您没有使用模板。
1: 打开 Windows Azure Powershell
2:在 Powershell 中,使用以下命令登录您的帐户:
Login-AzureRMAccount
这将提示您输入登录名和密码。
3: 创建一个资源组。
如果需要,您可以在 UI 中或在 Powershell 中执行此操作。如果你想在 Powershell 中执行此命令,请执行以下命令:
$rgName="RG1"
$locName="Central US"
New-AzureRmResourceGroup -Name $rgName -Location $locName
4:创建临时Public IP地址:
使用完全限定的反向 DNS 查找 (ReverseFqdn) 创建 Public IP 地址的过程很不稳定。我们要做的第一件事是创建一个临时(一次性)Public IP 地址,不带 ReverseFqdn。使用此命令执行此操作:
$ipName = "tempRG1PIP"
$locName = "Central US"
$rgName = "RG1"
New-AzureRmPublicIpAddress -AllocationMethod Static -ResourceGroupName $rgName -Name $ipName -Location $locName
在这个例子中,我使用的域是 "woodswild.com"。 运行 此命令后,转到 UI 并在您刚刚创建的 IP 地址的配置下,为 IP 地址提供 "tempwoodswild" 的 DNS 标签(或任何您想要的域).
5:创建CName记录
对于您要使用反向 DNS 设置的域,请登录您的注册商。转到管理域的 DNS 记录的部分。使用指向 "tempwoodswild.centralus.cloudapp.azure.com"(或您创建的任何 DNS 标签)的主机 "www"(或邮件,如果您正在设置邮件服务器)创建一个 CName 记录。
6.创建另一个(永久)Public IP 地址
现在我们有 www.woodswild.com(或 mail.woodswild.com)指向临时 IP 地址,我们可以创建一个 perm。
$ipName = "RG1PIP"
$locName = "Central US"
$rgName = "RG1"
$rvFqdn = "www.woodswild.com" (or mail...)
$dnLabel = "woodswild"
New-AzureRmPublicIpAddress -Name $ipName -ResourceGroupName $rgName -Location $locName -ReverseFqdn $rvFqdn -AllocationMethod Static -DomainNameLabel $dnLabel
您现在拥有一个带有 ReverseFqdn 的静态 Public IP 地址!!!
7.删除临时 IP 地址
您可以在 Azure 门户中执行此操作 UI。
此时,在 Azure 中,您应该有一个资源组,其中只有一项:您的 Public IP 地址
8.编辑 CName 记录,并创建一个 A(主机)记录。
返回您的注册商,将 CName 编辑为:woodswild.centralus.cloudapp.azure.com
另外,创建一个A(Host)记录如下:
Host: @
Points To: 40.122.166.144 (which is the IP of the new, perm, Public IP Address)
9.测试反向 IP 查找:
此时,您应该可以对IP进行反向查找并获得域:
提示:任何时候,您都可以使用以下命令查看来自该 IP 地址的信息:
New-AzureRmPublicIpAddress -Name RG1PIP -ResourceGroupName RG1
正在使用 Public IP 地址创建虚拟机
从这里开始,创建一个分配给您的具有反向查找功能的 public(静态)IP 的虚拟机只是将 VM 与您刚刚创建的 IP 相关联的问题。
Joe Who 的回答非常适合我,而且比创建临时 IP 更简单(我已经有一个现有 IP,而且我不得不在一周内第 3 次弄乱我的 DNS 设置)。
mysubscription 是您的订阅类型 - 在我的例子中,它是 "Pay-As-You-Go",您可以在 Azure 门户设置中找到它。
myipname 是您的 IP 地址资源的名称,myresourcegroupname 是它所在的资源组的名称。对于域,我刚刚输入 "mydomain.com"(当然是我的实际域)。
抛开让 Azure PowerShell 工作的噩梦不谈,整个过程只用了大约 5 分钟。
反向 DNS 查找现在可以正常工作,我的电子邮件不再作为垃圾邮件被退回(当然除此之外还有更多设置需要设置,但我已经跳过了这些障碍)。
我非常清楚Reverse DNS is possible on Azure Cloud Services。那不是我要问的。我需要知道在使用 Azure 资源管理器时是否可行。我在网上看了很多,虽然我发现了一些(2 年以上)关于它的老问题,但我找不到任何答案。
谢谢!
在 Azure 中注册反向 DNS 很复杂,因为在注册反向之前,您需要有一个指向 IP 地址的正向 A 记录。也就是说,您需要注册 www.example.com 以指向 Azure 中的 IP 地址,然后才能注册反向地址。
这意味着如果您通过模板创建,您需要预先配置一个转发域,否则模板将失败。
假设您使用的是模板,则需要事先执行几个步骤。
创建一个 Azure 静态地址 - 这需要是静态的,因为我们不会将它分配给一台机器。如果我们创建了一个动态地址,那么在附加它之前它是不可用的。
$ip = New-AzureRmPublicIpAddress -Name TestIP1 `
-ResourceGroupName $ResourceGroupName `
-Location $location -AllocationMethod Static
在 DNS
中注册您从$ip.IpAddress
获得的地址
www IN A 123.45.67.89 ;; $ip.IpAddress address
运行 部署脚本,如果使用模板
"properties": {
"publicIPAllocationMethod": "Dynamic",
"dnsSettings": {
"domainNameLabel": "[variables('PublicDNS2')]",
"ReverseFqdn": "[concat(parameters('vmName2'), '.', variables('domainname'))]"
}
将域转发到新地址(这可以作为模板的输出检索)
www IN A 123.45.67.90 ;; Deployment IP Address
最后删除临时IP地址
Remove-AzureRmPublicIpAddress -Name TestIP1 `
-ResourceGroupName $ResourceGroupName -Force
如果您已经创建了一个静态 public IP 并想为其添加反向 DNS:
使用 Azure Powershell:
- 使用以下方式登录到 Azure 订阅: 登录-azurermaccount
- Select 订阅使用: select-azurermsubscription -subscriptionname mysubscription
- 获取 IP 使用: $p = get-azurermpublicipaddress -name myipname -resourcegroupname myresourcegroupname
- 使用以下方法设置反向 DNS(确保先设置正向 DNS): $p.dnssettings.reversefqdn = "mail.mydomain.com"
- 使用以下方法完成设置: 设置 azurermpublicipaddress -publicipaddress $p
好的,虽然其他两个答案很有帮助,但都没有让我一路走下去。但我终于想通了。向提供巨大帮助的 Michael B 大喊大叫!
我用来学习和玩的域名是woodswild.com。如果您想按照这些步骤操作,只需根据需要换出即可。希望这有助于节省一些时间。我花了很长时间才弄明白。
还有一件事:这些步骤假定您没有使用模板。
1: 打开 Windows Azure Powershell
2:在 Powershell 中,使用以下命令登录您的帐户:
Login-AzureRMAccount
这将提示您输入登录名和密码。
3: 创建一个资源组。
如果需要,您可以在 UI 中或在 Powershell 中执行此操作。如果你想在 Powershell 中执行此命令,请执行以下命令:
$rgName="RG1"
$locName="Central US"
New-AzureRmResourceGroup -Name $rgName -Location $locName
4:创建临时Public IP地址:
使用完全限定的反向 DNS 查找 (ReverseFqdn) 创建 Public IP 地址的过程很不稳定。我们要做的第一件事是创建一个临时(一次性)Public IP 地址,不带 ReverseFqdn。使用此命令执行此操作:
$ipName = "tempRG1PIP"
$locName = "Central US"
$rgName = "RG1"
New-AzureRmPublicIpAddress -AllocationMethod Static -ResourceGroupName $rgName -Name $ipName -Location $locName
在这个例子中,我使用的域是 "woodswild.com"。 运行 此命令后,转到 UI 并在您刚刚创建的 IP 地址的配置下,为 IP 地址提供 "tempwoodswild" 的 DNS 标签(或任何您想要的域).
5:创建CName记录
对于您要使用反向 DNS 设置的域,请登录您的注册商。转到管理域的 DNS 记录的部分。使用指向 "tempwoodswild.centralus.cloudapp.azure.com"(或您创建的任何 DNS 标签)的主机 "www"(或邮件,如果您正在设置邮件服务器)创建一个 CName 记录。
6.创建另一个(永久)Public IP 地址
现在我们有 www.woodswild.com(或 mail.woodswild.com)指向临时 IP 地址,我们可以创建一个 perm。
$ipName = "RG1PIP"
$locName = "Central US"
$rgName = "RG1"
$rvFqdn = "www.woodswild.com" (or mail...)
$dnLabel = "woodswild"
New-AzureRmPublicIpAddress -Name $ipName -ResourceGroupName $rgName -Location $locName -ReverseFqdn $rvFqdn -AllocationMethod Static -DomainNameLabel $dnLabel
您现在拥有一个带有 ReverseFqdn 的静态 Public IP 地址!!!
7.删除临时 IP 地址
您可以在 Azure 门户中执行此操作 UI。 此时,在 Azure 中,您应该有一个资源组,其中只有一项:您的 Public IP 地址
8.编辑 CName 记录,并创建一个 A(主机)记录。
返回您的注册商,将 CName 编辑为:woodswild.centralus.cloudapp.azure.com
另外,创建一个A(Host)记录如下:
Host: @
Points To: 40.122.166.144 (which is the IP of the new, perm, Public IP Address)
9.测试反向 IP 查找:
此时,您应该可以对IP进行反向查找并获得域:
提示:任何时候,您都可以使用以下命令查看来自该 IP 地址的信息:
New-AzureRmPublicIpAddress -Name RG1PIP -ResourceGroupName RG1
正在使用 Public IP 地址创建虚拟机
从这里开始,创建一个分配给您的具有反向查找功能的 public(静态)IP 的虚拟机只是将 VM 与您刚刚创建的 IP 相关联的问题。
Joe Who 的回答非常适合我,而且比创建临时 IP 更简单(我已经有一个现有 IP,而且我不得不在一周内第 3 次弄乱我的 DNS 设置)。
mysubscription 是您的订阅类型 - 在我的例子中,它是 "Pay-As-You-Go",您可以在 Azure 门户设置中找到它。
myipname 是您的 IP 地址资源的名称,myresourcegroupname 是它所在的资源组的名称。对于域,我刚刚输入 "mydomain.com"(当然是我的实际域)。
抛开让 Azure PowerShell 工作的噩梦不谈,整个过程只用了大约 5 分钟。
反向 DNS 查找现在可以正常工作,我的电子邮件不再作为垃圾邮件被退回(当然除此之外还有更多设置需要设置,但我已经跳过了这些障碍)。