【Azure 環境】基於Azure搭建企業級內部站點, 配置私有域名訪問的詳細教程 (含演示動畫)

前言

在Azure中,可以通過App Service快速部署,構建自定義站點(PaaS服務)。默認情況下,這些站點被訪問URL都是面向公網,通過公網進行解析。為了最好的安全保障,是否可以有一種功能實現只能內網訪問呢?並且為了在企業內部使用,還需要配置私有的自定義域名(如myapp.aaa)?

說明:雖然App Service提供了可以集成虛擬網路(內網),但是這樣的集成是指作為App Service伺服器實例可以訪問到虛擬網路VNET 中的資源(如SQL Service,內網API等),而App Service自身的訪問還是通過公網URL訪問。所以它並不能實現內網訪問App Service目的

 

架構

分析需求,為了實現本文目標,在Azure中所需要創建的資源有:

1) 應用服務 App Service,部署應用並啟用私有終結點(Private Endpoint),提供最終端的訪問服務

2) 虛擬網路 VNET,企業的內網,只能在該網路中才能訪問應用服務

3) 虛擬機VM,部署在虛擬網路中,一方面作為自定義DNS伺服器,同時也作為內網客戶端,測試內網訪問應用服務是否成功

4) (可選)可解析的公網域名,主要用於App Service的自定義域名所有權驗證,使用後可刪除

5) (可選) 應用程式網關Application Gateway,實現關聯內網自定義域名和應用服務App Service的網關

 

 

準備Azure資源

如資源已經創建,可跳過此部分

一:新建應用服務

  1. 登錄Azure門戶(中國區): //portal.azure.cn/
  2. 選擇App Service,點擊「Add」創建新的Web App
  3. Subscription為默認訂閱或選擇合適的訂閱
  4. Resource Group 點擊「Create new」,輸入「myCorpRG
  5. Web App Name 輸入「myinternalapp01
  6. Publish為默認Code模式
  7. Runtime Stack選擇.NET 5, Operating Ssystem為Windows,也可根據自己需求選擇
  8. Region選擇China North 2 或者China East 2 (因Private Endpoint功能在中國區只有2區支援)
  9. App Service Plan 點擊「Create new」,輸入「myinternalplan
  10. Sku and size 需要至少選擇Premium V2 P2v2,  也可選擇PremiumV3 和 Isolated,其他定價層不支援Private Endpoint
  11. Monitoring Tab頁中,本文不開啟Application Insights,如實際項目需要,可以開啟。
  12. 點擊「Review + Create」,創建Web App資源

動畫演示:

 

參考官方創建文檔:

在 Azure 中創建 ASP.NET Core Web 應用://docs.azure.cn/zh-cn/app-service/quickstart-dotnetcore?tabs=netcore31&pivots=platform-windows

Using Private Endpoints for Azure Web App://docs.microsoft.com/en-us/azure/app-service/networking/private-endpoint

 

二:新建虛擬網路

  1. 登錄Azure門戶(中國區): //portal.azure.cn/
  2. 選擇Virtual networks,點擊「Add/Create」創建新的Virtual networks
  3. Subscription為默認訂閱或選擇合適的訂閱
  4. Resource Group選擇「myCorpRG」, 為上一節創建應用服務時所建,保持實驗中所有資源在同一個組中
  5. Virtual Network Name輸入 myinternalvnet01
  6. Region選擇China North 2,保持本次實驗中所有資源在同一個區域
  7. IP Addresses根據默認值而定,如10.3.0.0/16(有效內網地址範圍 10.3.0.0 ~ 10.3.255.255。共計65536個IP地址
  8. Subnet 子網,除了默認的default外,還需要創建2個
    • 為App Service Private Endpoint創建一個新子網, name: appprivatesubnet, address 10.3.1.0/24
    • 為Application Gateway創建一個新子網, name: appgatewaysubnet, address 10.3.2.0/24
  9. 點擊Next按鈕,其他Security,Tags保持默認值
  10. 點擊Review +Create, 創建Virtual networks資源

動畫演示:

 

參考官方創建文檔:

快速入門:使用 Azure 門戶創建虛擬網路://docs.azure.cn/zh-cn/virtual-network/quick-create-portal

 

三:新建虛擬機

該虛擬機在本次實驗中即作為自定義的DNS伺服器,同時也作為實驗中訪問Web App 站點的客戶端

  1. 登錄Azure門戶(中國區): //portal.azure.cn/
  2. 選擇Virtual machine,點擊「Add/Create」創建新的Virtual machine
  3. Subscription為默認訂閱或選擇合適的訂閱
  4. Resource Group選擇「myCorpRG」, 為第一節創建應用服務時所建,保持實驗中所有資源在同一個組中
  5. Virtual machine name輸入myinternalvm01
  6. Region選擇China North 2,保持本次實驗中所有資源在同一個區域
  7. Image 選擇 Windows Server 2019 Datacenter – Gen1, 也可以根據自己的情況選擇,需要能作為內網的DNS 伺服器
  8. Size 選擇 Standard_DS2_v2, 實際需求中可以選擇更高的定價層
  9. 設置RDP虛擬機的Username 和Password, 如myadmin, 1qaz@WSX3edc
  10. Inbound ports 看起3389,用於RDP連接
  11. 下一步,設置Disks,如無其他需求,保持默認即可
  12. 下一步設置Networking,選擇第二步中創建的Virtual network(myinternalvnet01)
  13. 選擇subnet為默認的default。
  14. Public IP點擊Create New,創建一個新的公網IP,用於RDP連接,Name輸入myinternalvm01-ip, SKU選擇Basic,Assignment為Dynamic方式,動態分配IP地址
  15. 點擊Next按鈕,其他Management, Advanced,Tags保持默認值
  16. 點擊Review +Create, 創建Virtual machine資源

動畫演示:

 

參考官方創建文檔:

快速入門:在 Azure 門戶中創建 Windows 虛擬機://docs.azure.cn/zh-cn/virtual-machines/windows/quick-create-portal

 

配置Private Endpoint

  1. 登錄Azure App Service門戶(中國區): //portal.azure.cn/?l=en.en-us#blade/HubsExtension/BrowseResourceBlade/resourceType/Microsoft.Web%2Fsites
  2. 選擇myinternalapp01 App Service,點擊「Networking」並選擇Private Endpoint Connections
  3. 點擊「Add」,輸入Private Endpoint的名稱myappprivate01
  4. 選擇Virtual network為myinternalvnet01
  5. 選擇Subnet為appprivatesubnet
  6. Integrate with private DNS zone為 No,自己搭建DNS伺服器(當然,也可以選擇Private DNS Zone)
  7. 點擊OK,創建成功

PS: Private Endpoint啟動成功後,App Service即無法從公網訪問,需要在Virtual Network (myinternalvnet01)所在的VM中訪問,但需要配置正確的DNS,CNAME及A記錄,在下一節中即將介紹

動畫演示:

 

參考官方創建文檔:

Using Private Endpoints for Azure Web App://docs.microsoft.com/en-us/azure/app-service/networking/private-endpoint

 

實現默認App Service域名內網訪問

根據Private Endpoint啟用後的DNS配置文檔,需要在內網的DNS伺服器中配置兩條DNS記錄

myinternalapp01.chinacloudsites.cn

CNAME

myinternalapp01.privatelink.chinacloudsites.cn

myinternalapp01.privatelink.chinacloudsites.cn

A

10.3.1.4

私網IP地址可以在VNET中Connected devices(已連接設備)查看內網IP地址

 

RDP到VM(myinternalvm01) 並啟用DNS服務

  1. RDP到VM(myinternalvm01) 並啟用DNS服務
  2. 添加CNAME和A記錄
    1. 在VM中啟動DNS Manager
    2. 右鍵點擊Forward Lookup Zones,選擇New Zone
    3. 默認選擇使用Primary zone
    4. 輸入Zone名稱 chinacloudsites.cn
    5. 下一步,下一步,點擊Finish按鈕
    6. 等待Zone創建完成後,選擇chinacloudsites.cn Zone, 右鍵添加新CNAME 和A記錄
    7. 回到Azure門戶中,在虛擬網路(VNET)中設置自定義DNS Server,IP地址為10.3.0.4
    8. 重啟VM,然後RDP並驗證默認域名訪問是否成功:myinternalapp01.chinacloudsites.cn

動畫演示:

 

參考官方創建文檔:

Private Endpoint DNS: //docs.microsoft.com/en-us/azure/app-service/networking/private-endpoint#dns

 

配置自定義域名(內網)

根據以上的步驟,已經可以通過默認的App Service域名訪問成功。接下來的步驟就是配置內網的自定義域名。如myapp.aaa。如果在內網DNS中直接配置CNAME指向App Service默認域名,雖然通過nslookup或者nameresolver.exe解析能夠指向App Service的內網IP,但是在訪問時候會遇見404錯誤

為了解決自定義域名訪問404的問題,必須使此域名(myapp.aaa)與App Service的進行域名綁定,因為域名並沒有aaa的頂級域名,所以通過驗證域名所有權的方式無法實現綁定到aaa不是公認的域名。

  • 但是如果有一個公有域名(如xxx.com)可以臨時借用,用於驗證App Service與域名之間的所有權,當驗證成功後,就可以在公網DNS上解除CNAME,或A記錄的綁定。然後在內網DNS中配置域名與App Service的CNAME記錄。實現在內網中自定義域名的訪問。詳細的配置步驟見方案一
  • 但是如果沒有這樣的一個公網域名,且必須在內網中使用如aaa的域名,則可以通過網關的方式實現。使用基於虛擬網路搭建的Application Gateway,讓myapp.aaa域名與Application Gateway的內網IP地址綁定,讓請求轉換到App Service。詳細的配置步驟見方案二

 

方案一:添加應用程式App Service自定義域名

 

此實驗中,使用myapp.mylubu.com作為與App Service進行域名綁定,並驗證域名所有權

1)  進入App Service的Custom Domain頁面,點擊Add custom domain按鈕

2)  輸入myapp.mylubu.com,點擊 validate。提示Domain ownership驗證失敗,需要在DNS上配置一個CNAME記錄和一個asuid.{subdomain}記錄

3)  實驗中使用的時Azure的Public DNS Zone,進入mylubu.com DNS Zone,添加CNAME記錄

4)  添加asuid.myapp的TXT記錄

5)  回到App Service的Custom Domain頁面(#1), 重複驗證myapp.mylubu.com域名,直至成功後綁定域名成功

6)  再次回到Public DNS Zone頁面。刪除為mylubu.com添加的CNAME和TXT記錄

7)  RDP到VM中,進入私網DNS伺服器,為myapp.mylubu.com配置內網DNS CNAME記錄。

8)  在VM中訪問myapp.mylubu.com成功

PS:在驗證域名所有權時,myapp.mylubu.com必須公網可解析

 

動畫演示:

 

參考官方創建文檔:

將現有的自定義 DNS 名稱映射到 Azure 應用服務://docs.azure.cn/zh-cn/app-service/app-service-web-tutorial-custom-domain

 

方案二:新建應用程式網關Application Gateway實現域名轉換

創建內網應用程式網關,在網關中設置後端池為App Service。

  1. 登錄Azure門戶(中國區): //portal.azure.cn/
  2. 選擇Application gateways,點擊「Add/Create」創建新的application gateway
  3. Subscription為默認訂閱或選擇合適的訂閱
  4. Resource Group選擇「myCorpRG」, 為第一節創建應用服務時所建,保持實驗中所有資源在同一個組中
  5. Application gateway name輸入 myinternalappgateway01
  6. Region選擇China North 2,保持本次實驗中所有資源在同一個區域
  7. Tier 選擇 Standard, 因實驗中只需要開啟Private IP地址即可
  8. 其他Instance Count, SKU size, HTTP2等設定。保持默認
  9. Virtual Network中選擇 myinternalvnet01
  10. Subnet選擇 appgatewaysubnet, 均在創建虛擬網路時準備好。
  11. Next : Forntends頁面中,Forntend IP address type選擇 Private,並且Use a specific private IP address 設置為No,然系統自動分配一個內網IP。
  12. Next : Backends 頁面中,點擊「Add a Backend Pool」, Name輸入backendpool01,Target Type設置為App Services , Target選擇 myinternalapp01
  13. Next : Configuration 頁面中,配置Routing rule,  點擊Add a routing rule
    1.       Rule name輸入為 rule01
    2.       Listener name輸入 listener01
    3.       Frontend IP選擇 Private
    4.       Protocol 為HTTP
    5.       Port 為80, Listener的其他選項則選擇默認值
    6.       在Backend Targets中,設置Target type為Backend pool
    7.       Backend target選擇第12步中創建的backendpool01
    8.       HTTP settings則需要點擊」Add new」按鈕,新增HTTP的規則
    9.       HTTP settings name 輸入 httpsetting01
    10.    Backend Protocol 選擇HTTP, Backend Port為80埠
    11.    Additional settings部分全部保持默認值
    12.    Host Name部分中,設定Override with new host name 為Yes, Host name override為 Pick Host name from backend target
    13.    Create custom probes為默認值 Yes
    14.    點擊Add按鈕,回到Configuration配置頁面
  14. 點擊Next : Tags
  15. 點擊 Next : Review + Create。創建Application Gateway。
  16. 在Application Gateway中查看Backend Pool Healthy狀態。等待狀態值為正常後,RDP到VM中,使用Application Gateway的內網IP地址訪問,驗證是否成功訪問App Service。
  17. 為內網域名myapp.aaa添加A記錄,指定到Application Gateway的Private IP。
  18. 驗證myapp.aaa成功訪問app service

PS:當應用程式網關創建好之後,在Backend Health中查看後端池的健康狀態非常重要。只有狀態為Healthy的後端才能成功訪問

動畫演示:

參考官方創建文檔:

使用 Azure 應用程式網關定向 Web 流量 – Azure 門戶://docs.azure.cn/zh-cn/application-gateway/quick-create-portal

 

下載Azure資源包

本文實驗使用的所有資源模板文件下載: