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

通过点到站点VPN连接带专用终结点的Azure函数应用解析问题

问题:Azure函数应用通过VPN访问时无法解析到专用终结点私IP

现有配置概述

已部署Azure函数应用、虚拟网络、VPN网关(独立子网)、专用终结点(同VNet独立子网)及专用DNS区域,关键Terraform配置如下:

VPN网关IP配置

ip_configuration {
    name                          = "aza-vnet"
    public_ip_address_id          = azurerm_public_ip.vpn_gateway_public_ip.id
    private_ip_address_allocation = "Dynamic"
    subnet_id                     = azurerm_subnet.vpn_gateway_subnet.id
}

专用终结点配置

private_service_connection {
    name                           = "oai-create-privateserviceconnection"
    private_connection_resource_id = azurerm_linux_function_app.oai_create_app.id
    subresource_names              = ["sites"]
    is_manual_connection           = false
}

private_dns_zone_group {
    name                 = "oai-create-dns-zone-group"
    private_dns_zone_ids = [azurerm_private_dns_zone.create_func.id]
}

专用DNS区域及链接

resource "azurerm_private_dns_zone" "create_func" {
  name                = "privatelink.azurewebsites.net"
  resource_group_name = var.rg_name
}

resource "azurerm_private_dns_zone_virtual_network_link" "create_func" {
  name                  = "oai-create-link"
  resource_group_name   = var.rg_name
  private_dns_zone_name = azurerm_private_dns_zone.create_func.name
  virtual_network_id    = azurerm_virtual_network.vnet.id
}

现有A记录配置

resource "azurerm_dns_a_record" "create_func" {
  name                = "func-name.privatelink.azurewebsites.net"
  zone_name           = azurerm_private_dns_zone.create_func.name
  resource_group_name = var.rg_name
  ttl                 = 300
  records             = [azurerm_private_endpoint.create_func.private_service_connection[0].private_ip_address]
  #records             = [azurerm_private_endpoint.create_func.ip_configuration[0].private_ip_address]
}

VPN客户端DNS配置

<clientconfig i:nil="true">
    <dnssuffixes>
      <dnssuffix>.azurewebsites.net</dnssuffix>
    </dnssuffixes>
    <dnsservers>
        <dnsserver>168.63.129.16</dnsserver>
    </dnsservers>
</clientconfig>

问题现象

  • VPN连接后,执行curl https://func-name.azurewebsites.net/api/create时域名解析失败,nslookup显示解析到公网IP:
    nslookup func-name.azurewebsites.net
    Server:     10.16.80.1
    Address:    10.16.80.1#53
    
    Non-authoritative answer:
    func-name.azurewebsites.net canonical name = func-name.privatelink.azurewebsites.net.
    func-name.privatelink.azurewebsites.net canonical name = hosts.func-name.azurewebsites.net.
    Name:   hosts.func-name.azurewebsites.net
    Address: 13.92.237.218
    
  • 直接访问专用终结点私IPcurl http://10.0.2.4/api/create返回404(网络连通,但因域名绑定问题无法正确路由)

解决步骤

1. 修正专用DNS区域的A记录配置

现有A记录名称包含完整域名后缀,导致记录无效,同时私IP获取字段错误。修正后配置如下:

resource "azurerm_dns_a_record" "create_func" {
  name                = "func-name" # 仅需前缀,无需带区域后缀
  zone_name           = azurerm_private_dns_zone.create_func.name
  resource_group_name = var.rg_name
  ttl                 = 300
  records             = [azurerm_private_endpoint.create_func.ip_configuration[0].private_ip_address]
}

说明:ip_configuration下的private_ip_address才是专用终结点的实际私IP字段,private_service_connection中的IP字段并非正确取值。

2. 调整VPN客户端DNS配置

确保VPN客户端优先使用Azure DNS,并添加正确的DNS搜索后缀,修正后的配置:

<clientconfig i:nil="true">
    <dnssuffixes>
      <dnssuffix>privatelink.azurewebsites.net</dnssuffix>
      <dnssuffix>.azurewebsites.net</dnssuffix>
    </dnssuffixes>
    <dnsservers>
        <dnsserver>168.63.129.16</dnsserver>
    </dnsservers>
</clientconfig>

同时验证VPN连接后的DNS服务器:

  • Windows:执行ipconfig /all,确认DNS服务器为168.63.129.16
  • Linux/macOS:执行resolvectl status或scutil --dns,确认DNS配置生效

3. 验证专用终结点连接状态

在Azure门户检查专用终结点的private_service_connection状态为Approved,确保与函数应用的连接已建立。

4. 刷新客户端DNS缓存

清除旧的解析记录,避免干扰:

  • Windows:ipconfig /flushdns
  • Linux:sudo systemd-resolve --flush-caches
  • macOS:sudo dscacheutil -flushcache

5. 测试解析与访问

执行nslookup func-name.azurewebsites.net 168.63.129.16,确认返回专用终结点的私IP;之后再访问https://func-name.azurewebsites.net/api/create即可正常路由。

注意:无法直接通过私IP访问函数应用,因为Azure函数应用的主机头仅绑定域名,不支持IP直接访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 10:47:07