使用专用端点通过 VPN 点连接到 Azure 函数应用程序到站点

问题描述 投票:0回答:1

我创建了一个 Azure 函数应用程序、vnet、虚拟网络网关、专用终结点和专用 DNS 区域。我的虚拟网关位于其自己的子网中,下面是来自

azurerm_virtual_network_gateway
资源

的相关地形
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
  }

专用终结点是在同一 vnet 的单独子网中创建的,指向函数应用。以下是该资源的一些 terraform 配置

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
}

并为私有端点ip添加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]
}

func-name
我的函数名称。

我将以下内容添加到我的 VPN 配置文件中以尝试使用 Azure DNS 168.63.129.16

<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
它无法解决

当我使用私有端点的私有IP时

curl http://10.0.2.4/api/create
我得到一个404,这也是意料之外的,但它实际上到达了函数应用程序。大概是因为这个

这是

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

有谁知道我可以做什么来让我的函数应用程序主机名解析为专用端点 IP 地址?

azure-functions azure-virtual-network azure-vpn azure-dns
1个回答
0
投票

有谁知道我可以做什么来让我的函数应用程序主机名解析为专用端点 IP 地址?

要将

function app
主机名解析为专用端点 IP 地址,在使用 Point to Site VPN 时,您可以在专用端点的本地计算机中添加 主机条目,以解析端点的 IP 地址以进行测试。

Name: func-name.privatelink.azurewebsites.net
Address: 10.0.2.4

要在

local PC
上添加主机条目,请导航至 C:\Windows\System32\drivers tc\hosts 并将条目插入
hosts file

enter image description here

作为永久解决方案,请考虑实施专用

DNS Resolver
custom DNS
服务器,以便在使用点到站点 VPN 时解析专用端点的 IP 地址。

参考点到站点 VPN 名称解析

私有端点 DNS 集成场景

© www.soinside.com 2019 - 2024. All rights reserved.