Active Directory(简称AD)是企业基础架构的基石,做好其灾备是非常重要的。Active Directory 灾难恢复 (DR) 计划应涵盖执行完整 AD林恢复所需的所有内容。AD的备份有多种方式,例如,使用 Windows Server Backup 可以实现完整的服务器备份与恢复;也可以使用建立多台额外域控,转移或者夺取FSMO角色的方式快速恢复服务。在建立备份的同时,我们甚至还需要考虑异地灾备,可以在异地IDC或者云中(如Azure)建立灾备中心。本序列文章将介绍如何将本地AD,通过在Azure中部署额外域控,实现本地AD的异地灾备。本文所介绍的环境简要拓扑图如下:
其中AD环境有根域和子域构成,根域和子域在本地均有有多台域控。计划在本地站点和Azure站点中通过lPsec lKEv2 S2S Tunnel建立连接,打通Azure和本地站点内网通信。本文将介绍如何先打通Azure 虚拟网络和本地网络。
一、创建虚拟网络
使用虚拟网络作为跨界体系结构的一部分时,请务必与本地网络管理员进行协调,以划分一个 IP 地址范围专供此虚拟网络使用。 如果 VPN 连接的两端存在重复的地址范围,则会以意外方式路由流量。 此外,若要将此虚拟网络连接到另一个虚拟网络,地址空间不能与另一虚拟网络重叠。 相应地规划网络配置。接下来,我们先进行虚拟网络的创建。
1.登录Azure 门户
2.在所有服务中,点击网络--虚拟网络
3. 在“虚拟网络”页面上,选择“创建”以打开“创建虚拟网络”页面。
4.在“基本信息”选项卡上的“项目详细信息”和“实例详细信息”中配置虚拟网络设置。 验证输入的值时,将看到一个绿色对勾。 你可以根据自己需要的设置调整示例中显示的值。
·
订阅:确认列出的订阅是正确的。 你可以使用下拉框来更改订阅。
· 资源组:选择一个现有资源组,或选择“新建”以创建一个新资源组。
· 名称:输入虚拟网络的名称。
· 区域:选择你的虚拟网络的位置。 该位置决定了部署到此虚拟网络的资源将位于哪里。
5.选择“下一步”或“安全性”,转到“安全性”选项卡。我这是Demo环境,保留此页上所有服务的默认值,生产环境根据实际需要进行设置。
6.选择“IP 地址”以转到“IP 地址”选项卡。在“IP 地址”选项卡上配置设置。
· IPv4 地址空间:默认情况下,系统会自动创建一个地址空间。 可以选择该地址空间,将其调整为你所需要的值。 还可以添加其他地址空间并移除自动创建的默认值。 例如,可以将起始地址指定为“10.1.0.0”,将地址空间大小指定为“/16”。 然后选择“添加”以添加该地址空间。
因系统自动创建的子网,已经被我其他资源使用了,这会造成无法对缔造者空间重叠的虚拟网络对等互联,因此最后删除并重新创建。
点击 + 添加子网:如果你使用默认地址空间,则系统会自动创建一个默认子网。 如果更改地址空间,请在该地址空间中添加一个新子网。 选择“+添加子网”,打开“添加子网”窗口 。 配置以下设置,然后选择页面底部的“添加”以添加这些值。
o 子网名称:例如“FrontEnd”。
o 子网地址范围:此子网的地址范围。 我设置为“10.10.0.0”和“/16”。
7.点击“审阅 + 创建”,验证虚拟网络设置,验证设置后,选择“创建”以创建虚拟网络。
创建虚拟网络后,可以选择配置 Azure DDoS 防护。 在任何新的或现有的虚拟网络上可以轻松启用 Azure DDoS 防护,且无需对应用程序或资源做出任何更改。
二、创建网关子网
虚拟网络创建之后,需要创建一个名为“GatewaySubnet”的特定子网。网关子网是虚拟网络的 IP 地址范围的一部分,包含虚拟网络网关资源和服务使用的 IP 地址。创建网关子网时,需指定子网包含的 IP 地址数。 所需的 IP 地址数目取决于要创建的 VPN 网关配置。 有些配置需要具有比其他配置更多的 IP 地址。 最好为网关子网指定 /27 或更大的值(/26、/25 等)。如果出现错误,指出地址空间与子网重叠,或者子网不包含在虚拟网络的地址空间中,请检查虚拟网络地址范围。 出错的原因可能是为虚拟网络创建的地址范围中没有足够的可用 IP 地址。 例如,如果默认子网包含整个地址范围,则不会有剩余的 IP 地址用于创建更多子网。 可以调整现有地址空间中的子网以释放 IP 地址,或指定另一个地址范围并在其中创建网关子网。
- 在虚拟网络页面的左侧窗格中,选择“子网”以打开“子网”页。
- 在页面顶部,选择“+ 网关子网”以打开“添加子网”窗格。
3.不要调整该页面上的其他值。 选择页面底部的“保存”以保存子网。
收到成功添加子网的消息,子网创建成功。
三、创建VPN网关
子网创建完成之后,接着我们为虚拟网络创建虚拟网络网关。 创建网关通常需要 45 分钟或更长的时间,具体取决于所选的网关 SKU。
- 在“搜索资源、服务和文档(G+/)”中,输入“虚拟网络网关”。 在市场搜索结果中找到“虚拟网络网关”,选择它以打开“创建虚拟网络网关”页面。
2.点击创建虚拟网络网关
3.在“基本信息”选项卡上,填写“项目详细信息”和“实例详细信息”的值 。
· 订阅:从下拉列表中选择要使用的订阅。
· 资源组:在此页上选择虚拟网络时,会自动填充此设置。
· 名称:为网关命名。 为网关命名与为网关子网命名不同。 它是要创建的网关对象的名称。
· 区域:选择要在其中创建此资源的区域。 网关的区域必须与虚拟网络相同。
· 网关类型:选择“VPN”。 VPN 网关使用虚拟网络网关类型“VPN” 。
· SKU:从下拉列表中选择支持你想要使用的功能的网关 SKU。 请参阅网关 SKU。 在门户中,下拉列表中提供的 SKU 取决于你选择的VPN类型。 基本 SKU 只能使用 Azure CLI 或 PowerShell 进行配置。 无法在 Azure 门户中配置基本 SKU。
· 代系:选择想要使用的代系。 建议使用第 2 代 SKU。
· 虚拟网络:从下拉列表中选择要将此网关添加到的虚拟网络。 如果看不到要为其创建网关的虚拟网络,请确保在以前的设置中选择了正确的订阅和区域。
· “网关子网地址范围”或“子网”:创建 VPN 网关时需要网关子网。
此时,此字段具有几种不同的行为,具体取决于虚拟网络地址空间,以及是否已为虚拟网络创建名为 GatewaySubnet 的子网。如果你没有网关子网,并且此页面上也未显示用于创建网关子网的选项,请返回到你的虚拟网络并创建网关子网。 然后,返回到此页面并配置 VPN 网关。
4.指定“公共 IP 地址”的值。 这些设置指定与 VPN 网关关联的公共 IP 地址对象。 创建 VPN 网关后,会将公共 IP 地址分配给此对象。 仅当删除并重新创建网关时,主公共 IP 地址才会发生更改。 该地址不会因为 VPN 网关大小调整、重置或其他内部维护/升级而更改。
5.点击“查看 + 创建” ,运行验证。
6.验证通过后,选择“创建”以部署 VPN 网关。
7.查看公共 IP 地址
网关创建完成之后,可以在网关的“概述”页面查看网关的公共 IP 地址,在后续配置VPN设备时需要用到。
四、创建本地网络网关
本地网络网关是代表用于路由的本地位置(站点)的特定对象。 可以为站点提供一个名称供 Azure 引用,然后指定本地 VPN 设备的 IP 地址,以便创建一个连接来连接到该设备。 此外还可指定 IP 地址前缀,以便通过 VPN 网关将其路由到 VPN 设备。 指定的地址前缀是位于本地网络的前缀。 如果之后本地网络发生了更改,或需要更改 VPN 设备的公共 IP 地址,可轻松更新这些值。
1.在Azure门户,所有服务中,点击网络,在混合链接中点击本地网络网关
2.点击创建本地网络网关
3.在“项目详细信息”和“实例详细信息”中,选择需要使用的订阅,资源组和区域,输入本地网络名称和IP地址,并添加地址空间,然后点击“下一步:高级”
4.点击“查看+创建”,运行验证
5.验证通过后,点击创建
五、创建VPN连接
创建VPN网关之后,在虚拟网关和本地 VPN 设备之间还要创建站点到站点 VPN 连接。
- 转到虚拟网络。 在虚拟网络页面的左侧选择“连接的设备”。 找到 VPN 网关,然后选中它以将它打开。
- 在网关的页面上,点击“添加”以打开创建连接页面。
3.在“创建连接”页的“基本信息”选项卡上,配置连接的各个值:
4.选择“设置”选项卡,配置以下值:
· 虚拟网络网关:从下拉列表中选择虚拟网络网关。
· 本地网络网关:从下拉列表中选择本地网络网关。
· 共享密钥:此处的值必须与用于本地 VPN 设备的值匹配。
· IKE 协议:选择“IKEv2”。
· 使用 Azure 专用 IP 地址:不选。
· 启用 BGP:不选。
· FastPath:不选。
· IPsec/IKE 策略:选择“默认”。
· 使用基于策略的流量选择器:选择“禁用”。
· DPD 超时(秒):选择“45”。
· 连接模式:选择“默认”。 此设置用于指定哪个网关可以启动连接。
· “NAT 规则关联”:请将“流入量”和“流出量”保留为“已选 0”。
5.点击“查看+创建”,确认连接设置
6.点击“创建”以创建连接
六、配置VPN设备
通过站点到站点连接连接到本地网络需要 VPN 设备。 在此步骤中,请配置 VPN 设备。 配置 VPN 设备时,需要以下值:
· 共享密钥:此共享密钥与创建站点到站点 VPN 连接时指定的密钥相同。 在示例中,我们使用基本的共享密钥。 建议生成更复杂的可用密钥。
· 虚拟网络网关的公共 IP 地址:可以使用 Azure 门户、PowerShell 或 Azure CLI 查看公共 IP 地址。 要使用 Azure 门户查找你的 VPN 网关的公共 IP 地址,请转到“虚拟网络网关”,然后选择你的网关的名称。
1.在VPN连接概述页面中,点击下载配置
2.根据所用的 VPN 设备,有时可以下载 VPN 设备配置脚本(如果你的设备供应商在下来列表中可以找到,则可以直接下载相应的脚本,如果没有找到你的设备供应商,则下载Generic Samples,然后根据实际情况进行修改)。
七、配置Windows Server RRAS(可选)
如果你是做实验、搭测试环境,但又没有VPN设备,那你可以像我一样,使用Windows Server RRAS进行配置,打通Azure虚拟网络和本地网络的连接。你可以使用以下的Powershell命令进行配置,
# Microsoft Corporation
# Windows Azure Virtual Network
# This configuration template applies to Microsoft RRAS running on Windows Server 2012.
# It configures an IPSec VPN tunnel connecting your on-premise VPN device with the Azure gateway.
# !!! Please notice that we have the following restrictions in our support for RRAS:
# !!! 1. Only IKEv2 is currently supported
# !!! 2. Only route-based VPN configuration is supported.
# !!! 3. Admin priveleges are required in order to run this script
Function Invoke-WindowsApi(
[string] $dllName,
[Type] $returnType,
[string] $methodName,
[Type[]] $parameterTypes,
[Object[]] $parameters
)
{
## Begin to build the dynamic assembly
$domain = [AppDomain]::CurrentDomain
$name = New-Object Reflection.AssemblyName 'PInvokeAssembly'
$assembly = $domain.DefineDynamicAssembly($name, 'Run')
$module = $assembly.DefineDynamicModule('PInvokeModule')
$type = $module.DefineType('PInvokeType', "Public,BeforeFieldInit")
$inputParameters = @()
for($counter = 1; $counter -le $parameterTypes.Length; $counter++)
{
$inputParameters += $parameters[$counter - 1]
}
$method = $type.DefineMethod($methodName, 'Public,HideBySig,Static,PinvokeImpl',$returnType, $parameterTypes)
## Apply the P/Invoke constructor
$ctor = [Runtime.InteropServices.DllImportAttribute].GetConstructor([string])
$attr = New-Object Reflection.Emit.CustomAttributeBuilder $ctor, $dllName
$method.SetCustomAttribute($attr)
## Create the temporary type, and invoke the method.
$realType = $type.CreateType()
$ret = $realType.InvokeMember($methodName, 'Public,Static,InvokeMethod', $null, $null, $inputParameters)
return $ret
}
Function Set-PrivateProfileString(
$file,
$category,
$key,
$value)
{
## Prepare the parameter types and parameter values for the Invoke-WindowsApi script
$parameterTypes = [string], [string], [string], [string]
$parameters = [string] $category, [string] $key, [string] $value, [string] $file
## Invoke the API
[void] (Invoke-WindowsApi "kernel32.dll" ([UInt32]) "WritePrivateProfileString" $parameterTypes $parameters)
}
# Install RRAS role
Import-Module ServerManager
Install-WindowsFeature RemoteAccess -IncludeManagementTools
Add-WindowsFeature -name Routing -IncludeManagementTools
# !!! NOTE: A reboot of the machine might be required here after which the script can be executed again.
# Install S2S VPN
Import-Module RemoteAccess
if ((Get-RemoteAccess).VpnS2SStatus -ne "Installed")
{
Install-RemoteAccess -VpnType VpnS2S
}
# Add and configure S2S VPN interface
#请将4.227.171.85替换为你的网关公共IP地址,"192.168.1.0/24:100","172.16.103.0/24:100","192.168.110.0/24:100","172.25.32.0/20:100" 替换为你本地需要跟Azure虚拟网络连接的相应网段
Add-VpnS2SInterface -Protocol IKEv2 -AuthenticationMethod PSKOnly -NumberOfTries 3 -ResponderAuthenticationMethod PSKOnly -Name 4.227.171.85 -Destination 4.227.171.85 -IPv4Subnet @("192.168.1.0/24:100","172.16.103.0/24:100","192.168.110.0/24:100","172.25.32.0/20:100") -SharedSecret "替换为你的共享密钥"
Set-VpnServerIPsecConfiguration -EncryptionType MaximumEncryption
# default value for Windows 2012 is 100MB, which is way too small. Increase it to 32GB.
Set-VpnServerIPsecConfiguration -SADataSizeForRenegotiationKilobytes 33553408
New-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\RemoteAccess\Parameters\IKEV2 -Name SkipConfigPayload -PropertyType DWord -Value 1
# Set S2S VPN connection to be persistent by editing the router.pbk file (required admin priveleges)
Set-PrivateProfileString $env:windir\System32\ras\router.pbk "4.227.171.85" "IdleDisconnectSeconds" "0"
Set-PrivateProfileString $env:windir\System32\ras\router.pbk "4.227.171.85" "RedialOnLinkFailure" "1"
# Restart the RRAS service
Restart-Service RemoteAccess
# Dial-in to Azure gateway
Connect-VpnS2SInterface -Name 4.227.171.85
将以上内容保存为.ps1的文件,然后用Powershell运行。运行完成之后,在路由和远程访问中就可以看到已创建相应的VPN连接,并连接到Azure虚拟网络
在Azure中的VPN连接,也可以看到状态变为已连接。
经过以上配置之后,Azure虚拟网络和本地网络之间的连接就建立好了。后续我们就可以在Azure中进行根域和子域额外域控制器的部署了。