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

如何在带NAT网关的Azure VNet中仅允许指定域名访问?

实现Azure VM仅访问特定域名的低成本方案

方案1:自定义DNS服务器+路由表+NSG组合

  • 部署一台最低配VM(比如B1s实例)作为自定义DNS服务器,用BIND(Linux)或Windows DNS搭建,只配置允许的域名(Domain A、Domain B)的解析记录,其他域名直接返回无法解析的结果。
  • 修改VNet的DNS设置,将这台DNS VM的私有IP设为VNet的默认DNS服务器。
  • 配置VNet路由表:把默认路由(0.0.0.0/0)的下一跳指向该DNS VM;同时确保DNS VM能通过NAT网关访问允许域名的公网IP。
  • 给VNet的NSG添加出站规则:仅允许VM访问DNS服务器的53端口(UDP/TCP),以及允许DNS服务器访问允许域名对应的IP段(可提前用nslookup获取IP范围,后续定期更新)。这样VM只能解析到允许的域名,且只有这些域名的流量能通过DNS服务器转发,其余互联网访问全被阻断。

方案2:Azure Private DNS+路由表+NSG组合

  • 创建Azure Private DNS区域,添加Domain A、Domain B的A/CNAME记录,指向它们的公网IP。
  • 将VNet关联到该Private DNS区域,确保VM解析这两个域名时返回指定的公网IP。
  • 配置路由表:把默认路由(0.0.0.0/0)的下一跳设为“无”(或无效IP),再单独添加允许域名IP段的路由,下一跳指向NAT网关。
  • NSG出站规则设置:仅允许VM访问这些允许的IP段,同时允许访问Azure默认DNS的IP(168.63.129.16)用于解析Private DNS记录。这种方式下,VM只能访问指定IP,其余流量要么被路由丢弃,要么被NSG拦截。

方案3:VM本地防火墙+Azure Policy管控

  • 在每台VM上用自定义脚本扩展配置本地防火墙:Windows用Windows Firewall,Linux用iptables,直接设置仅允许访问特定域名对应的IP,阻断所有其他出站流量。
  • 用Azure Policy强制VNet内的所有VM都安装这个脚本扩展,防止规则被手动篡改。
  • 注意:域名的IP可能会变动,需要给脚本加定时任务,定期执行nslookup获取最新IP并更新防火墙规则。

方案优缺点对比

  • 方案1:灵活性强,适配域名IP频繁变动的场景,仅需维护一台超低配VM,成本几乎可以忽略。
  • 方案2:无需额外维护VM,依赖Azure原生服务,但需要手动更新Private DNS记录和IP段,适合域名IP相对稳定的情况。
  • 方案3:完全在VM本地实现,无需额外网络组件,适合VM数量不多的场景,但需要管理每台VM的防火墙规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 21:22:15