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

路邊兩盞燈發表於2021-05-14

前言

在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 環境】基於Azure搭建企業級內部站點, 配置私有域名訪問的詳細教程 (含演示動畫)

 

準備Azure資源

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

一:新建應用服務

  1. 登入Azure門戶(中國區): https://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 環境】基於Azure搭建企業級內部站點, 配置私有域名訪問的詳細教程 (含演示動畫)

 

參考官方建立文件:

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

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

 

二:新建虛擬網路

  1. 登入Azure門戶(中國區): https://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 環境】基於Azure搭建企業級內部站點, 配置私有域名訪問的詳細教程 (含演示動畫)

 

參考官方建立文件:

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

 

三:新建虛擬機器

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

  1. 登入Azure門戶(中國區): https://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 環境】基於Azure搭建企業級內部站點, 配置私有域名訪問的詳細教程 (含演示動畫)

參考官方建立文件:

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

 

四:配置Private Endpoint

  1. 登入Azure App Service門戶(中國區): https://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記錄,在下一節中即將介紹

動畫演示:

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

參考官方建立文件:

Using Private Endpoints for Azure Web App:https://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

動畫演示:

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

 

參考官方建立文件:

Private Endpoint DNS: https://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錯誤

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

為了解決自定義域名訪問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必須公網可解析

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

動畫演示:

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

 

參考官方建立文件:

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

 

方案二:新建應用程式閘道器Application Gateway實現域名轉換

建立內網應用程式閘道器,在閘道器中設定後端池為App Service。

  1. 登入Azure門戶(中國區): https://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 環境】基於Azure搭建企業級內部站點, 配置私有域名訪問的詳細教程 (含演示動畫)

動畫演示:

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

參考官方建立文件:

使用 Azure 應用程式閘道器定向 Web 流量 - Azure 門戶:https://docs.azure.cn/zh-cn/application-gateway/quick-create-portal

 

七:下載Azure資源包

本文實驗使用的所有資源模板檔案下載: https://files.cnblogs.com/files/lulight/myCorpRG-ARM-Template.zip

 

相關文章