【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门户(中国区): https://portal.azure.cn/

  • 选择App Service,点击“Add”创建新的Web App

  • Subscription为默认订阅或选择合适的订阅

  • Resource Group 点击“Create new”,输入“myCorpRG”

  • Web App Name 输入“myinternalapp01”

  • Publish为默认Code模式

  • Runtime Stack选择.NET 5, Operating Ssystem为Windows,也可根据自己需求选择

  • Region选择China North 2 或者China East 2 (因Private Endpoint功能在中国区只有2区支持)

  • App Service Plan 点击“Create new”,输入“myinternalplan”

  • Sku and size 需要至少选择Premium V2 P2v2,  也可选择PremiumV3 和 Isolated,其他定价层不支持Private Endpoint

  • Monitoring Tab页中,本文不开启Application Insights,如实际项目需要,可以开启。

  • 点击“Review + Create”,创建Web App资源

动画演示:

 

参考官方创建文档:

在 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

* *

二:新建虚拟网络

  • 登录Azure门户(中国区): https://portal.azure.cn/

  • 选择Virtual networks,点击“Add/Create”创建新的Virtual networks

  • Subscription为默认订阅或选择合适的订阅

  • Resource Group选择“myCorpRG”, 为上一节创建应用服务时所建,保持实验中所有资源在同一个组中

  • Virtual Network Name输入 myinternalvnet01

  • Region选择China North 2,保持本次实验中所有资源在同一个区域

  • IP Addresses根据默认值而定,如10.3.0.0/16(有效内网地址范围* 10.3.0.0 ~ 10.3.255.255**。共计65536个IP地址*)

  • 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
  • - 点击Next按钮,其他Security,Tags保持默认值
    • 点击Review +Create, 创建Virtual networks资源

    动画演示:

     

    参考官方创建文档:

    快速入门:使用 Azure 门户创建虚拟网络:https://docs.azure.cn/zh-cn/virtual-network/quick-create-portal

     

    三:新建虚拟机

    该虚拟机在本次实验中即作为自定义的DNS服务器,同时也作为实验中访问Web App 站点的客户端

    • 登录Azure门户(中国区): https://portal.azure.cn/

    • 选择Virtual machine,点击“Add/Create”创建新的Virtual machine

    • Subscription为默认订阅或选择合适的订阅

    • Resource Group选择“myCorpRG”, 为第一节创建应用服务时所建,保持实验中所有资源在同一个组中

    • Virtual machine name输入myinternalvm01

    • Region选择China North 2,保持本次实验中所有资源在同一个区域

    • Image 选择 Windows Server 2019 Datacenter – Gen1, 也可以根据自己的情况选择,需要能作为内网的DNS 服务器

    • Size 选择 Standard_DS2_v2, 实际需求中可以选择更高的定价层

    • 设置RDP虚拟机的Username 和Password, 如myadmin, 1qaz@WSX3edc

    • Inbound ports 看起3389,用于RDP连接

    • 下一步,设置Disks,如无其他需求,保持默认即可

    • 下一步设置Networking,选择第二步中创建的Virtual network(myinternalvnet01)

    • 选择subnet为默认的default。

    • Public IP点击Create New,创建一个新的公网IP,用于RDP连接,Name输入myinternalvm01-ip, SKU选择Basic,Assignment为Dynamic方式,动态分配IP地址

    • 点击Next按钮,其他Management, Advanced,Tags保持默认值

    • 点击Review +Create, 创建Virtual machine资源

    动画演示:

     

    参考官方创建文档:

    快速入门:在 Azure 门户中创建 Windows 虚拟机:https://docs.azure.cn/zh-cn/virtual-machines/windows/quick-create-portal

     

    四:配置Private Endpoint

    PS: Private Endpoint启动成功后,App Service即无法从公网访问,需要在Virtual Network (myinternalvnet01)所在的VM中访问,但需要配置正确的DNS,CNAME及A记录,在下一节中即将介绍

    动画演示:

     

    参考官方创建文档:

    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服务

    • RDP到VM(myinternalvm01) 并启用DNS服务

    • 添加CNAME和A记录

  • 在VM中启动DNS Manager
    • 右键点击Forward Lookup Zones,选择New Zone

    • 默认选择使用Primary zone

    • 输入Zone名称 chinacloudsites.cn

    • 下一步,下一步,点击Finish按钮

    • 等待Zone创建完成后,选择chinacloudsites.cn Zone, 右键添加新CNAME 和A记录

    • 回到Azure门户中,在虚拟网络(VNET)中设置自定义DNS Server,IP地址为10.3.0.4

    • 重启VM,然后RDP并验证默认域名访问是否成功:myinternalapp01.chinacloudsites.cn

  • 动画演示:

     

    参考官方创建文档:

    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错误

    为了解决自定义域名访问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.记录

    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 应用服务:https://docs.azure.cn/zh-cn/app-service/app-service-web-tutorial-custom-domain

    * *

    方案二:新建应用程序网关Application Gateway实现域名转换

    创建内网应用程序网关,在网关中设置后端池为App Service。

    • 登录Azure门户(中国区): https://portal.azure.cn/

    • 选择Application gateways,点击“Add/Create”创建新的application gateway

    • Subscription为默认订阅或选择合适的订阅

    • Resource Group选择“myCorpRG”, 为第一节创建应用服务时所建,保持实验中所有资源在同一个组中

    • Application gateway name输入 myinternalappgateway01

    • Region选择China North 2,保持本次实验中所有资源在同一个区域

    • Tier 选择 Standard, 因实验中只需要开启Private IP地址即可

    • 其他Instance Count, SKU size, HTTP2等设定。保持默认

    • Virtual Network中选择 myinternalvnet01

    • Subnet选择 appgatewaysubnet, 均在创建虚拟网络时准备好。

    • Next : Forntends页面中,Forntend IP address type选择 Private,并且Use a specific private IP address 设置为No,然系统自动分配一个内网IP。

    • Next : Backends 页面中,点击“Add a Backend Pool”, Name输入backendpool01,Target Type设置为App Services , Target选择 myinternalapp01

    • **Next : Configuration ****页面中,配置Routing rule,  **点击Add a routing rule

  •       Rule name输入为 rule01
    •       Listener name输入 listener01

    •       Frontend IP选择 Private

    •       Protocol 为HTTP

    •       Port 为80, Listener的其他选项则选择默认值

    •       在Backend Targets中,设置Target type为Backend pool

    •       Backend target选择第12步中创建的backendpool01

    •       HTTP settings则需要点击”Add new”按钮,新增HTTP的规则

    •       HTTP settings name 输入 httpsetting01

    •    Backend Protocol 选择HTTP, Backend Port为80端口

    •    Additional settings部分全部保持默认值

    •    Host Name部分中,设定Override with new host name 为Yes, Host name override为 Pick Host name from backend target

    •    Create custom probes为默认值 Yes

    •    点击Add按钮,回到Configuration配置页面

  • - 点击Next : Tags
    • 点击 Next : Review + Create。创建Application Gateway。

    • 在Application Gateway中查看Backend Pool Healthy状态。等待状态值为正常后,RDP到VM中,使用Application Gateway的内网IP地址访问,验证是否成功访问App Service。

    • 为内网域名myapp.aaa添加A记录,指定到Application Gateway的Private IP。

    • 验证myapp.aaa成功访问app service

    PS:当应用程序网关创建好之后,在Backend Health中查看后端池的健康状态非常重要。只有状态为Healthy的后端才能成功访问

    动画演示:

    参考官方创建文档:

    使用 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

     

    正在加载评论...