我创建了一个 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 地址?
有谁知道我可以做什么来让我的函数应用程序主机名解析为专用端点 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
。
作为永久解决方案,请考虑实施专用
DNS Resolver
或 custom DNS
服务器,以便在使用点到站点 VPN 时解析专用端点的 IP 地址。