VPN 環境での Teams イベントに関する特別な考慮事項
注:
この記事は、リモート ユーザー向けの Microsoft 365 の最適化に対処する一連の記事の一部です。
- VPN 分割トンネリングを使用してリモート ユーザーの Microsoft 365 接続を最適化する方法の概要については、「 概要: Microsoft 365 の VPN 分割トンネリング」を参照してください。
- VPN 分割トンネリングの実装に関する詳細なガイダンスについては、「 Microsoft 365 の VPN 分割トンネリングの実装」を参照してください。
- VPN 分割トンネリング シナリオの詳細な一覧については、「 Microsoft 365 の一般的な VPN 分割トンネリング シナリオ」を参照してください。
- VPN 分割トンネリング環境での Teams メディア トラフィックのセキュリティ保護に関するガイダンスについては、「 VPN 分割トンネリングのための Teams メディア トラフィックのセキュリティ保護」を参照してください。
- 中国のユーザー向けの Microsoft 365 ワールドワイド テナント パフォーマンスの最適化の詳細については、「中国 ユーザー向けの Microsoft 365 パフォーマンスの最適化」を参照してください。
Microsoft Teamsライブ イベントの出席者トラフィック (Teams で生成されたライブ イベントへの出席者と、Teams または Viva Engage を介して外部エンコーダーを使用して生成されたものが含まれます) とMicrosoft Teamsタウン ホールの出席者トラフィックは、現在、サービスの URL/IP リストで既定と最適化に分類されています。 これらのエンドポイントは、他のサービスで使用される可能性がある CDN でホストされるため、 既定 として分類されます。 お客様は通常、この種類のトラフィックをプロキシし、このようなエンドポイントで通常実行されるセキュリティ要素を適用することを好みます。
多くのお客様は、VPN インフラストラクチャを介して大量の遅延に敏感なトラフィックをルーティングするのではなく、ローカル インターネット接続から Teams イベントの出席者を直接接続するために必要な URL/IP データを求めています。 通常、これは、専用の名前空間とエンドポイントの正確な IP 情報の両方なしでは実現できません。これは、 既定として分類された Microsoft 365 エンドポイントには提供されません。
強制トンネル VPN を使用しているクライアントからの Teams イベントの出席者トラフィックの直接接続を識別して有効にするには、次の手順を使用します。 このソリューションは、職場からのシナリオによりネットワーク トラフィックが多い場合に、出席者のトラフィックを VPN 経由でルーティングしないようにするためのオプションを顧客に提供することを目的としています。 可能であれば、検査プロキシを使用してサービスにアクセスすることをお勧めします。
注:
このソリューションを使用すると、提供された IP アドレスに解決されず、VPN を経由するサービス要素が存在する可能性がありますが、ストリーミング データのような大量のトラフィックの大部分が必要です。 ライブ イベント/Streamの範囲外には、このオフロードによってキャッチされるその他の要素が存在する可能性がありますが、直接移動する前に FQDN と IP の両方の一致を満たす必要があるため、これらを制限する必要があります。
重要
Teams イベントのパフォーマンス向上よりも VPN をバイパスするトラフィックを増やすリスクを検討することをお勧めします。
Teams イベントの強制トンネル例外を実装するには、次の手順を適用する必要があります。
1. 外部 DNS 解決を構成する
クライアントでは、次のホスト名を IP アドレスに解決できるように、外部の再帰 DNS 解決を使用できる必要があります。
商用クラウドの場合:
- *.media.azure.net
- *.bmc.cdn.office.net
- *.ml.cdn.office.net
*.media.azure.net と *.bmc.cdn.office.net は、Teams クライアントからスケジュールされた Teams で生成されるライブ イベント (クイック スタート イベントとサポートされているイベント RTMP-In) に使用されます。
*.media.azure.net、 *.bmc.cdn.office.net 、 *.ml.cdn.office.net は Teams タウン ホール イベントに使用されます。
注:
これらのエンドポイントの一部は、Teams イベント以外の他の要素と共有されます。 VPN ソリューションで技術的に可能な場合でも、これらの名前空間を使用して VPN オフロードを構成することはお勧めしません (たとえば、IP ではなく名前空間で動作する場合)。
Government クラウド (GCC、GCC High、DoD) の場合:
- *.cdn.ml.gcc.teams.microsoft.com
- *.cdn.ml.gov.teams.microsoft.us
- *.cdn.ml.dod.teams.microsoft.us
*.cdn.ml.gcc.teams.microsoft.com は、Microsoft 365 米国政府機関コミュニティ クラウド (GCC) の Teams タウン ホール イベントに使用されます。
*.cdn.ml.gov.teams.microsoft.us は、Microsoft 365 米国政府機関 GCC High Cloud (GCC High) の Teams タウン ホール イベントに使用されます。
*.cdn.ml.dod.teams.microsoft.us は、Microsoft 365 米国政府機関 DoD Cloud (DoD) の Teams タウン ホール イベントに使用されます。
FQDN は VPN 構成では必要ありません。これは、関連するトラフィックを直接送信するために、IP と組み合わせて PAC ファイルで使用するために純粋に使用されます。
2. PAC ファイルの変更を実装する (必要な場合)
VPN 上で PAC ファイルを使用してプロキシ経由でトラフィックをルーティングする組織の場合、これは通常 FQDN を使用して実現されます。 ただし、Teams イベントでは、指定されたホスト名には、Teams イベント トラフィック専用に使用されないコンテンツ配信ネットワーク (CDN) で使用される IP アドレスに解決されるワイルドカードが含まれています。 したがって、DNS ワイルドカードの一致に基づいて要求が直接送信される場合、この記事の 後半の手順 3 のダイレクト パス経由のルートがないため、これらのエンドポイントへのトラフィックはブロックされます。
これを解決するために、次の IP を提供し、 手順 1 で説明されているように PAC ファイルの例のホスト名と組み合わせて使用できます。 PAC ファイルは、URL が Teams イベントに使用されているものと一致するかどうかを確認し、その場合は、DNS 参照から返された IP がサービスに提供されているものと一致するかどうかを確認します。 両方が一致する場合、トラフィックは直接ルーティングされます。 いずれかの要素 (FQDN/IP) が一致しない場合、トラフィックはプロキシに送信されます。 その結果、構成により、IP と定義された名前空間の両方のスコープ外の IP に解決されるすべてのものが、通常どおり VPN 経由でプロキシを通過します。
CDN エンドポイントの現在の一覧を収集する
コマーシャル クラウドの場合、Teams イベントは複数の CDN プロバイダーを使用して顧客にストリーミングし、最適なカバレッジ、品質、回復性を提供します。 現在、Azure CDN from Microsoft と Azure CDN from Verizon の両方が使用されています。 時間の経過と同時に、リージョンの可用性などの状況により、これが変更される可能性があります。 この記事は、IP 範囲を最新の状態に保つためのソースです。 Microsoft 365 米国政府機関向けクラウド (GCC、GCC High、DoD) では、Microsoft からの Azure CDN のみが使用されます。
商用クラウドの場合:
Microsoft の Azure CDN の場合は、[ Azure IP 範囲とサービス タグのダウンロード ] から一覧をダウンロードできます。パブリック クラウドは公式の Microsoft ダウンロード センターから取得 できます。JSON 内のサービス タグ
AzureFrontdoor.Frontend
を具体的に確認する必要があります。 addressPrefixes には、IPv4/IPv6 サブネットが表示されます。 時間の経過とともに IP は変更される可能性がありますが、サービス タグの一覧は常に更新されてから使用されます。Azure CDN from Verizon (Edgecast) では、 Edge ノード - リスト ( [試してみる ] を選択) を使用して包括的な一覧を見つけることができます。 Premium_Verizon セクションを具体的に確認する必要があります。 この API には、すべての Edgecast IP (配信元と Anycast) が表示されることに注意してください。 現時点では、API が配信元と Anycast を区別するメカニズムはありません。
Government クラウド (GCC、GCC High、DoD) の場合:
- Microsoft の Azure CDN の場合は、公式の Microsoft ダウンロード センターから Azure IP 範囲とサービス タグ (米国政府機関向けクラウド) のダウンロードから 一覧をダウンロードできます。JSON 内のサービス タグ
AzureFrontdoor.Frontend
を具体的に確認する必要があります。 addressPrefixes には、IPv4/IPv6 サブネットが表示されます。 時間の経過とともに IP は変更される可能性がありますが、サービス タグの一覧は常に更新されてから使用されます。
次のスクリプトは、Teams イベント出席者トラフィックの名前空間と IP リストを含む PAC ファイルを生成できます。 -Instance パラメーターは、指定した環境を決定します。サポートされる値は [Worldwide、USGov、USGovGCCHigh、UsGovDoD] です。 必要に応じて、スクリプトには、 -Type パラメーターを使用して、Optimize ドメインと Allow ドメインを含めることもできます。
商用クラウドの PAC ファイル生成の例
商用クラウドの PAC ファイルを生成する方法の例を次に示します。
スクリプトをGet-EventsPacFile.ps1としてローカル ハード ディスク に 保存します。
Verizon URL に移動し、結果の JSON をダウンロードします (コピーして cdnedgenodes.json という名前のファイルに貼り付けます)
スクリプトと同じフォルダーにファイルを配置します。
PowerShell ウィンドウで、次のコマンドを実行します。 [最適化] と [許可] ではなく [最適化] の名前のみを使用する場合は、-Type パラメーターを [最適化] に変更します。
.\Get-EventsPacFile.ps1 -Instance Worldwide -CdnEdgeNodesFilePath .\cdnedgenodes.json -Type OptimizeAndAllow -FilePath .\Commercial.pac
Commercial.pac ファイルには、Teams イベント出席者トラフィックのすべての名前空間と IP (IPv4/IPv6) が含まれます。
Microsoft 365 米国政府機関コミュニティ クラウド (GCC) の PAC ファイル生成の例
GCC 環境の PAC ファイルを生成する方法の例を次に示します。
スクリプトをGet-EventsPacFile.ps1としてローカル ハード ディスク に 保存します。
PowerShell ウィンドウで、次のコマンドを実行します。 [最適化] と [許可] ではなく [最適化] の名前のみを使用する場合は、-Type パラメーターを [最適化] に変更します。
.\Get-EventsPacFile.ps1 -Instance UsGov -Type OptimizeAndAllow -FilePath .\USGov.pac
USGov.pac ファイルには、Teams タウン ホールの出席者トラフィック用の GCC クラウドに固有のすべての名前空間と IP (IPv4/IPv6) が含まれます。
Get-EventsPacFile.ps1
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.
<#PSScriptInfo
.VERSION 1.0.6
.AUTHOR Microsoft Corporation
.GUID 7f692977-e76c-4582-97d5-9989850a2529
.COMPANYNAME Microsoft
.COPYRIGHT
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License.
.TAGS PAC Microsoft Microsoft365 365
.LICENSEURI
.PROJECTURI http://aka.ms/ipurlws
.ICONURI
.EXTERNALMODULEDEPENDENCIES
.REQUIREDSCRIPTS
.EXTERNALSCRIPTDEPENDENCIES
.RELEASENOTES
#>
<#
.SYNOPSIS
Create a PAC file for Microsoft 365 prioritized connectivity for Teams Events (Live Events, Town hall)
.DESCRIPTION
This script will access updated information to create a PAC file to prioritize Microsoft 365 Urls for
better access to the service. This script will allow you to create different types of files depending
on how traffic needs to be prioritized.
.PARAMETER Instance
The service instance inside Microsoft 365. The default is Worldwide. To specify GCC use the USGov value.
.PARAMETER ClientRequestId
The client request id to connect to the web service to query up to date Urls.
.PARAMETER DirectProxySettings
The direct proxy settings for priority traffic.
.PARAMETER DefaultProxySettings
The default proxy settings for non priority traffic.
.PARAMETER Type
The type of prioritization to give. Valid values are Optimize and OptimizeAndAllow, which are 2 different modes of operation.
These values align to the categories defined in our Principles of Network Connectivity at https://aka.ms/pnc
.PARAMETER Lowercase
Flag this to include lowercase transformation into the PAC file for the host name matching.
.PARAMETER TenantName
The tenant name to replace wildcard Urls in the webservice.
.PARAMETER ServiceAreas
The service areas to filter endpoints by in the webservice.
.PARAMETER FilePath
The file to print the content to.
.EXAMPLE
Get-EventsPacFile.ps1 -Instance Worldwide -CdnEdgeNodesFilePath .\cdnedgenodes.json -Type OptimizeAndAllow -FilePath .\Commercial.pac
.EXAMPLE
Get-EventsPacFile.ps1 -Instance USGov -FilePath .\USGov.pac -Type OptimizeAndAllow
#>
#Requires -Version 2
[CmdletBinding(SupportsShouldProcess = $True)]
Param (
[Parameter()]
[ValidateSet('Worldwide', 'Germany', 'China', 'USGovDoD', 'USGovGCCHigh', 'USGov')]
[String] $Instance = "Worldwide",
[Parameter()]
[ValidateNotNullOrEmpty()]
[guid] $ClientRequestId = [Guid]::NewGuid(),
[Parameter()]
[ValidateNotNullOrEmpty()]
[String] $DirectProxySettings = 'DIRECT',
[Parameter()]
[ValidateNotNullOrEmpty()]
[String] $DefaultProxySettings = 'PROXY 10.10.10.10:8080',
[Parameter()]
[ValidateSet('OptimizeOnly','OptimizeAndAllow')]
[string]
$Type = 'OptimizeOnly',
[Parameter()]
[switch] $Lowercase,
[Parameter()]
[ValidateNotNullOrEmpty()]
[string] $TenantName,
[Parameter()]
[ValidateSet('Exchange', 'SharePoint', 'Common', 'Skype')]
[string[]] $ServiceAreas,
[Parameter()]
[ValidateNotNullOrEmpty()]
[string] $FilePath,
[Parameter()]
[ValidateNotNullOrEmpty()]
[string] $CdnEdgeNodesFilePath
)
##################################################################################################################
### Global constants
##################################################################################################################
$baseServiceUrl = if ($Instance -eq 'USGov') {
"https://endpoints.office.com/endpoints/Worldwide/?ClientRequestId=$ClientRequestId"
} else {
"https://endpoints.office.com/endpoints/$Instance/?ClientRequestId=$ClientRequestId"
}
$directProxyVarName = "direct"
$defaultProxyVarName = "proxyServer"
##################################################################################################################
### Functions to create PAC files
##################################################################################################################
function Get-PacString {
param(
[Parameter(ValueFromPipelineByPropertyName)]
[string[]]
$NonDirectOverrideFqdns,
[Parameter(ValueFromPipelineByPropertyName)]
[string[]]
$DirectFqdns
)
$PACSb = New-Object 'System.Text.StringBuilder'
$null = & {
$PACSb.AppendLine('// This PAC file will provide proxy config to Microsoft 365 services')
$PACSb.AppendLine('// using data from the public web service for all endpoints')
$PACSb.AppendLine('function FindProxyForURL(url, host)')
$PACSb.AppendLine('{')
$PACSb.Append(' var ').Append($directProxyVarName).Append(' = "').Append($DirectProxySettings).AppendLine('";')
$PACSb.Append(' var ').Append($defaultProxyVarName).Append(' = "').Append($DefaultProxySettings).AppendLine('";')
if ($Lowercase) {
$PACSb.AppendLine(' host = host.toLowerCase();')
}
$first = $true
foreach ($fqdn in $NonDirectOverrideFqdns) {
if ($first) {
$PACSb.AppendLine()
$PACSb.AppendLine(' // Force proxy for subdomains of bypassed hosts')
$PACSb.AppendLine()
$PACSb.Append(' if(')
}
else {
$PACSb.AppendLine().Append(' || ')
}
$first = $false
$PACSb.Append('shExpMatch(host, "').Append($fqdn).Append('")')
}
if (!$first) {
$PACSb.AppendLine(')')
$PACSb.AppendLine(' {')
$PACSb.Append(' return ').Append($directProxyVarName).AppendLine(';')
$PACSb.AppendLine(' }')
}
$first = $true
foreach ($fqdn in $DirectFqdns) {
if ($first) {
$PACSb.AppendLine()
$PACSb.AppendLine(' // Bypassed hosts')
$PACSb.AppendLine()
$PACSb.Append(' if(')
}
else {
$PACSb.AppendLine().Append(' || ')
}
$first = $false
$PACSb.Append('shExpMatch(host, "').Append($fqdn).Append('")')
}
if (!$first) {
$PACSb.AppendLine(')')
$PACSb.AppendLine(' {')
$PACSb.Append(' return ').Append($directProxyVarName).AppendLine(';')
$PACSb.AppendLine(' }')
}
if (!$ServiceAreas -or $ServiceAreas.Contains('Skype')) {
$EventsConfig = Get-TeamsEventsConfiguration
if ($EventsConfig.EventsAddressRanges.Count -gt 0) {
$EventsBlock = $EventsConfig | Get-TLEPacConfiguration
$PACSb.AppendLine()
$PACSb.AppendLine($EventsBlock)
}
}
$PACSb.Append(' return ').Append($defaultProxyVarName).AppendLine(';').Append('}')
}
return $PACSb.ToString()
}
##################################################################################################################
### Functions to get and filter endpoints
##################################################################################################################
function Get-TeamsEventsConfiguration {
param()
$IncludedHosts = switch ($Instance) {
'USGov' {
@('*.cdn.ml.gcc.teams.microsoft.com')
break
}
'USGovDoD' {
@('*.cdn.ml.dod.teams.microsoft.us')
break
}
'USGovGCCHigh' {
@('*.cdn.ml.gov.teams.microsoft.us')
break
}
default {
@('*.bmc.cdn.office.net', '*.ml.cdn.office.net', '*.media.azure.net')
break
}
}
$IncludedAddressRanges = & {
if (!$Instance.StartsWith('USGov') -and ![string]::IsNullOrEmpty($CdnEdgeNodesFilePath) -and (Test-Path -Path $CdnEdgeNodesFilePath)) {
Get-Content -Path $CdnEdgeNodesFilePath -Raw -ErrorAction SilentlyContinue | ConvertFrom-Json | Select-Object -ExpandProperty value |
Where-Object { $_.name -eq 'Premium_Verizon' } | Select-Object -First 1 -ExpandProperty properties |
Select-Object -ExpandProperty ipAddressGroups |
ForEach-Object {
$_.ipv4Addresses
$_.ipv6Addresses
} |
Where-Object { $_.BaseIpAddress } |
ForEach-Object { $_.BaseIpAddress + '/' + $_.prefixLength }
}
$ServiceTagsDownloadId = '56519'
if ($Instance.StartsWith('USGov')) {
$ServiceTagsDownloadId = '57063'
}
$AzureIPsUrl = Invoke-WebRequest -Uri "https://www.microsoft.com/en-us/download/confirmation.aspx?id=$ServiceTagsDownloadId" -UseBasicParsing -ErrorAction SilentlyContinue |
Select-Object -ExpandProperty Links | Select-Object -ExpandProperty href |
Where-Object { $_.EndsWith('.json') -and $_ -match 'ServiceTags' } | Select-Object -First 1
if ($AzureIPsUrl) {
Invoke-RestMethod -Uri $AzureIPsUrl -ErrorAction SilentlyContinue | Select-Object -ExpandProperty values |
Where-Object { $_.name -eq 'AzureFrontDoor.Frontend' } | Select-Object -First 1 -ExpandProperty properties |
Select-Object -ExpandProperty addressPrefixes
}
}
[PSCustomObject]@{
EventsHostNames = $IncludedHosts
EventsAddressRanges = $IncludedAddressRanges
}
}
function Get-TLEPacConfiguration {
[CmdletBinding()]
param (
[Parameter(ValueFromPipelineByPropertyName)]
[string[]]
$EventsHostNames,
[Parameter(ValueFromPipelineByPropertyName)]
[string[]]
$EventsAddressRanges
)
if ($EventsAddressRanges.Count -eq 0) {
return ''
}
$TLESb = New-Object 'System.Text.StringBuilder'
$Spaces = ' '
$null = $TLESb.Append($Spaces).AppendLine('// Bypass Teams Events attendee traffic')
$first = $true
$null = foreach ($hostName in $EventsHostNames) {
if ($first) {
$TLESb.AppendLine().Append($Spaces).Append('if(')
}
else {
$TLESb.AppendLine().Append($Spaces).Append(' || ')
}
$first = $false
$TLESb.Append('shExpMatch(host, "').Append($hostName).Append('")')
}
$null = $TLESb.AppendLine(')').Append($Spaces).AppendLine('{')
$Spaces = $Spaces + $Spaces
$null = $TLESb.Append($Spaces).AppendLine('var resolved_ip = dnsResolveEx(host);')
$first = $true
$null = foreach ($addressRange in $EventsAddressRanges) {
if ($first) {
$TLESb.AppendLine().Append($Spaces).Append('if(')
} else {
$TLESb.AppendLine().Append($Spaces).Append(' || ')
}
$first = $false
$TLESb.Append('isInNetEx(resolved_ip, "').Append($addressRange).Append('")')
}
if (!$first) {
$null = $TLESb.AppendLine(')').
Append($Spaces).AppendLine('{').
Append($Spaces).Append(' return ').Append($directProxyVarName).AppendLine(';').
Append($Spaces).AppendLine('}')
}
else {
$null = $TLESb.Append($Spaces).AppendLine('// no addresses found for service via script')
}
return $TLESb.AppendLine(' }').ToString()
}
function Get-Endpoints {
$url = $baseServiceUrl
if ($TenantName) {
$url += "&TenantName=$TenantName"
}
if ($ServiceAreas) {
$url += "&ServiceAreas=" + ($ServiceAreas -Join ",")
}
return Invoke-RestMethod -Uri $url
}
function Get-MapVarUrls {
Write-Verbose "Retrieving all endpoints for instance $Instance from web service."
$Endpoints = Get-Endpoints
$Include = if ($Type -eq 'OptimizeOnly') { @('Optimize') } else { @('Optimize', 'Allow') }
$directUrls = $endpoints |
Where-Object { $_.category -in $Include } |
Where-Object { $_.urls } |
ForEach-Object { $_.urls } |
Sort-Object -Unique
$MatchList = [Collections.Generic.Dictionary[string,Regex]]@{}
$directUrls |
Where-Object { $_.Contains('*') -or $_.Contains('?') } |
ForEach-Object { $MatchList[$_] = [Regex]::new('^{0}$' -f $_.Replace('.','\.').Replace('*','.*').Replace('?','.?'),[Text.RegularExpressions.RegexOptions]::IgnoreCase) }
$nonDirectPriorityUrls = $endpoints |
Where-Object { $_.category -notin $Include } |
Where-Object { $_.urls } |
ForEach-Object { $_.urls } |
Sort-Object -Unique |
Where-Object { [Linq.Enumerable]::Any($MatchList,[Func[System.Collections.Generic.KeyValuePair[string,Regex],bool]]{$args[0].Key -ne $_ -and $args[0].Value.IsMatch($_)}) }
return [PSCustomObject]@{
NonDirectOverrideFqdns = $nonDirectPriorityUrls
DirectFqdns = $directUrls
}
}
##################################################################################################################
### Main script
##################################################################################################################
$content = Get-MapVarUrls | Get-PacString
if ($FilePath) {
$content | Out-File -FilePath $FilePath -Encoding ascii
}
else {
$content
}
このスクリプトでは、AzureFrontDoor.Frontend の Instance パラメーター値とキーに基づいて適切な Azure CDN リストが自動的に解析されるため、手動で取得する必要はありません。
ここでも、FQDN のみを使用して VPN オフロードを実行することはお勧めしません。関数で FQDN と IP アドレスの 両方 を使用すると、このオフロードの使用を Teams イベントを含む限られたエンドポイント セットにスコープを設定するのに役立ちます。 関数の構造化方法により、クライアントによって直接一覧表示されるものと一致する FQDN に対して DNS 参照が実行されます。つまり、残りの名前空間の DNS 解決は変更されません。
3. 直接エグレスを有効にするように VPN のルーティングを構成する
最後の手順では、「 CDN エンドポイントの現在のリスト を VPN 構成に収集する」で説明されている Teams イベント IP の直接ルートを追加して、トラフィックが強制トンネル経由で VPN に送信されないようにします。 Microsoft 365 の最適化エンドポイントに対してこれを行う方法の詳細については、「Microsoft 365 の VPN 分割トンネリングの実装」の「VPN 分割トンネリングの実装」セクションを参照してください。 このプロセスは、このドキュメントに記載されている Teams イベント IP の場合とまったく同じです。
注:
VPN 構成には、 CDN エンドポイントの現在のリストの収集 からの IP (FQDN ではなく) のみを使用する必要があります。
FAQ
これにより、すべてのトラフィックがサービスに直接送信されますか?
いいえ。これにより、Teams イベント出席者の待機時間に依存するストリーミング トラフィックが直接送信されます。公開された IP に解決されない場合、他のトラフィックは引き続き VPN トンネルを使用します。
IPv6 アドレスを使用する必要がありますか?
いいえ。接続は、必要な場合にのみ IPv4 にすることができます。
これらの IP が Microsoft 365 URL/IP サービスで公開されないのはなぜですか?
Microsoft では、お客様が情報を確実に使用してエンドポイント カテゴリに基づいて安全で最適なルーティングを実装できるように、サービス内の情報の形式と種類を厳密に制御しています。
[既定のエンドポイント] カテゴリには、さまざまな理由で IP 情報が提供されていません (既定のエンドポイントは Microsoft の制御の外にある可能性があります。変更頻度が高すぎる場合や、他の要素と共有されるブロック内にある可能性があります)。 このため、既定のエンドポイントは、通常の Web トラフィックと同様に、FQDN 経由で検査プロキシに送信されるように設計されています。
この場合、上記のエンドポイントは、Teams イベント以外の Microsoft 以外の制御された要素によって使用される可能性がある CDN であるため、トラフィックダイレクトを送信すると、これらの IP に解決される他の何かがクライアントから直接送信されることも意味します。 現在のグローバル危機の固有の性質と、お客様の短期的なニーズを満たすために、Microsoft は、お客様が必要に応じて使用できるように上記の情報を提供しています。
Microsoft では、今後、Teams イベント エンドポイントを許可/最適化エンドポイント カテゴリに含めることができるように、Teams イベント エンドポイントの再構成に取り組んでいます。
これらの IP へのアクセスのみを許可する必要がありますか?
いいえ。サービスを動作させるためには、適切な環境に 必要な マーク付きエンドポイントすべてにアクセスすることが不可欠です。
- GCC を含む世界中: 世界中のエンドポイント
- Microsoft 365 米国政府機関 GCC High: GCC High のエンドポイント
- Microsoft 365 米国政府 DoD: DoD のエンドポイント
このアドバイスはどのようなシナリオに対応しますか?
- Teams アプリ内で生成されるライブ イベント
- 外部デバイス (エンコーダー) によって生成されたイベント
- Teams タウン ホール
このアドバイスは発表者のトラフィックに対応していますか?
それはしません。上記のアドバイスは、純粋にイベントに出席する人のためのものである。 Teams 内から発表すると、発表者のトラフィックが URL/IP サービス行 11 に一覧表示され、Microsoft 365 の VPN 分割トンネリングの実装に関する記事の「VPN 分割トンネリングの実装」セクションで説明されている詳細な VPN オフロード アドバイスが記載された、マークされた UDP エンドポイントの最適化に流れる発表者のトラフィックが表示されます。
関連記事
概要: Microsoft 365 の VPN 分割トンネリング
Microsoft 365 の VPN 分割トンネリングの実装
Microsoft 365 の一般的な VPN 分割トンネリング シナリオ
VPN 分割トンネリングのための Teams メディア トラフィックのセキュリティ保護
中国ユーザー向けの Microsoft 365 パフォーマンスの最適化
Microsoft 365 ネットワークとパフォーマンスのチューニング
セキュリティ専門家と IT による、現代のユニークなリモート ワーク シナリオで最新のセキュリティ管理を実現するための代替的な方法 (Microsoft セキュリティ チーム ブログ)
Microsoft での VPN のパフォーマンス強化: Windows 10 の VPN プロファイルを使用して自動接続を許可する