我有一个通过外部提供商注册的域,x.y.com
并且希望将对该域的请求传递到没有公共 IP 的 Azure VM。
我已经创建了一个与我的 VM 同名资源组的 Azure DNS 资源x.y.com
,并安排我的域的管理员将域的名称服务器指向给定的 Azure 名称服务器。
然后我将 A 记录指向我的服务器的内部/私有 IP - 10.0.0.4
- 但是当我从外部计算机 ping 域时,我得到了10.0.0.4
,这显然在 Azure 私有网络之外是不可见的。
我怎样才能让它工作?
答案1
即使您以这种方式使名称解析工作,也没有公共端点供您的流量进入您的 vNET 并到达您的服务器。如果您的服务器上没有公共 IP,我会部署一个 Azure 防火墙,它将对流量进行 NAT 并将 DNS 指向防火墙公共 IP
https://www.petri.com/understanding-and-creating-nat-rules-in-azure-firewall
答案2
我按照我想要的方式完成了这项工作,如下所示:
- 确保您的虚拟机具有与之关联的“公共 IP 地址”资源(正如您将看到的,“公共 IP”是一个误称)。
- 赋予这个“公共 IP 地址”资源一个可识别的名称,例如。
{VM-name}-dynamic-ip
- 将分配类型设置为“动态”。执行此操作时,没有静态公共 IP 地址- 相反,Azure 会提供一个域名,例如,
xy.cloudapp.azure.com
它们会将其路由到您的 VM。 - 现在我们还想将外部域路由
x.y.com
到该 VM - 但这通常需要提供静态 IP 地址,而我们没有。以下是使用 Azure 的内部基础架构执行此操作的方法。
- 赋予这个“公共 IP 地址”资源一个可识别的名称,例如。
x.y.com
在与您想要将流量引导到的 VM(或负载均衡器)相同的资源组中为您的域设置一个 Azure DNS 区域。- DNS 区域概览屏幕的右上角将显示 4 个名称服务器的列表。如果您的域是在 Azure 之外管理的,则需要更改其链接到的名称服务器以匹配这些 Azure 服务器。例如,我的第一个是
ns1-02.azure-dns.com
。 - 创建/编辑
A
DNS 区域的记录。其默认名称应为@.x.y.com
- 在“别名记录集”下选择“是”
- 在“别名类型”下选择“Azure 资源”
- 选择您当前的订阅
- 现在,在“Azure 资源”下,您将能够选择“公共”IP 地址,
{VM-name}-dynamic-ip
- 您可能也想为您的资源设置 CNAME 记录,就像您通常所做的那样。不过,我认为这不是必需的。
据我了解,此 DNS 区域已在 Azure 名称服务器中注册,并且能够将流量路由到 Azure 虚拟网络专用的资源。