Azure Function App集成VNet后未使用自定义DNS服务器问题咨询
Azure Function App未使用VNet自定义DNS的原因及解决方法
这个问题通常由以下几个核心原因导致,对应解决方法如下:
1. VNet集成模式不兼容
Azure Function的VNet集成分为区域VNet集成(新模式)和网关VNet集成(旧模式)两种:
- 网关VNet集成不会自动继承VNet的自定义DNS配置,Function App仍会使用Azure默认DNS(168.63.129.16)。
- 只有区域VNet集成才支持自动继承VNet的自定义DNS设置。
解决方法:
在Function App的「网络」→「VNet集成」页面,确认当前使用的是区域VNet集成。如果是网关集成,建议切换为区域集成(需满足子网无网关关联等前提条件)。
2. 未启用全流量路由
如果Function App的出站流量未全部通过VNet路由,DNS查询可能会绕过VNet的自定义DNS,直接使用默认服务器。
解决方法:
在Function App的「配置」→「应用程序设置」中,添加或修改WEBSITE_VNET_ROUTE_ALL设置为1,确保所有出站流量(包括DNS请求)都通过VNet转发。
3. SCM/Kudu站点未集成VNet
Kudu(SCM)站点是独立于Function App运行的环境,默认未启用VNet集成,因此会使用Azure默认DNS服务器。
解决方法:
在VNet集成设置页面,勾选「集成SCM站点」选项,保存后Kudu环境将继承VNet的自定义DNS配置。
4. DNS配置未生效或缓存问题
- 即使配置正确,Function App的DNS缓存可能仍保留旧设置,可通过重启Function App或在Kudu中执行
ipconfig /flushdns清除缓存。 - 确保VNet的自定义DNS服务器处于运行状态,且Function App所在子网与DNS服务器子网之间的路由、NSG规则允许UDP 53端口的DNS流量(虽然你指定DNS服务器时能解析,但仍需确认常规路由是否正常)。
验证方法
- 在Function App代码中调用DNS解析API(如C#的
Dns.GetHostEntry("your-custom-domain")或Python的socket.gethostbyname("your-custom-domain")),验证运行时是否能正常解析。 - 在Kudu中执行
nslookup your-custom-domain,确认启用SCM集成后是否自动使用自定义DNS服务器。
内容的提问来源于stack exchange,提问作者Jonathon Anderson
相关产品推荐
相关产品推荐

