You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure中如何实现公网DNS名称内网解析为内网IP、外网解析为公网IP?

实现Azure虚拟网络内/外DNS拆分解析(内网IP/公网IP)

这个需求属于典型的**拆分DNS(Split DNS)**场景,Azure私有DNS区域可以完美解决——让虚拟网络内部的请求解析到虚拟机内网IP,外部请求仍解析为公网IP。下面给你详细说明Azure CLI操作和门户配置两种方案:


方案一:Azure CLI 操作步骤

1. 准备工作

先登录Azure CLI并切换到目标订阅:

az login
az account set --subscription <你的订阅ID>

2. 创建私有DNS区域

创建一个与你的虚拟机公网DNS域名完全一致的私有DNS区域(比如你的虚拟机公网DNS是vm1.contoso.com,就创建contoso.com区域):

az network private-dns zone create --resource-group <资源组名称> --name <公网域名,如contoso.com>

3. 关联虚拟网络到私有DNS区域

将你的目标虚拟网络关联到刚创建的私有DNS区域,这里关闭自动注册(因为我们要手动映射公网DNS名称到内网IP,避免自动注册的主机名冲突):

az network private-dns link vnet create \
  --resource-group <资源组名称> \
  --zone-name <公网域名> \
  --name <自定义链接名称,如vnet-dns-link> \
  --virtual-network <虚拟网络名称或ID> \
  --registration-enabled false

4. 添加A记录映射公网DNS名称到内网IP

为目标虚拟机添加A记录,将其公网DNS前缀(比如vm1)指向对应的内网私有IP:

az network private-dns record-set a add-record \
  --resource-group <资源组名称> \
  --zone-name <公网域名> \
  --record-set-name <虚拟机公网DNS前缀,如vm1> \
  --ipv4-address <虚拟机内网IP>

5. 验证效果

在虚拟网络内的Ubuntu虚拟机上执行以下命令,确认解析结果为内网IP:

nslookup <虚拟机公网DNS名称,如vm1.contoso.com>
# 或者用dig命令
dig <虚拟机公网DNS名称>

外部网络查询该DNS名称时,仍会返回公网IP。


方案二:Azure门户配置步骤

1. 创建私有DNS区域

  1. 登录Azure门户,在搜索栏输入「私有DNS区域」并进入服务页面。
  2. 点击「创建」,填写以下信息:
    • 资源组:选择虚拟机所在的资源组
    • 名称:输入与虚拟机公网DNS完全一致的域名(如contoso.com)
    • 订阅:选择目标订阅
  3. 点击「查看+创建」,确认后完成创建。

2. 关联虚拟网络到私有DNS区域

  1. 进入刚创建的私有DNS区域,在左侧菜单选择「虚拟网络链接」。
  2. 点击「添加」,填写:
    • 链接名称:自定义名称(如vnet-dns-link)
    • 虚拟网络:选择你的目标虚拟网络
    • 启用自动注册:取消勾选(避免自动注册的主机名与公网DNS名称冲突)
  3. 点击「确定」完成关联。

3. 添加A记录映射公网DNS到内网IP

  1. 在私有DNS区域左侧菜单选择「记录集」,点击「添加」。
  2. 填写记录集信息:
    • 名称:输入虚拟机公网DNS的前缀(如vm1)
    • 类型:选择「A」
    • TTL:默认300即可
    • IP地址:输入虚拟机的内网私有IP
  3. 点击「确定」保存记录。

4. 验证效果

在虚拟网络内的Ubuntu虚拟机上执行nslookup <虚拟机公网DNS名称>,确认返回内网IP;外部网络查询则返回公网IP。


内容的提问来源于stack exchange,提问作者opticyclic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:09:53