Microsoft Entra ID 中的 IPv6 支援

注意事項

本文是否有幫助? 您的輸入對我們很重要。 請使用此頁面上的 [ 意見反應 ] 按鈕,讓我們知道本文如何為您運作,或我們如何加以改善。

我們很高興能將 IPv6 支援帶入 Microsoft Entra ID,以增加行動力來支持客戶,並協助減少快速耗用且昂貴的 IPv4 地址費用。 如需這項變更如何影響 Microsoft 365 的詳細資訊,請參閱 Microsoft 365 服務中的 IPv6 支援

如果您組織的網路目前不支援 IPv6,您可以放心地忽略這項資訊,直到他們這麼做為止。

變更了什麼?

我們的服務端點 URL 現在會解析為同時傳回 IPv4 和 IPv6 位址。 如果用戶端平臺或網路支援 IPv6,則會嘗試使用 IPv6 進行連線,前提是位於防火牆或 Web Proxy 等 (之間的網路躍點) 也支援 IPv6。 對於不支援 IPv6 的環境,用戶端應用程式會繼續透過 IPv4 連線到 Microsoft Entra ID。

下列功能也會支援 IPv6 位址:

  • 具名位置
  • 條件式存取原則
  • 身分識別保護
  • 登入記錄

Microsoft Entra ID 何時支援 IPv6?

我們將在 2023 年 4 月開始為 Microsoft Entra ID 引進 IPv6 支援。

我們知道 IPv6 支援是某些組織的重大變更。 我們現在要發佈這項資訊,讓客戶可以制定計劃來確保整備程度。

我的組織必須做什麼?

如果您有代表網路的公用 IPv6 位址,請儘快採取下列各節所述的動作。

如果客戶未使用這些 IPv6 位址更新其具名位置,將會封鎖其使用者。

顯示使用者因為網路位置而封鎖登入的螢幕快照。

要採取的動作

具名位置

具名位置會在許多功能之間共用,例如條件式存取、Identity Protection 和 B2C。 客戶應與其網路管理員和因特網服務提供者 (ISP) 合作,以識別其公開的 IPv6 位址。 客戶接著應該使用此清單來 建立或更新具名位置,以包含其識別的 IPv6 位址

條件式存取

設定條件式存取原則時,組織可以選擇包含或排除位置作為條件。 這些具名位置可能包括公用 IPv4 或 IPv6 位址、國家或地區,或未對應至特定國家或地區的未知區域。

  • 如果您將 IPv6 範圍新增至現有具名位置,用於現有的條件式存取原則,則不需要進行任何變更。
  • 如果您為組織的 IPv6 範圍建立新的具名位置,您必須使用這些新位置更新相關的條件式存取原則。

雲端 Proxy 和 VPN

當雲端 Proxy 就緒時,需要 Microsoft Entra 混合式聯結或抱怨裝置的原則可以更容易管理。 將雲端託管 Proxy 或 VPN 解決方案所使用的 IP 位址清單保持在最新狀態幾乎不可能。

Microsoft Entra 每個使用者的多重要素驗證

如果您是使用每位使用者多重要素驗證的客戶,是否已新增 IPv4 位址來代表使用 信任 IP 位址 而非具名位置的內部部署信任網路? 如果您有,您可能會看到透過已啟用內部部署 IPv6 之輸出點起始之要求的多重要素驗證提示。

除非您的 Microsoft Entra ID 授權不包含條件式存取,而且您不想要使用安全性預設值,否則不建議使用個別使用者多重要素驗證。

輸出流量限制

如果您的組織將輸出網路流量限制為特定IP範圍,您必須更新這些位址以包含IPv6端點。 系統管理員可以在下列文章中找到這些IP範圍:

針對為 Microsoft Entra ID 指定的IP範圍,請確定您允許 Proxy或防火牆中的輸出存取。

裝置設定

根據預設,Windows 和大部分其他操作系統 (OS) 平臺都支援 IPv6 和 IPv4 流量。 對標準 IPv6 組態所做的變更可能會導致非預期的結果。 如需詳細資訊,請參閱 在 Windows 中為進階使用者設定 IPv6 的指引

服務端點

在 Microsoft Entra ID 中實作 IPv6 支援不會影響 Azure 虛擬網路 服務端點。 服務端點仍然不支援 IPv6 流量。 如需詳細資訊,請參閱服務端點 虛擬網路 限制

透過 IPv6 測試 Microsoft Entra 驗證

您可以先透過 IPv6 測試 Microsoft Entra 驗證,然後再使用下列程式將其啟用到全球。 這些程式有助於驗證 IPv6 範圍設定。 建議的方法是使用名稱解析原則數據表 (NRPT) 規則推送至已加入 Microsoft Entra 的 Windows 裝置。 在 Windows Server 中,NRPT 可讓您實作覆寫 DNS 解析路徑的全域或本機原則。 透過這項功能,您可以將各種完整功能變數名稱的 DNS 重新導向 (FQDN) 設定為具有 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 規則 - 公用雲端

  1. 以系統管理員身分開啟 PowerShell 控制台 (以滑鼠右鍵按兩下 PowerShell 圖示,然後選取 [ 以系統管理員身 分執行]) 。

  2. 執行下列命令來新增 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
    
  3. 執行 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 
    
  4. 如果您要移除 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 規則。

  1. 以系統管理員身分開啟 PowerShell 控制台,方法是以滑鼠右鍵按兩下 PowerShell 圖示,然後選取 [ 以系統管理員身分執行]

  2. 執行下列命令來新增 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 應用程式

  1. 登入 Intune 入口網站

  2. 取 [所有應用程式>],然後選取 [ + 新增 ] 以建立新的 Win32 應用程式。

  3. 在 [ 應用程式類型 ] 下拉式清單中,選 取 [Windows 應用程式 (Win32) ],然後選擇 [ 選取]

  4. 在 [ 應用程式資訊] 頁面上,按兩下 [選取應用程式套件檔案 ] 以選取您先前建立 的 .intunewin 檔案。 選取 [確定 ] 繼續。

  5. 返回 [ 應用程式資訊 ] 頁面,然後輸入應用程式的描述性 名稱描述發行者 。 其他欄位是選擇性的。 選取 [下一步] 繼續。

  6. 在 [ 程式] 頁面上,輸入下列資訊,然後選取 [ 下一步]

    • 安裝指令 字串:
      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
  7. 在 [需求] 頁面中,選取 [操作系統架構],並將 [最小操作系統] 設定為 [Windows 10 1607]。 選取 [下一步] 繼續。

  8. 在 [偵測] 頁面上,從 [規則格式] 下拉式清單中選取 [使用自定義偵測腳本]。 選取 [腳本檔案 ] 方塊旁邊的瀏覽按鈕,以選擇偵測腳本。 將其餘欄位保留為其預設值。 選取 [下一步] 繼續。

  9. 在 [相依性] 頁面上選取 [下一步],以繼續而不進行任何變更。

  10. 在 [取代 (預覽) ] 頁面上選取 [下一步],以在沒有任何變更的情況下繼續。

  11. 在 [ 指派] 頁面上,根據您的需求建立指派,然後選取 [ 下一步 ] 繼續。

  12. 最後一次在 [ 檢閱 + 建立 ] 頁面上檢閱資訊。 完成驗證之後,請選取 [建立 ] 以建立應用程式。

在登入記錄中尋找 IPv6 位址

使用下列一或多個方法,比較 IPv6 位址清單與您預期的位址。 請考慮將這些 IPv6 位址新增至您的具名位置,並在適當時將某些地址標示為受信任。 您至少需要指派 報告讀取者角色 ,才能讀取登入記錄。

Azure 入口網站

  1. 報表讀取者、安全性讀取者、全域讀取者、安全性系統管理員或其他具有許可權的角色登入 Azure 入口網站。
  2. 流覽至 Microsoft Entra ID> 登入記錄
  3. 取 [+ 新增篩選 IP>位址] ,然後選取 [ 套用]
  4. 在 [ 依 IP 篩選位址 ] 方塊中,插入冒號 () 。
  5. 選擇性地將此記錄專案清單下載至 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 community 支援。 您也可以將產品意見反應提交給 Azure 意應見反社群