天天看點

【Azure 環境】基于Azure搭建企業級内部站點, 配置私有域名通路的詳細教程 (含示範動畫)

【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 環境】基于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. 選擇Virtual networks,點選“Add/Create”建立新的Virtual networks
  2. Resource Group選擇“myCorpRG”, 為上一節建立應用服務時所建,保持實驗中所有資源在同一個組中
  3. Virtual Network Name輸入 myinternalvnet01
  4. Region選擇China North 2,保持本次實驗中所有資源在同一個區域
  5. IP Addresses根據預設值而定,如10.3.0.0/16(有效内網位址範圍 10.3.0.0 ~ 10.3.255.255。共計65536個IP位址)
  6. 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
  7. 點選Next按鈕,其他Security,Tags保持預設值
  8. 點選Review +Create, 建立Virtual networks資源

【Azure 環境】基于Azure搭建企業級内部站點, 配置私有域名通路的詳細教程 (含示範動畫)

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

三:建立虛拟機

該虛拟機在本次實驗中即作為自定義的DNS伺服器,同時也作為實驗中通路Web App 站點的用戶端

  1. 選擇Virtual machine,點選“Add/Create”建立新的Virtual machine
  2. Resource Group選擇“myCorpRG”, 為第一節建立應用服務時所建,保持實驗中所有資源在同一個組中
  3. Virtual machine name輸入myinternalvm01
  4. Image 選擇 Windows Server 2019 Datacenter – Gen1, 也可以根據自己的情況選擇,需要能作為内網的DNS 伺服器
  5. Size 選擇 Standard_DS2_v2, 實際需求中可以選擇更高的定價層
  6. 設定RDP虛拟機的Username 和Password, 如myadmin, 1qaz@WSX3edc
  7. Inbound ports 看起3389,用于RDP連接配接
  8. 下一步,設定Disks,如無其他需求,保持預設即可
  9. 下一步設定Networking,選擇第二步中建立的Virtual network(myinternalvnet01)
  10. 選擇subnet為預設的default。
  11. Public IP點選Create New,建立一個新的公網IP,用于RDP連接配接,Name輸入myinternalvm01-ip, SKU選擇Basic,Assignment為Dynamic方式,動态配置設定IP位址
  12. 點選Next按鈕,其他Management, Advanced,Tags保持預設值
  13. 點選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搭建企業級内部站點, 配置私有域名通路的詳細教程 (含示範動畫)

五:實作預設App Service域名内網通路

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

myinternalapp01.chinacloudsites.cn CNAME myinternalapp01.privatelink.chinacloudsites.cn
A

10.3.1.4

私網IP位址可以在VNET中Connected devices(已連接配接裝置)檢視内網IP位址

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

  1. 添加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. 選擇Application gateways,點選“Add/Create”建立新的application gateway
  2. Application gateway name輸入 myinternalappgateway01
  3. Tier 選擇 Standard, 因實驗中隻需要開啟Private IP位址即可
  4. 其他Instance Count, SKU size, HTTP2等設定。保持預設
  5. Virtual Network中選擇 myinternalvnet01
  6. Subnet選擇 appgatewaysubnet, 均在建立虛拟網絡時準備好。
  7. Next : Forntends頁面中,Forntend IP address type選擇 Private,并且Use a specific private IP address 設定為No,然系統自動配置設定一個内網IP。
  8. Next : Backends 頁面中,點選“Add a Backend Pool”, Name輸入backendpool01,Target Type設定為App Services , Target選擇 myinternalapp01
  9. 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配置頁面
  10. 點選Next : Tags
  11. 點選 Next : Review + Create。建立Application Gateway。
  12. 在Application Gateway中檢視Backend Pool Healthy狀态。等待狀态值為正常後,RDP到VM中,使用Application Gateway的内網IP位址通路,驗證是否成功通路App Service。
  13. 為内網域名myapp.aaa添加A記錄,指定到Application Gateway的Private IP。
  14. 驗證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

當在複雜的環境中面臨問題,格物之道需:濁而靜之徐清,安以動之徐生。 雲中,恰是如此!

繼續閱讀