1. 程式人生 > 實用技巧 >【API管理 APIM】APIM整合內部VNet時,常遇見的關於自定義DNS服務問題。

【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