Microsoft Entra ID 中的 IPv6 支持
注意
本文有帮助吗? 你的输入对我们很重要。 请使用此页上的 “反馈 ”按钮告诉我们本文为你工作得有多好,或者我们如何改进它。
我们很高兴地将 IPv6 支持引入Microsoft Entra ID,以支持移动性更高的客户,并帮助减少快速消耗、昂贵的 IPv4 地址上的支出。 有关此更改如何影响 Microsoft 365 的详细信息,请参阅 Microsoft 365 服务中的 IPv6 支持。
如果组织的网络目前不支持 IPv6,则可以安全地忽略此信息,直到它们这样做。
有什么变化?
服务终结点 URL 现在解析为同时返回 IPv4 和 IPv6 地址。 如果客户端平台或网络支持 IPv6,则主要使用 IPv6 尝试连接,前提是两者之间的网络跃点(如防火墙或 Web 代理)也支持 IPv6。 对于不支持 IPv6 的环境,客户端应用程序将继续通过 IPv4 连接到 Microsoft Entra ID。
以下功能还将支持 IPv6 地址:
- 命名位置
- 条件访问策略
- 标识保护
- 登录日志
Microsoft Entra ID 中何时支持 IPv6?
我们将在 2023 年 4 月开始引入对 Microsoft Entra ID 的 IPv6 支持。
我们知道,IPv6 支持对于某些组织来说是一个重大变化。 我们现在正在发布此信息,以便客户能够制定计划以确保就绪。
我的组织必须做什么?
如果具有表示网络的公共 IPv6 地址,请尽快执行以下部分中介绍的操作。
如果客户未使用这些 IPv6 地址更新其命名位置,将阻止其用户。
要执行的操作
命名位置
命名位置在许多功能之间共享,例如条件访问、标识保护和 B2C。 客户应与其网络管理员和 Internet 服务提供商(ISP)合作,以识别其面向公众的 IPv6 地址。 然后,客户应使用此列表 创建或更新命名位置,以包括其标识的 IPv6 地址。
条件访问
配置条件访问策略时,组织可以选择将位置作为条件包含或排除。 这些命名位置可能包括公共 IPv4 或 IPv6 地址、国家或地区或不映射到特定国家或地区的未知区域。
- 如果将 IPv6 范围添加到现有命名位置(用于现有条件访问策略中),则无需更改。
- 如果为组织的 IPv6 范围创建新的命名位置,则必须使用这些新位置更新相关的条件访问策略。
云代理和 VPN
云代理准备就绪后,需要 Microsoft Entra 混合加入或投诉设备 的策略更易于管理。 对于云托管的代理或 VPN 解决方案的 IP 地址列表,要随时保持最新状态几乎是不可能的。
Microsoft每用户多重身份验证的 Entra
如果你是使用每用户多重身份验证的客户,你是否添加了表示使用 受信任 IP 地址而不是命名位置的本地受信任网络的 IPv4 地址 ? 如果有,可能会看到多重身份验证提示,提示通过启用了本地 IPv6 的出口点启动的请求。
不建议使用每用户多重身份验证,除非Microsoft Entra ID 许可证不包含条件访问,并且不想使用安全默认值。
出站流量限制
如果组织将出站网络流量限制到特定 IP 范围,则必须更新这些地址以包括 IPv6 终结点。 管理员可以在以下文章中找到这些 IP 范围:
对于为 Microsoft Entra ID 指定的 IP 范围,请确保允许在代理或防火墙中进行出站访问。
设备配置
默认情况下,Windows 和大多数其他操作系统(OS)平台都支持 IPv6 和 IPv4 流量。 对标准 IPv6 配置的更改可能会导致意外后果。 有关详细信息,请参阅适用于高级用户的在 Windows 中配置 IPv6 指南。
服务终结点
Microsoft Entra ID 中 IPv6 支持的实现不会影响 Azure 虚拟网络 服务终结点。 服务终结点仍不支持 IPv6 流量。 有关详细信息,请参阅虚拟网络服务终结点的限制。
通过 IPv6 测试Microsoft Entra 身份验证
可以通过 IPv6 测试 Microsoft Entra 身份验证,然后才能使用以下过程在全球启用它。 这些过程有助于验证 IPv6 范围配置。 建议的方法是使用 推送到已加入 Microsoft Entra 的 Windows 设备的名称解析策略表(NRPT) 规则。 在 Windows Server 中,NRPT 允许你实现替代 DNS 解析路径的全局或本地策略。 使用此功能,可以将各种完全限定的域名(FQDN)的 DNS 重定向到配置为将 IPv6 DNS 条目配置为Microsoft Entra 登录的特殊 DNS 服务器。 使用 PowerShell 脚本启用和禁用 NRPT 规则非常简单。 可以使用 Microsoft Intune 将此功能推送到客户端。
注意
Microsoft仅为测试目的提供这些说明。 必须在 2023 年 5 月前删除以下配置,以确保客户端正在使用生产 DNS 服务器。 以下过程中的 DNS 服务器可能在 2023 年 5 月之后解除授权。
建议使用 Resolve-DnsName cmdlet 来验证 NRPT 规则。 如果使用 nslookup 命令,则鉴于这些工具之间存在的差异,结果可能有所不同。
请确保在客户端设备和用于 NRPT 规则的 DNS 服务器之间在 TCP 和 UDP 端口 53 上打开网络连接。
手动配置客户端 NRPT 规则 - 公有云
以管理员身份打开 PowerShell 控制台(右键单击 PowerShell 图标并选择“ 以管理员身份运行”)。
通过运行以下命令添加 NRPT 规则:
$DnsServers = ( "ns1-37.azure-dns.com.", "ns2-37.azure-dns.net.", "ns3-37.azure-dns.org.", "ns4-37.azure-dns.info." ) $DnsServerIPs = $DnsServers | Foreach-Object { (Resolve-DnsName $_).IPAddress | Select-Object -Unique } $params = @{ Namespace = "login.microsoftonline.com" NameServers = $DnsServerIPs DisplayName = "AZURE-AD-NRPT" } Add-DnsClientNrptRule @params
通过运行 Resolve-DnsName cmdlet 验证客户端是否获取 IPv6 响应
login.microsoftonline.com
。 命令输出应类似于以下文本:PS C:\users\username> Resolve-DnsName login.microsoftonline.com Name Type TTL Section IPAddress ---- ---- --- ------- --------- login.microsoftonline.com AAAA 300 Answer 2603:1037:1:c8::8 login.microsoftonline.com AAAA 300 Answer 2603:1036:3000:d8::5 login.microsoftonline.com AAAA 300 Answer 2603:1036:3000:d0::5 login.microsoftonline.com AAAA 300 Answer 2603:1036:3000:d8::4 login.microsoftonline.com AAAA 300 Answer 2603:1037:1:c8::9 login.microsoftonline.com AAAA 300 Answer 2603:1037:1:c8::a login.microsoftonline.com AAAA 300 Answer 2603:1036:3000:d8::2 login.microsoftonline.com AAAA 300 Answer 2603:1036:3000:d0::7 login.microsoftonline.com A 300 Answer 20.190.151.7 login.microsoftonline.com A 300 Answer 20.190.151.67 login.microsoftonline.com A 300 Answer 20.190.151.69 login.microsoftonline.com A 300 Answer 20.190.151.68 login.microsoftonline.com A 300 Answer 20.190.151.132 login.microsoftonline.com A 300 Answer 20.190.151.70 login.microsoftonline.com A 300 Answer 20.190.151.9 login.microsoftonline.com A 300 Answer 20.190.151.133
如果要删除 NRPT 规则,请运行以下 PowerShell 脚本:
Get-DnsClientNrptRule | Where-Object { $_.DisplayName -match "AZURE-AD-NRPT" -or $_.Namespace -match "login.microsoftonline.com" } | Remove-DnsClientNrptRule -Force
手动配置客户端 NRPT 规则 - US Gov 云
与公有云的脚本类似,以下脚本为 US Gov 登录终结点 login.microsfotonline.us
创建 NRPT 规则。
右键单击 PowerShell 图标并选择“ 以管理员身份运行”,以管理员身份打开 PowerShell 控制台。
通过运行以下命令添加 NRPT 规则:
$DnsServers = ( "ns1-35.azure-dns.com.", "ns2-35.azure-dns.net.", "ns3-35.azure-dns.org.", "ns4-35.azure-dns.info." ) $DnsServerIPs = $DnsServers | Foreach-Object { (Resolve-DnsName $_).IPAddress | Select-Object -Unique } $params = @{ Namespace = "login.microsoftonline.us" NameServers = $DnsServerIPs DisplayName = "AZURE-AD-NRPT-USGOV" } Add-DnsClientNrptRule @params
使用 Intune 部署 NRPT 规则
若要使用 Intune 将 NRPT 规则部署到多台计算机,请创建 Win32 应用并将其分配给一个或多个设备。
步骤 1:创建脚本
创建一个文件夹,然后将以下安装和回滚脚本(InstallScript.ps1 和 RollbackScript.ps1)保存在其中,以便你可以创建 .intunewin 文件以便在部署中使用。
InstallScript.ps1
# Add Azure AD NRPT rule.
$DnsServers = (
"ns1-37.azure-dns.com.",
"ns2-37.azure-dns.net.",
"ns3-37.azure-dns.org.",
"ns4-37.azure-dns.info."
)
$DnsServerIPs = $DnsServers | Foreach-Object {
(Resolve-DnsName $_).IPAddress | Select-Object -Unique
}
# List the rules.
$existingRules = Get-DnsClientNrptRule | Where-Object {
$_.DisplayName -match "AZURE-AD-NRPT" -or $_.Namespace -match "login.microsoftonline.com"
}
if ($existingRules) {
Write-Output ("Azure AD NRPT rule exists: {0}" -F $existingRules)
}
else {
Write-Output "Adding Azure AD NRPT DNS rule for login.microsoftonline.com ..."
$params = @{
Namespace = "login.microsoftonline.com"
NameServers = $DnsServerIPs
DisplayName = "AZURE-AD-NRPT"
}
Add-DnsClientNrptRule @params
}
RollbackScript.ps1
# Remove the Azure AD NRPT rule.
# List the rules.
$existingRules = Get-DnsClientNrptRule | Where-Object {
$_.DisplayName -match "AZURE-AD-NRPT" -or $_.Namespace -match "login.microsoftonline.com"
}
if ($existingRules) {
Write-Output "Removing Azure AD NRPT DNS rule for login.microsoftonline.com ..."
$existingRules | Format-Table
$existingRules | Remove-DnsClientNrptRule -Force
}
else {
Write-Output "Azure AD NRPT rule does not exist. Device was successfully remediated."
}
DetectionScript.ps1
将以下脚本(DetectionScript.ps1)保存到另一个位置。 然后,可以在 Intune 中创建检测脚本时引用应用程序中的检测脚本。
# Add Azure AD NRPT rule.
$DnsServers = (
"ns1-37.azure-dns.com.",
"ns2-37.azure-dns.net.",
"ns3-37.azure-dns.org.",
"ns4-37.azure-dns.info."
)
$DnsServerIPs = $DnsServers | Foreach-Object {
(Resolve-DnsName $_).IPAddress | Select-Object -Unique
}
# List the rules.
$existingRules = Get-DnsClientNrptRule | Where-Object {
$_.DisplayName -match "AZURE-AD-NRPT" -or $_.Namespace -match "login.microsoftonline.com"
}
if ($existingRules) {
Write-Output 'Compliant'
}
步骤 2:将脚本打包为 .intunewin 文件
请参阅 准备 Win32 应用内容,以便从 之前保存的文件夹和脚本创建 .intunewin 文件。
步骤 3:创建 Win32 应用程序
以下说明演示如何创建必要的 Win32 应用程序。 有关详细信息,请参阅 Microsoft Intune 中的“添加”、“分配和监视 Win32”应用。
登录到 Intune 门户。
选择“应用>所有应用”,然后选择“+ 添加”以创建新的 Win32 应用。
在 “应用类型 ”下拉列表中,选择 “Windows 应用”(Win32),然后选择“ 选择”。
在 “应用信息 ”页上,单击“ 选择应用包文件 ”以选择 之前创建的 .intunewin 文件。 选择确定以继续。
返回到 “应用信息 ”页,然后输入应用程序的描述性 名称、 说明和 发布者 。 其他字段是可选的。 选择“下一步”继续。
在 “程序 ”页上,输入以下信息,然后选择“ 下一步”。
- 安装命令 字符串:
powershell.exe -executionpolicy bypass -NoLogo -NoProfile -NonInteractive -WindowStyle Hidden -file "InstallScript.ps1"
- 卸载命令 字符串:
powershell.exe -executionpolicy bypass -NoLogo -NoProfile -NonInteractive -WindowStyle Hidden -file "RollbackScript.ps1"
- 安装行为:
System
- 安装命令 字符串:
在“要求”页中,选择操作系统体系结构并将最低操作系统设置为 Windows 10 1607。 选择“下一步”继续。
在“检测”页上,从“规则格式”下拉列表中选择“使用自定义检测脚本”。 选择“脚本文件”框旁边的浏览按钮以选择检测脚本。 将其余字段保留为默认值。 选择“下一步”继续。
在“依赖项”页上选择“下一步”以继续不进行任何更改。
在“取代(预览)”页面上选择“下一步”以继续不进行任何更改。
在“分配”页上,根据要求创建作业,然后选择“下一步”继续。
在 “查看 + 创建 ”页面上最后一次查看信息。 完成验证后,选择“创建”以创建应用程序。
在登录日志中查找 IPv6 地址
使用以下一个或多个方法,将 IPv6 地址列表与预期的地址进行比较。 请考虑将这些 IPv6 地址添加到命名位置,并在适当情况下将某些地址标记为受信任。 至少需要分配的 报表读取者角色 才能读取登录日志。
Azure 门户
- 以具有权限的报表读取者、安全读取者、全局读取者、安全管理员或其他角色登录到Azure 门户。
- 浏览到Microsoft Entra ID>登录日志。
- 选择“+ 添加筛选器>IP 地址”,然后选择“应用”。
- 在 “按 IP 地址 筛选”框中,插入冒号(:)。
- (可选)将此日志条目列表下载到 JSON 或 CSV 格式以供进一步处理。
Log Analytics
如果组织使用 Log Analytics,则可以使用以下查询查询日志中的 IPv6 地址。
union SigninLogs, AADNonInteractiveUserSignInLogs
| where IPAddress has ":"
| summarize RequestCount = count() by IPAddress, AppDisplayName, NetworkLocationDetails
| sort by RequestCount
PowerShell
组织可以使用以下 PowerShell 脚本在 Microsoft Graph PowerShell 中查询 Microsoft Entra 登录日志。 该脚本提供 IPv6 地址列表以及应用程序及其显示次数。
$tId = "TENANT ID" # Add the Azure Active Directory tenant ID.
$agoDays = 2 # Will filter the log for $agoDays from the current date and time.
$startDate = (Get-Date).AddDays(-($agoDays)).ToString('yyyy-MM-dd') # Get filter start date.
$pathForExport = "./" # The path to the local filesystem for export of the CSV file.
Connect-MgGraph -Scopes "AuditLog.Read.All" -TenantId $tId
# Get both interactive and non-interactive IPv6 sign-ins.
$signInsInteractive = Get-MgAuditLogSignIn -Filter "contains(IPAddress, ':')" -All
$signInsNonInteractive = Get-MgAuditLogSignIn -Filter "contains(IPAddress, ':')" -All
# Summarize IPv6 & app display name count.
$signInsInteractive |
Group-Object IPaddress, AppDisplayName |
Select-Object @{Name = 'IPaddress'; Expression = {$_.Group[0].IPaddress}},
@{Name = 'AppDisplayName'; Expression = {$_.Group[0].AppDisplayName}},
Count |
Sort-Object -Property Count –Descending |
Export-Csv -Path ($pathForExport + "Summary_Interactive_IPv6_$tId.csv") -NoTypeInformation
$signInsNonInteractive |
Group-Object IPaddress, AppDisplayName |
Select-Object @{Name = 'IPaddress'; Expression = {$_.Group[0].IPaddress}},
@{Name = 'AppDisplayName'; Expression = {$_.Group[0].AppDisplayName}},
Count |
Sort-Object -Property Count –Descending |
Export-Csv -Path ($pathForExport + "Summary_NonInteractive_IPv6_$tId.csv") -NoTypeInformation
后续步骤
我们将更新本文。 下面是一个简短的链接,可用于返回更新和新信息: https://aka.ms/azureadipv6
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区。