次の方法で共有


VPN 環境での Teams イベントに関する特別な考慮事項

注:

この記事は、リモート ユーザー向けの 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 のみが使用されます。

商用クラウドの場合:

Government クラウド (GCC、GCC High、DoD) の場合:

次のスクリプトは、Teams イベント出席者トラフィックの名前空間と IP リストを含む PAC ファイルを生成できます。 -Instance パラメーターは、指定した環境を決定します。サポートされる値は [Worldwide、USGov、USGovGCCHigh、UsGovDoD] です。 必要に応じて、スクリプトには、 -Type パラメーターを使用して、Optimize ドメインと Allow ドメインを含めることもできます。

商用クラウドの PAC ファイル生成の例

商用クラウドの PAC ファイルを生成する方法の例を次に示します。

  1. スクリプトをGet-EventsPacFile.ps1としてローカル ハード ディスク 保存します。

  2. Verizon URL に移動し、結果の JSON をダウンロードします (コピーして cdnedgenodes.json という名前のファイルに貼り付けます)

  3. スクリプトと同じフォルダーにファイルを配置します。

  4. PowerShell ウィンドウで、次のコマンドを実行します。 [最適化] と [許可] ではなく [最適化] の名前のみを使用する場合は、-Type パラメーターを [最適化] に変更します。

    .\Get-EventsPacFile.ps1 -Instance Worldwide -CdnEdgeNodesFilePath .\cdnedgenodes.json -Type OptimizeAndAllow -FilePath .\Commercial.pac
    
  5. Commercial.pac ファイルには、Teams イベント出席者トラフィックのすべての名前空間と IP (IPv4/IPv6) が含まれます。

Microsoft 365 米国政府機関コミュニティ クラウド (GCC) の PAC ファイル生成の例

GCC 環境の PAC ファイルを生成する方法の例を次に示します。

  1. スクリプトをGet-EventsPacFile.ps1としてローカル ハード ディスク 保存します。

  2. PowerShell ウィンドウで、次のコマンドを実行します。 [最適化] と [許可] ではなく [最適化] の名前のみを使用する場合は、-Type パラメーターを [最適化] に変更します。

    .\Get-EventsPacFile.ps1 -Instance UsGov -Type OptimizeAndAllow -FilePath .\USGov.pac
    
  3. 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.FrontendInstance パラメーター値とキーに基づいて適切な 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 へのアクセスのみを許可する必要がありますか?

いいえ。サービスを動作させるためには、適切な環境に 必要な マーク付きエンドポイントすべてにアクセスすることが不可欠です。

このアドバイスはどのようなシナリオに対応しますか?

  1. Teams アプリ内で生成されるライブ イベント
  2. 外部デバイス (エンコーダー) によって生成されたイベント
  3. 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 ネットワーク接続の原則

Microsoft 365 ネットワーク接続の評価

Microsoft 365 ネットワークとパフォーマンスのチューニング

セキュリティ専門家と IT による、現代のユニークなリモート ワーク シナリオで最新のセキュリティ管理を実現するための代替的な方法 (Microsoft セキュリティ チーム ブログ)

Microsoft での VPN のパフォーマンス強化: Windows 10 の VPN プロファイルを使用して自動接続を許可する

VPN で実行: Microsoft がリモート ワークの従業員をどのように接続させているか

Microsoft グローバル ネットワーク