Besondere Überlegungen zu Teams-Ereignissen in VPN-Umgebungen
Hinweis
Dieser Artikel ist Teil einer Reihe von Artikeln zur Microsoft 365-Optimierung für Remotebenutzer.
- Eine Übersicht über die Verwendung des geteilten VPN-Tunnelings zur Optimierung der Microsoft 365-Konnektivität für Remotebenutzer finden Sie unter Übersicht: VPN Split Tunneling für Microsoft 365.
- Eine ausführliche Anleitung zum Implementieren von geteilten VPN-Tunneln finden Sie unter Implementieren des geteilten VPN-Tunnelings für Microsoft 365.
- Eine ausführliche Liste der Szenarien für geteilte VPN-Tunnel finden Sie unter Häufige Szenarien für geteilte VPN-Tunnel für Microsoft 365.
- Eine Anleitung zum Schützen des Teams-Mediendatenverkehrs in VPN Split Tunneling-Umgebungen finden Sie unter Schützen von Teams-Mediendatenverkehr für geteiltes VPN-Tunneling.
- Informationen zum Optimieren der leistung von Microsoft 365 weltweit für Benutzer in China finden Sie unter Microsoft 365-Leistungsoptimierung für China-Benutzer.
Microsoft Teams Live-Ereignis-Teilnehmerdatenverkehr (dies schließt Teilnehmer an von Teams produzierten Liveereignissen und solche ein, die mit einem externen Encoder über Teams oder Viva Engage erstellt wurden) und der Microsoft Teams Town Hall-Teilnehmerverkehr wird derzeit in der URL/IP-Liste für den Dienst als Standard oder Optimierung kategorisiert. Diese Endpunkte werden als Standard kategorisiert, da sie auf CDNs gehostet werden, die auch von anderen Diensten verwendet werden können. Kunden ziehen es im Allgemeinen vor, diese Art von Datenverkehr zu proxyn und alle Sicherheitselemente anzuwenden, die normalerweise auf Endpunkten wie diesen ausgeführt werden.
Viele Kunden haben nach URL/IP-Daten gefragt, die erforderlich sind, um ihre Teilnehmer an Teams-Ereignissen direkt über ihre lokale Internetverbindung zu verbinden, anstatt den datenverkehrsintensiven und latenzempfindlichen Datenverkehr über die VPN-Infrastruktur weiterzuleiten. In der Regel ist dies nicht ohne dedizierte Namespaces und genaue IP-Informationen für die Endpunkte möglich, die nicht für Microsoft 365-Endpunkte bereitgestellt werden, die als Standard kategorisiert sind.
Verwenden Sie die folgenden Schritte, um die direkte Konnektivität für Teilnehmerdatenverkehr für Teams-Ereignisse von Clients zu identifizieren und zu aktivieren, die ein erzwungenes Tunnel-VPN verwenden. Diese Lösung soll Kunden die Möglichkeit bieten, das Routing von Teilnehmerdatenverkehr über VPN zu vermeiden, während aufgrund von Home-Szenarien ein hoher Netzwerkdatenverkehr vorhanden ist. Wenn möglich, wird empfohlen, über einen Überprüfungsproxy auf den Dienst zuzugreifen.
Hinweis
Bei Verwendung dieser Lösung gibt es möglicherweise Dienstelemente, die nicht in die bereitgestellten IP-Adressen aufgelöst werden und somit das VPN durchlaufen, aber der Großteil des Datenverkehrs mit hohem Volumen wie Streamingdaten sollte dies tun. Möglicherweise gibt es andere Elemente außerhalb des Bereichs von Liveereignissen/Stream die von dieser Abladung abgefangen werden, aber diese sollten eingeschränkt sein, da sie sowohl den FQDN als auch die IP-Übereinstimmung erfüllen müssen, bevor sie direkt gehen.
Wichtig
Es wird empfohlen, das Risiko des Sendens von mehr Datenverkehr, der das VPN umgeht, gegenüber dem Leistungsgewinn für Teams-Ereignisse abzuwägen.
Um die Tunnelerzwingungs-Ausnahme für Teams-Ereignisse zu implementieren, sollten die folgenden Schritte angewendet werden:
1. Konfigurieren der externen DNS-Auflösung
Clients benötigen eine externe, rekursive DNS-Auflösung, damit die folgenden Hostnamen in IP-Adressen aufgelöst werden können.
Für die kommerzielle Cloud:
- *.media.azure.net
- *.bmc.cdn.office.net
- *.ml.cdn.office.net
*.media.azure.net und *.bmc.cdn.office.net werden für von Teams erstellte Liveereignisse (Schnellstartereignisse und RTMP-In unterstützte Ereignisse) verwendet, die vom Teams-Client geplant werden.
*.media.azure.net, *.bmc.cdn.office.net und *.ml.cdn.office.net werden für Teams Town Hall-Veranstaltungen verwendet.
Hinweis
Einige dieser Endpunkte werden für andere Elemente außerhalb von Teams-Ereignissen freigegeben. Es wird nicht empfohlen, nur diese Namespaces zum Konfigurieren der VPN-Auslagerung zu verwenden, auch wenn dies technisch möglich in Ihrer VPN-Lösung möglich ist (z. B. wenn sie mit dem Namespace und nicht mit der IP-Adresse funktioniert).
Für die Government-Clouds(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 wird für Teams Town Hall-Veranstaltungen in der Microsoft 365 U.S. Government Community Cloud (GCC) verwendet.
*.cdn.ml.gov.teams.microsoft.us wird für Teams Town Hall-Veranstaltungen in der Microsoft 365 US Government GCC High Cloud (GCC High) verwendet.
*.cdn.ml.dod.teams.microsoft.us wird für Teams Town Hall-Veranstaltungen in der Microsoft 365 US Government DoD Cloud (DoD) verwendet.
FQDNs sind in der VPN-Konfiguration nicht erforderlich, sie dienen lediglich zur Verwendung in PAC-Dateien in Kombination mit den IP-Adressen, um den relevanten Datenverkehr direkt zu senden.
2. Implementieren von PAC-Dateiänderungen (falls erforderlich)
Für Organisationen, die eine PAC-Datei verwenden, um Datenverkehr über einen Proxy weiterzuleiten, während sie sich im VPN befinden, wird dies normalerweise mithilfe von FQDNs erreicht. Bei Teams-Ereignissen enthalten die bereitgestellten Hostnamen jedoch Wildcards, die in IP-Adressen aufgelöst werden, die von Content Delivery Networks (CDNs) verwendet werden und nicht ausschließlich für Den Datenverkehr von Teams-Ereignissen verwendet werden. Wenn die Anforderung also direkt basierend auf der DNS-Wildcard-Übereinstimmung gesendet wird, wird der Datenverkehr zu diesen Endpunkten blockiert, da es keine Route über den direkten Pfad für sie in Schritt 3 weiter unten in diesem Artikel gibt.
Um dies zu beheben, können wir die folgenden IP-Adressen bereitstellen und in Kombination mit den Hostnamen in einer PAC-Beispieldatei verwenden, wie in Schritt 1 beschrieben. Die PAC-Datei überprüft, ob die URL mit den für Teams-Ereignisse verwendeten übereinstimmt, und wenn dies der Fall ist, wird auch überprüft, ob die von einer DNS-Suche zurückgegebene IP mit der für den Dienst bereitgestellten IP-Adresse übereinstimmt. Wenn beide übereinstimmen, wird der Datenverkehr direkt weitergeleitet. Wenn eines der Elemente (FQDN/IP) nicht übereinstimmt, wird der Datenverkehr an den Proxy gesendet. Daher stellt die Konfiguration sicher, dass alles, was zu einer IP-Adresse aufgelöst wird, die sich außerhalb des Bereichs sowohl der IP-Adresse als auch der definierten Namespaces befindet, den Proxy über das VPN wie gewohnt durchläuft.
Sammeln der aktuellen Listen von CDN-Endpunkten
Für die kommerzielle Cloud verwenden Teams-Ereignisse mehrere CDN-Anbieter zum Streamen an Kunden, um die beste Abdeckung, Qualität und Resilienz zu bieten. Derzeit werden sowohl Azure CDN von Microsoft als auch Azure CDN von Verizon verwendet. Im Laufe der Zeit kann dies aufgrund von Situationen wie der regionalen Verfügbarkeit geändert werden. Dieser Artikel ist eine Quelle, mit der Sie sich über IP-Adressbereiche auf dem neuesten Stand halten können. Für die Microsoft 365 US Government Clouds (GCC, GCC High und DoD) wird nur Azure CDN von Microsoft verwendet.
Für die kommerzielle Cloud:
Für Azure CDN von Microsoft können Sie die Liste unter Herunterladen von Azure-IP-Adressbereichen und -Diensttags – Öffentliche Cloud aus dem offiziellen Microsoft Download Center herunterladen. Sie müssen im JSON-Code speziell nach dem Diensttag
AzureFrontdoor.Frontend
suchen. addressPrefixes zeigt die IPv4-/IPv6-Subnetze an. Im Laufe der Zeit können sich die IP-Adressen ändern, aber die Liste der Diensttags wird immer aktualisiert, bevor sie verwendet werden.Für Azure CDN von Verizon (Edgecast) finden Sie eine vollständige Liste mithilfe von Edgeknoten – Liste (wählen Sie Ausprobieren ) aus. Sie müssen speziell nach dem Abschnitt Premium_Verizon suchen. Beachten Sie, dass diese API alle Edgecast-IP-Adressen (Ursprung und Anycast) anzeigt. Derzeit gibt es keinen Mechanismus für die API, um zwischen Origin und Anycast zu unterscheiden.
Für die Government Clouds (GCC, GCC High und DoD):
- Für Azure CDN von Microsoft können Sie die Liste unter Herunterladen von Azure-IP-Adressbereichen und -Diensttags – US Government Cloud aus dem offiziellen Microsoft Download Center herunterladen. Sie müssen im JSON-Code speziell nach dem Diensttag
AzureFrontdoor.Frontend
suchen. addressPrefixes zeigt die IPv4-/IPv6-Subnetze an. Im Laufe der Zeit können sich die IP-Adressen ändern, aber die Liste der Diensttags wird immer aktualisiert, bevor sie verwendet werden.
Das folgende Skript kann eine PAC-Datei generieren, die die Namespaces und IP-Einträge für den Teilnehmerdatenverkehr der Teams-Ereignisse enthält. Der Parameter -Instance bestimmt die angegebene Umgebung. Die unterstützten Werte sind [Worldwide, USGov, USGovGCCHigh und UsGovDoD]. Optional kann das Skript auch die Domänen Optimize und Allow mit dem Parameter -Type enthalten.
Pac-Beispieldateigenerierung für die kommerzielle Cloud
Hier sehen Sie ein Beispiel für das Generieren der PAC-Datei für die kommerzielle Cloud:
Speichern Sie das Skript auf Ihrer lokalen Festplatte als Get-EventsPacFile.ps1.
Wechseln Sie zur Verizon-URL , und laden Sie den resultierenden JSON-Code herunter (kopieren Sie ihn in eine Datei mit dem Namen cdnedgenodes.json).
Speichern Sie die Datei im selben Ordner wie das Skript.
Führen Sie in einem PowerShell-Fenster den folgenden Befehl aus. Wenn Sie nur die Namen "Optimieren" (und nicht "Optimieren" und "Zulassen") wünschen, ändern Sie den Parameter -Type in Optimize.
.\Get-EventsPacFile.ps1 -Instance Worldwide -CdnEdgeNodesFilePath .\cdnedgenodes.json -Type OptimizeAndAllow -FilePath .\Commercial.pac
Die Datei "Commercial.pac" enthält alle Namespaces und IP-Adressen (IPv4/IPv6) für den Teilnehmerdatenverkehr von Teams-Ereignissen.
Beispiel für die PAC-Dateigenerierung für die Microsoft 365 U.S. Government Community Cloud (GCC)
Hier sehen Sie ein Beispiel für das Generieren der PAC-Datei für die GCC-Umgebung:
Speichern Sie das Skript auf Ihrer lokalen Festplatte als Get-EventsPacFile.ps1.
Führen Sie in einem PowerShell-Fenster den folgenden Befehl aus. Wenn Sie nur die Namen "Optimieren" (und nicht "Optimieren" und "Zulassen") wünschen, ändern Sie den Parameter -Type in Optimize.
.\Get-EventsPacFile.ps1 -Instance UsGov -Type OptimizeAndAllow -FilePath .\USGov.pac
Die Datei "USGov.pac" enthält alle Namespaces und IP-Adressen (IPv4/IPv6), die für die GCC-Cloud für den Teilnehmerdatenverkehr der Teams Town Hall spezifisch sind.
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
}
Das Skript analysiert automatisch die entsprechende Azure CDN-Liste basierend auf dem Parameterwert Instanz und schlüsseln aus AzureFrontDoor.Frontend, sodass sie nicht manuell abgerufen werden müssen.
Auch hier wird nicht empfohlen, eine VPN-Auslagerung nur mit den FQDNs durchzuführen. Die Verwendung sowohl der FQDNs als auch der IP-Adressen in der Funktion hilft, die Verwendung dieser Auslagerung auf eine begrenzte Anzahl von Endpunkten einschließlich Teams-Ereignissen zu beschränken. Die Struktur der Funktion führt dazu, dass für den FQDN eine DNS-Suche durchgeführt wird, die mit den vom Client direkt aufgeführten übereinstimmt. Die DNS-Auflösung der verbleibenden Namespaces bleibt also unverändert.
3. Konfigurieren des Routings für das VPN, um den direkten ausgehenden Datenverkehr zu ermöglichen
Der letzte Schritt besteht darin, eine direkte Route für die Teams-Ereignis-IPs hinzuzufügen, die unter Sammeln der aktuellen Listen von CDN-Endpunkten in der VPN-Konfiguration beschrieben sind, um sicherzustellen, dass der Datenverkehr nicht über den erzwungenen Tunnel in das VPN gesendet wird. Ausführliche Informationen dazu, wie Sie dies für Microsoft 365 Optimize-Endpunkte durchführen können, finden Sie im Abschnitt Implementieren von geteiltem VPN-Tunneling unter Implementieren des geteilten VPN-Tunnelings für Microsoft 365. Der Prozess ist für die in diesem Dokument aufgeführten Teams-Ereignis-IP-Adressen identisch.
Hinweis
Für die VPN-Konfiguration sollten nur die IP-Adressen (nicht FQDNs) aus Sammlung der aktuellen Listen von CDN-Endpunkten verwendet werden.
Häufig gestellte Fragen
Wird dadurch mein gesamter Datenverkehr direkt an den Dienst gesendet?
Nein, dadurch wird der latenzabhängige Streamingdatenverkehr für einen Teams-Ereignisteilnehmer direkt gesendet. Jeder andere Datenverkehr verwendet weiterhin den VPN-Tunnel, wenn er nicht zu den veröffentlichten IP-Adressen aufgelöst wird.
Muss ich die IPv6-Adressen verwenden?
Nein, die Konnektivität kann nur bei Bedarf IPv4 sein.
Warum werden diese IP-Adressen nicht im Microsoft 365-URL/IP-Dienst veröffentlicht?
Microsoft verfügt über strenge Kontrollen für das Format und die Art der Informationen, die sich im Dienst befinden, um sicherzustellen, dass Kunden die Informationen zuverlässig verwenden können, um sicheres und optimales Routing basierend auf der Endpunktkategorie zu implementieren.
Die Kategorie "Standardendpunkt " enthält aus zahlreichen Gründen keine IP-Informationen (Standardendpunkte befinden sich möglicherweise außerhalb der Kontrolle von Microsoft, ändern sich möglicherweise zu häufig oder befinden sich in Blöcken, die mit anderen Elementen geteilt werden). Aus diesem Grund sind Standardendpunkte so konzipiert, dass sie wie normaler Webdatenverkehr über FQDN an einen überprüfenden Proxy gesendet werden.
In diesem Fall handelt es sich bei den oben genannten Endpunkten um CDNs, die von anderen von Microsoft gesteuerten Elementen als Teams-Ereignissen verwendet werden können. Daher bedeutet das senden des Datenverkehrs auch, dass alles andere, was in diese IP-Adressen aufgelöst wird, auch direkt vom Client gesendet wird. Aufgrund des einzigartigen Charakters der aktuellen globalen Krise und um den kurzfristigen Bedürfnissen unserer Kunden gerecht zu werden, hat Microsoft die oben genannten Informationen bereitgestellt, damit kunden sie nach Bedarf nutzen können.
Microsoft arbeitet daran, die Teams-Ereignisendpunkte neu zu konfigurieren, damit sie in Zukunft in die Endpunktkategorien Zulassen/Optimieren einbezogen werden können.
Muss ich nur den Zugriff auf diese IP-Adressen zulassen?
Nein, der Zugriff auf alle als Erforderlich gekennzeichneten Endpunkte für die entsprechende Umgebung ist für den Betrieb des Diensts unerlässlich.
- Weltweit einschließlich GCC: Endpunkte für weltweit
- Microsoft 365 US Government GCC High: Endpunkte für GCC High
- Microsoft 365 US Government DoD: Endpunkte für DoD
Welche Szenarien werden von dieser Empfehlung abgedeckt?
- Liveereignisse, die in der Teams-App erstellt werden
- Von einem externen Gerät (Encoder) erzeugte Ereignisse
- Teams Town Hall
Deckt dieser Ratschlag den Datenverkehr von Referenten ab?
Dies ist nicht der Fall. der obige Ratschlag richtet sich ausschließlich an diejenigen, die an der Veranstaltung teilnehmen. Bei der Präsentation innerhalb von Teams wird der Datenverkehr des Referenten zu den als "Optimieren" markierten UDP-Endpunkten in Zeile 11 des URL-/IP-Diensts mit detaillierten Vpn-Abladungshinweisen im Abschnitt Implementieren des geteilten VPN-Tunnelings unter Implementieren des geteilten VPN-Tunnelings für Microsoft 365 angezeigt.
Verwandte Artikel
Übersicht: Geteiltes VPN-Tunneling für Microsoft 365
Implementieren von geteilten VPN-Tunneln für Microsoft 365
Häufige Szenarien für geteilte VPN-Tunnel für Microsoft 365
Schützen des Teams-Mediendatenverkehrs für geteilte VPN-Tunnel
Microsoft 365-Leistungsoptimierung für China-Benutzer
Prinzipien von Microsoft 365-Netzwerkverbindungen
Bewerten der Microsoft 365-Netzwerkkonnektivität
Microsoft 365-Netzwerk- und Leistungsoptimierung
Betrieb über VPN: Wie Microsoft seine Remotemitarbeitern in Verbindung hält