【API管理 APIM】APIM集成内部VNet时,常遇见的关于自定义DNS服务问题。

问题描述

Azure 的APIM集成虚拟网络有两种方式,外部VNET, 内部VNET. 

  • 外部VNET,要求低,可以通过APIM访问VNET中的VM等资源,不需要配置自定义DNS服务器,这种方式下,APIM没有内部的私有IP。
  • 内部VNET,要求多,需要自定义DNS服务器,并且外部不能访问APIM的接口,只能在VNET的资源(如VM)中访问。必须在DNS 服务器中配置A记录,指定访问到为APIM分配的内网IP地址。

而在配置内部VNET的时候,需要先准备好:

  • VM (Azure 中虚拟机,用于作为DNS服务器)
  • VNET (虚拟网络)
  • 独立的子网
  • 在VNET中修改默认的DNS服务器到自定义的DNS服务器中,注意,这里需要配置的是该VM的内网地址

由于在使用APIM的时候,可能对DNS的配置,VNET中的设置都不熟悉,以下的步骤就是介绍如何配置DNS修改VNET,及完成内部VNET集成。

 

 

一:启用自定义DNS服务器

  (由于APIM在对VNET的修改耗时非常长,15~45分钟左右,所以可以先准备好DNS服务器以节约时间)

  以Windows Server 2016 DataCenter为例,启动DNS Server非常简单,在Windows添加角色中选择DNS Server后,之后的操作全部默认下一步就可以。

  

    等安装好之后,下一步就是配置 正向解析 (通过域名解析出IP地址)。 选择Forward Lookup Zones -> New Zone -> 输入需要添加的Zone名字,如azure-api.cn。然后就是一切默认值到最后。

  

      在新建的Zone中添加A记录: 这一步需要等到APIM中完成VNET集成后,根据文档中的需要,把以下的内容都配置到该Zone下。

10.1.0.5 contosointernalvnet.azure-api.cn
10.1.0.5 contosointernalvnet.portal.azure-api.cn
10.1.0.5 contosointernalvnet.developer.azure-api.cn
10.1.0.5 contosointernalvnet.management.azure-api.n
10.1.0.5 contosointernalvnet.scm.azure-api.cn

Reference Link: https://docs.azure.cn/zh-cn/api-management/api-management-using-with-internal-vnet#apim-dns-configuration

  当然,这里需要修改为APIM的内网IP地址和自定义的APIM域名。配置完成后的效果如下:

       

 

 

二:在Azure VNET中修改默认的DNS服务器为该VM的内网IP地址

 (此点是必须的操作,不然在该VM中或者是同一VNET的VM中都无法解析到配置的DNS域名,但使用Ping时,获取到这样的错误,则表示配置的DNS服务器还没有在整个VNET中有效)

C:\Users\vmadmin>ping lbapimvnet01.azure-api.cn
Ping request could not find host lbapimvnet01.azure-api.cn. Please check the name and try again.

  需要的修改办法及在VNET中设置自定义的DNS服务器,默认使用的是由Azure提供的DNS服务器,但是当使用APIM集成内部VNET时,则必须自定义DNS服务器,不然内网中的所有资源均无法访问APIM.

  • 注意,这里DNS服务器的地址必须为内网的IP地址

配置成功后,可以使用nslookup来查看配置的DNS是否生效。测试效果如:

 

 

参考文档

如何使用Windows Server搭建DNS服务器https://www.58voip.com/build-windows-server-dns/

在内部虚拟网络中使用 Azure API 管理服务https://docs.azure.cn/zh-cn/api-management/api-management-using-with-internal-vnet#apim-dns-configuration

 

 

 

posted @ 2020-09-11 16:41  路边两盏灯  阅读(475)  评论(0编辑  收藏  举报