Specjalne zagadnienia dotyczące zdarzeń usługi Stream i usługi Teams w środowiskach sieci VPN

Uwaga

Ten artykuł jest częścią zestawu artykułów dotyczących optymalizacji platformy Microsoft 365 dla użytkowników zdalnych.

Ruch uczestników wydarzeń na żywo platformy Microsoft 365 (obejmuje uczestników wydarzeń na żywo wyprodukowanych w usłudze Teams oraz tych utworzonych za pomocą kodera zewnętrznego za pośrednictwem usługi Teams, stream lub Viva Engage), ruch uczestników ratusza Microsoft Teams i ruch uczestników usługi Stream na żądanie jest obecnie klasyfikowany jako domyślny i optymalizowanyna liście adresów URL/IP dla usługi. Te punkty końcowe są klasyfikowane jako domyślne , ponieważ są hostowane w sieci CDN, które mogą być również używane przez inne usługi. Klienci zazwyczaj wolą serwer proxy tego typu ruchu i stosować wszystkie elementy zabezpieczeń zwykle wykonywane w punktach końcowych, takich jak te.

Wielu klientów poprosiło o podanie danych adresu URL/IP potrzebnych do połączenia swoich uczestników ze zdarzeniami usługi Stream lub Teams bezpośrednio z lokalnego połączenia internetowego, zamiast kierować ruch o dużej ilości i opóźnieniach za pośrednictwem infrastruktury sieci VPN. Zazwyczaj nie jest to możliwe bez dedykowanych przestrzeni nazw i dokładnych informacji o adresach IP dla punktów końcowych, które nie są udostępniane dla punktów końcowych platformy Microsoft 365 sklasyfikowanych jako domyślne.

Wykonaj poniższe kroki, aby włączyć bezpośrednią łączność dla usług zdarzeń usługi Stream lub Teams od klientów korzystających z wymuszonej sieci VPN tunelu. To rozwiązanie ma na celu zapewnienie klientom opcji unikania routingu ruchu uczestników zdarzeń przez sieć VPN, podczas gdy istnieje duży ruch sieciowy ze względu na scenariusze pracy z domu. Jeśli to możliwe, zalecamy uzyskanie dostępu do usługi za pośrednictwem serwera proxy inspekcji.

Uwaga

Korzystając z tego rozwiązania, mogą istnieć elementy usługi, które nie rozpoznają podanych adresów IP, a tym samym przechodzą przez sieć VPN, ale większość dużego ruchu, takiego jak dane przesyłane strumieniowo. Mogą istnieć inne elementy poza zakresem zdarzeń na żywo/strumienia, które są przechwytywane przez to odciążanie, ale powinny być ograniczone, ponieważ muszą spełniać zarówno nazwę FQDN, jak i dopasowanie adresu IP przed przejściem bezpośrednio.

Ważna

Zalecamy rozważenie ryzyka wysłania większego ruchu, który pomija sieć VPN w stosunku do zwiększenia wydajności zdarzeń na żywo.

Aby zaimplementować wyjątek wymuszonego tunelu dla zdarzeń usługi Teams i usługi Stream, należy zastosować następujące kroki:

1. Konfigurowanie zewnętrznego rozpoznawania nazw DNS

Klienci muszą mieć zewnętrzną, cykliczną rozdzielczość DNS, aby można było rozpoznawać następujące nazwy hostów jako adresy IP.

  • *.azureedge.net
  • *.media.azure.net
  • *.bmc.cdn.office.net
  • *.ml.cdn.office.net

*.azureedge.net jest używana w przypadku zdarzeń usługi Stream (Konfigurowanie koderów do transmisji strumieniowej na żywo w Microsoft Stream — Microsoft Stream | Microsoft Docs).

*.media.azure.net i *.bmc.cdn.office.net są używane w przypadku wydarzeń na żywo tworzonych w usłudze Teams (zdarzeń szybkiego startu i RTMP-In obsługiwanych zdarzeń) zaplanowanych przez klienta usługi Teams.

*.media.azure.net, *.bmc.cdn.office.net i *.ml.cdn.office.net są używane do wydarzeń w ratuszu Teams.

Niektóre z tych punktów końcowych są współużytkowane z innymi elementami poza zdarzeniami usługi Stream lub Teams. Nie zalecamy tylko używania tych nazw FQDN do konfigurowania odciążania sieci VPN, nawet jeśli jest to technicznie możliwe w rozwiązaniu sieci VPN (na przykład jeśli działa ono w sieci FQDN, a nie w adresie IP).

Nazwy FQDN nie są wymagane w konfiguracji sieci VPN. Są one przeznaczone wyłącznie do użycia w plikach PAC w połączeniu z adresami IP w celu wysyłania odpowiedniego ruchu bezpośredniego.

2. Implementowanie zmian pliku PAC (jeśli jest to wymagane)

W przypadku organizacji korzystających z pliku PAC do kierowania ruchu przez serwer proxy w sieci VPN zwykle jest to osiągane przy użyciu nazw FQDN. Jednak w przypadku transmisji strumieniowej/wydarzeń na żywo/ratusza podane nazwy hostów zawierają symbole wieloznaczne, takie jak *.azureedge.net, które obejmują również inne elementy, dla których nie można podać pełnych list adresów IP. W związku z tym, jeśli żądanie jest wysyłane bezpośrednio na podstawie samego dopasowania symbolu wieloznacznego DNS, ruch do tych punktów końcowych zostanie zablokowany, ponieważ nie ma trasy przez ścieżkę bezpośrednią w kroku 3 w dalszej części tego artykułu.

Aby rozwiązać ten problem, możemy podać następujące adresy IP i używać ich w połączeniu z nazwami hostów w przykładowym pliku PAC zgodnie z opisem w kroku 1. Plik PAC sprawdza, czy adres URL jest zgodny z adresami używanymi w usłudze Stream/Live Events/Town hall, a następnie sprawdza, czy adres IP zwrócony z wyszukiwania DNS jest zgodny z adresem podanym dla usługi. Jeśli oba są zgodne, ruch jest kierowany bezpośrednio. Jeśli któryś z elementów (FQDN/IP) nie jest zgodny, ruch jest wysyłany do serwera proxy. W związku z tym konfiguracja gwarantuje, że wszystkie elementy rozpoznane jako adres IP poza zakresem zarówno adresu IP, jak i zdefiniowanych przestrzeni nazw będą normalnie przechodzić przez serwer proxy za pośrednictwem sieci VPN.

Zbieranie bieżących list punktów końcowych usługi CDN

Zdarzenia zespołów używają wielu dostawców usługi CDN do przesyłania strumieniowego do klientów w celu zapewnienia najlepszego pokrycia, jakości i odporności. Obecnie używana jest zarówno usługa Azure CDN firmy Microsoft, jak i verizon. Z biegiem czasu można to zmienić ze względu na sytuacje, takie jak dostępność regionalna. Ten artykuł jest źródłem umożliwiającym aktualizowanie zakresów adresów IP.

W przypadku usługi Azure CDN firmy Microsoft możesz pobrać listę z witryny Pobierz zakresy adresów IP platformy Azure i tagi usług — Chmura publiczna z Oficjalnego Centrum pobierania Microsoft — musisz poszukać tagu usługi AzureFrontdoor.Frontend w formacie JSON. AddressPrefixes wyświetli podsieci IPv4/IPv6. Z biegiem czasu adresy IP mogą ulec zmianie, ale lista tagów usługi jest zawsze aktualizowana, zanim zostaną użyte.

W przypadku usługi Azure CDN from Verizon (Edgecast) możesz znaleźć wyczerpującą listę przy użyciu węzłów krawędzi — lista (wybierz pozycję Wypróbuj ) — musisz wyszukać specjalnie sekcję Premium_Verizon . Należy pamiętać, że ten interfejs API pokazuje wszystkie adresy IP usługi Edgecast (origin i Anycast). Obecnie interfejs API nie ma mechanizmu rozróżniania pochodzenia i emisji Anycast.

Aby zaimplementować tę funkcję w pliku PAC, możesz użyć następującego przykładu, który wysyła bezpośredni ruch optymalizacji ruchu platformy Microsoft 365 (co jest zalecane najlepsze rozwiązanie) za pośrednictwem nazwy FQDN oraz krytyczny ruch strumienia/zdarzeń na żywo bezpośrednio za pośrednictwem kombinacji nazwy FQDN i zwróconego adresu IP. Nazwa zastępcza contoso musi być edytowana pod nazwą konkretnej dzierżawy, w której firma contoso pochodzi z contoso.onmicrosoft.com

Przykładowy plik PAC

Oto przykład sposobu generowania plików PAC:

  1. Zapisz poniższy skrypt na lokalnym dysku twardym jako Get-TLEPacFile.ps1.

  2. Przejdź do adresu URL verizon i pobierz wynikowy kod JSON (skopiuj go do pliku, takiego jak cdnedgenodes.json)

  3. Umieść plik w tym samym folderze co skrypt.

  4. W oknie programu PowerShell uruchom następujące polecenie. Jeśli chcesz mieć adresy URL SPO, zmień nazwę dzierżawy na inną. Jest to typ 2, więc optymalizuj i zezwalaj (typ 1 to tylko optymalizacja).

    .\Get-TLEPacFile.ps1 -Instance Worldwide -Type 2 -TenantName <contoso> -CdnEdgeNodesFilePath .\cdnedgenodes.json -FilePath TLE.pac
    
  5. Plik TLE.pac będzie zawierać wszystkie przestrzenie nazw i adresy IP (IPv4/IPv6).

Get-TLEPacFile.ps1
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.

<#PSScriptInfo

.VERSION 1.0.5

.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

.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.

.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 1 and 2, which are 2 different modes of operation.
Type 1 will send Optimize traffic to the direct route. Type 2 will send Optimize and Allow traffic to
the direct route.

.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-TLEPacFile.ps1 -ClientRequestId b10c5ed1-bad1-445f-b386-b919946339a7 -DefaultProxySettings "PROXY 4.4.4.4:70" -FilePath type1.pac

.EXAMPLE

Get-TLEPacFile.ps1 -ClientRequestId b10c5ed1-bad1-445f-b386-b919946339a7 -Instance China -Type 2 -DefaultProxySettings "PROXY 4.4.4.4:70" -FilePath type2.pac

.EXAMPLE

Get-TLEPacFile.ps1 -ClientRequestId b10c5ed1-bad1-445f-b386-b919946339a7 -Instance WorldWide -Lowercase -TenantName tenantName -ServiceAreas Sharepoint

#>

#Requires -Version 2

[CmdletBinding(SupportsShouldProcess=$True)]
Param (
    [Parameter(Mandatory = $false)]
    [ValidateSet('Worldwide', 'Germany', 'China', 'USGovDoD', 'USGovGCCHigh')]
    [String] $Instance = "Worldwide",

    [Parameter(Mandatory = $false)]
    [ValidateNotNullOrEmpty()]
    [guid] $ClientRequestId = [Guid]::NewGuid().Guid,

    [Parameter(Mandatory = $false)]
    [ValidateNotNullOrEmpty()]
    [String] $DirectProxySettings = 'DIRECT',

    [Parameter(Mandatory = $false)]
    [ValidateNotNullOrEmpty()]
    [String] $DefaultProxySettings = 'PROXY 10.10.10.10:8080',

    [Parameter(Mandatory = $false)]
    [ValidateRange(1, 2)]
    [int] $Type = 1,

    [Parameter(Mandatory = $false)]
    [switch] $Lowercase = $false,

    [Parameter(Mandatory = $false)]
    [ValidateNotNullOrEmpty()]
    [string] $TenantName,

    [Parameter(Mandatory = $false)]
    [ValidateSet('Exchange', 'SharePoint', 'Common', 'Skype')]
    [string[]] $ServiceAreas,

    [Parameter(Mandatory = $false)]
    [ValidateNotNullOrEmpty()]
    [string] $FilePath,

    [Parameter(Mandatory = $false)]
    [ValidateNotNullOrEmpty()]
    [string] $CdnEdgeNodesFilePath
)

##################################################################################################################
### Global constants
##################################################################################################################

$baseServiceUrl = "https://endpoints.office.com/endpoints/$Instance/?ClientRequestId={$ClientRequestId}"
$directProxyVarName = "direct"
$defaultProxyVarName = "proxyServer"
$bl = "`r`n"

##################################################################################################################
### Functions to create PAC files
##################################################################################################################

function Get-PacClauses
{
    param(
        [Parameter(Mandatory = $false)]
        [string[]] $Urls,

        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [String] $ReturnVarName
    )

    if (!$Urls)
    {
        return ""
    }

    $clauses =  (($Urls | ForEach-Object { "shExpMatch(host, `"$_`")" }) -Join "$bl        || ")

@"
    if($clauses)
    {
        return $ReturnVarName;
    }
"@
}

function Get-PacString
{
    param(
        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [array[]] $MapVarUrls
    )

@"
// This PAC file will provide proxy config to Microsoft 365 services
//  using data from the public web service for all endpoints
function FindProxyForURL(url, host)
{
    var $directProxyVarName = "$DirectProxySettings";
    var $defaultProxyVarName = "$DefaultProxySettings";

$( if ($Lowercase) { "    host = host.toLowerCase();" })

$( ($MapVarUrls | ForEach-Object { Get-PACClauses -ReturnVarName $_.Item1 -Urls $_.Item2 }) -Join "$bl$bl" )

$( if (!$ServiceAreas -or $ServiceAreas.Contains('Skype')) { Get-TLEPacConfiguration })

    return $defaultProxyVarName;
}
"@ -replace "($bl){3,}","$bl$bl" # Collapse more than one blank line in the PAC file so it looks better.
}

##################################################################################################################
### Functions to get and filter endpoints
##################################################################################################################

function Get-TLEPacConfiguration {
    param ()
    $PreBlock = @"
    // Don't Proxy Teams Live Events traffic

    if(shExpMatch(host, "*.azureedge.net")
    || shExpMatch(host, "*.bmc.cdn.office.net")
    || shExpMatch(host, "*.ml.cdn.office.net")
    || shExpMatch(host, "*.media.azure.net"))
    {
        var resolved_ip = dnsResolveEx(host);

"@
    $TLESb = New-Object 'System.Text.StringBuilder'
    $TLESb.Append($PreBlock) | Out-Null

    if (![string]::IsNullOrEmpty($CdnEdgeNodesFilePath) -and (Test-Path -Path $CdnEdgeNodesFilePath)) {
        $CdnData = 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
        $CdnData | Select-Object -ExpandProperty ipv4Addresses | ForEach-Object {
            if ($TLESb.Length -eq $PreBlock.Length) {
                $TLESb.Append("        if(") | Out-Null
            }
            else {
                $TLESb.AppendLine() | Out-Null
                $TLESb.Append("        || ") | Out-Null
            }
            $TLESb.Append("isInNetEx(resolved_ip, `"$($_.BaseIpAddress)/$($_.prefixLength)`")") | Out-Null
        }
        $CdnData | Select-Object -ExpandProperty ipv6Addresses | ForEach-Object {
            if ($TLESb.Length -eq $PreBlock.Length) {
                $TLESb.Append("        if(") | Out-Null
            }
            else {
                $TLESb.AppendLine() | Out-Null
                $TLESb.Append("        || ") | Out-Null
            }
            $TLESb.Append("isInNetEx(resolved_ip, `"$($_.BaseIpAddress)/$($_.prefixLength)`")") | Out-Null
        }
    }
    $AzureIPsUrl = Invoke-WebRequest -Uri "https://www.microsoft.com/en-us/download/confirmation.aspx?id=56519" -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 | ForEach-Object {
                if ($TLESb.Length -eq $PreBlock.Length) {
                    $TLESb.Append("        if(") | Out-Null
                }
                else {
                    $TLESb.AppendLine() | Out-Null
                    $TLESb.Append("        || ") | Out-Null
                }
                $TLESb.Append("isInNetEx(resolved_ip, `"$_`")") | Out-Null
            }
    }
    if ($TLESb.Length -gt $PreBlock.Length) {
        $TLESb.AppendLine(")") | Out-Null
        $TLESb.AppendLine("        {") | Out-Null
        $TLESb.AppendLine("            return $directProxyVarName;") | Out-Null
        $TLESb.AppendLine("        }") | Out-Null
    }
    else {
        $TLESb.AppendLine("        // no addresses found for service via script") | Out-Null
    }
    $TLESb.AppendLine("    }") | Out-Null
    return $TLESb.ToString()
}

function Get-Regex
{
    param(
        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [string] $Fqdn
    )

    return "^" + $Fqdn.Replace(".", "\.").Replace("*", ".*").Replace("?", ".?") + "$"
}

function Match-RegexList
{
    param(
        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [string] $ToMatch,

        [Parameter(Mandatory = $false)]
        [string[]] $MatchList
    )

    if (!$MatchList)
    {
        return $false
    }
    foreach ($regex in $MatchList)
    {
        if ($regex -ne $ToMatch -and $ToMatch -match (Get-Regex $regex))
        {
            return $true
        }
    }
    return $false
}

function Get-Endpoints
{
    $url = $baseServiceUrl
    if ($TenantName)
    {
        $url += "&TenantName=$TenantName"
    }
    if ($ServiceAreas)
    {
        $url += "&ServiceAreas=" + ($ServiceAreas -Join ",")
    }
    return Invoke-RestMethod -Uri $url
}

function Get-Urls
{
    param(
        [Parameter(Mandatory = $false)]
        [psobject[]] $Endpoints
    )

    if ($Endpoints)
    {
        return $Endpoints | Where-Object { $_.urls } | ForEach-Object { $_.urls } | Sort-Object -Unique
    }
    return @()
}

function Get-UrlVarTuple
{
    param(
        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [string] $VarName,

        [Parameter(Mandatory = $false)]
        [string[]] $Urls
    )
    return New-Object 'Tuple[string,string[]]'($VarName, $Urls)
}

function Get-MapVarUrls
{
    Write-Verbose "Retrieving all endpoints for instance $Instance from web service."
    $Endpoints = Get-Endpoints

    if ($Type -eq 1)
    {
        $directUrls = Get-Urls ($Endpoints | Where-Object { $_.category -eq "Optimize" })
        $nonDirectPriorityUrls = Get-Urls ($Endpoints | Where-Object { $_.category -ne "Optimize" }) | Where-Object { Match-RegexList $_ $directUrls }
        return @(
            Get-UrlVarTuple -VarName $defaultProxyVarName -Urls $nonDirectPriorityUrls
            Get-UrlVarTuple -VarName $directProxyVarName -Urls $directUrls
        )
    }
    elseif ($Type -eq 2)
    {
        $directUrls = Get-Urls ($Endpoints | Where-Object { $_.category -in @("Optimize", "Allow")})
        $nonDirectPriorityUrls = Get-Urls ($Endpoints | Where-Object { $_.category -notin @("Optimize", "Allow") }) | Where-Object { Match-RegexList $_ $directUrls }
        return @(
            Get-UrlVarTuple -VarName $defaultProxyVarName -Urls $nonDirectPriorityUrls
            Get-UrlVarTuple -VarName $directProxyVarName -Urls $directUrls
        )
    }
}

##################################################################################################################
### Main script
##################################################################################################################

$content = Get-PacString (Get-MapVarUrls)

if ($FilePath)
{
    $content | Out-File -FilePath $FilePath -Encoding ascii
}
else
{
    $content
}

Skrypt automatycznie analizuje listę platformy Azure na podstawie adresu URL pobierania i kluczy z witryny AzureFrontDoor.Frontend, więc nie ma potrzeby ręcznego pobierania tej listy.

Ponownie nie zalecamy odciążania sieci VPN przy użyciu tylko nazw FQDN; Użycie zarówno nazw FQDN, jak i adresów IP w funkcji pomaga ograniczyć użycie tego odciążania do ograniczonego zestawu punktów końcowych, w tym zdarzeń na żywo/strumienia. Sposób, w jaki funkcja jest ustrukturyzowana, spowoduje, że wyszukiwanie DNS będzie wykonywane dla nazwy FQDN, która jest zgodna z tymi wymienionymi bezpośrednio przez klienta, tj. rozpoznawanie nazw DNS pozostałych przestrzeni nazw pozostaje niezmienione.

Jeśli chcesz ograniczyć ryzyko odciążania punktów końcowych niezwiązanych ze zdarzeniami usługi Teams i usługą Stream, możesz usunąć domenę *.azureedge.net z konfiguracji, w której występuje większość tego ryzyka, ponieważ jest to domena udostępniona używana dla wszystkich klientów usługi Azure CDN. Minusem tego jest to, że każde zdarzenie używające kodera zewnętrznego obsługiwanego przez usługę Stream nie zostanie zoptymalizowane, ale zdarzenia utworzone/zorganizowane w usłudze Teams będą.

3. Konfigurowanie routingu w sieci VPN w celu włączenia bezpośredniego ruchu wychodzącego

Ostatnim krokiem jest dodanie bezpośredniej trasy dla adresów IP zdarzeń usługi Teams opisanych w temacie Zbieranie bieżących list punktów końcowych usługi CDN do konfiguracji sieci VPN, aby upewnić się, że ruch nie jest wysyłany przez wymuszony tunel do sieci VPN. Szczegółowe informacje na temat tego, jak to zrobić dla punktów końcowych optymalizacji platformy Microsoft 365, można znaleźć w sekcji Implementowanie tunelowania podzielonego sieci VPN w temacie Implementowanie tunelowania podzielonego sieci VPN dla platformy Microsoft 365. Proces jest dokładnie taki sam dla adresów IP zdarzeń usługi Stream lub Teams wymienionych w tym dokumencie.

Należy pamiętać, że tylko adresy IP (a nie nazwy FQDN) ze zbierania bieżących list punktów końcowych usługi CDN powinny być używane do konfiguracji sieci VPN.

Często zadawane pytania

Czy spowoduje to bezpośrednie wysłanie całego ruchu do usługi?

Nie. Spowoduje to bezpośrednie wysłanie ruchu przesyłania strumieniowego uwzględniającego opóźnienia dla zdarzenia usługi Teams lub strumienia wideo. Jeśli nie rozpoznają opublikowanych adresów IP, każdy inny ruch będzie nadal korzystać z tunelu SIECI VPN.

Czy muszę używać adresów IPv6?

Nie, łączność może być IPv4 tylko wtedy, gdy jest to wymagane.

Dlaczego te adresy IP nie są publikowane w usłudze adresów URL/IP platformy Microsoft 365?

Firma Microsoft ma ścisłe mechanizmy kontroli dotyczące formatu i typu informacji, które znajdują się w usłudze, aby zapewnić klientom niezawodne korzystanie z tych informacji w celu zaimplementowania bezpiecznego i optymalnego routingu w oparciu o kategorię punktu końcowego.

Kategoria Domyślny punkt końcowy nie zawiera informacji o adresie IP z wielu powodów (domyślne punkty końcowe mogą znajdować się poza kontrolą firmy Microsoft, mogą się zbyt często zmieniać lub znajdować się w blokach udostępnionych innym elementom). Z tego powodu domyślne punkty końcowe są przeznaczone do wysyłania za pośrednictwem nazwy FQDN do serwera proxy inspekcji, takiego jak normalny ruch internetowy.

W takim przypadku powyższe punkty końcowe to sieci CDN, które mogą być używane przez elementy niekontrolowane przez firmę Microsoft, inne niż zdarzenia na żywo lub usługa Stream, a zatem wysłanie bezpośredniego ruchu będzie oznaczać, że wszystkie inne rozwiązania do tych adresów IP będą również wysyłane bezpośrednio z klienta. Ze względu na unikatowy charakter obecnego globalnego kryzysu i aby zaspokoić krótkoterminowe potrzeby naszych klientów, firma Microsoft dostarczyła powyższe informacje, aby klienci mogli korzystać zgodnie z potrzebami.

Firma Microsoft pracuje nad ponownym skonfigurowaniem punktów końcowych zdarzeń usługi Teams, aby umożliwić ich uwzględnienie w kategoriach Zezwalaj/Optymalizuj punkt końcowy w przyszłości.

Czy muszę zezwolić na dostęp tylko do tych adresów IP?

Nie, dostęp do wszystkich wymaganych oznaczonych punktów końcowych w usłudze ADRESU URL/IP jest niezbędny do działania usługi. Ponadto wymagany jest dowolny opcjonalny punkt końcowy oznaczony dla usługi Stream (identyfikator 41–45).

Jakie scenariusze obejmą te porady?

  1. Wydarzenia na żywo utworzone w aplikacji Teams
  2. Wyświetlanie zawartości hostowanej w usłudze Stream
  3. Zdarzenia generowane przez urządzenie zewnętrzne (koder)
  4. Teams Ratusz

Czy ta porada obejmuje ruch prezentera?

Tak się nie dzieje; powyższa porada jest wyłącznie dla osób korzystających z usługi. Prezentacja z poziomu usługi Teams spowoduje wyświetlenie ruchu prezentera przepływającego do punktów końcowych optymalizacji oznaczonych jako UDP wymienionych w wierszu 11 usługi adresów URL/IP ze szczegółowymi poradami dotyczącymi odciążania sieci VPN opisanymi w sekcji Implementowanie tunelowania podzielonego sieci VPN w temacie Implementowanie tunelowania podzielonego sieci VPN dla platformy Microsoft 365.

Czy ta konfiguracja stwarza ryzyko dla ruchu innego niż ratusz, wydarzenia na żywo & przesyłane bezpośrednio do usługi Stream?

Tak, ze względu na udostępnione nazwy FQDN używane dla niektórych elementów usługi jest to nieuniknione. Ten ruch jest zwykle wysyłany za pośrednictwem firmowego serwera proxy, który może zastosować inspekcję. W scenariuszu podzielonego tunelu sieci VPN użycie zarówno nazw FQDN, jak i adresów IP ograniczy to ryzyko do minimum, ale nadal będzie istnieć. Klienci mogą usunąć domenę *.azureedge.net z konfiguracji odciążania i ograniczyć to ryzyko do minimum, ale spowoduje to usunięcie odciążenia zdarzeń na żywo obsługiwanych przez usługę Stream (zaplanowanych w usłudze Teams, zdarzeń kodera usługi Stream, Viva Engage zdarzeń utworzonych w usłudze Teams, zdarzeń kodera usługi Stream Viva Engage zaplanowanych oraz zaplanowanych zdarzeń usługi Stream lub wyświetlania na żądanie ze strumienia). Wydarzenia zaplanowane i wyprodukowane w usłudze Teams (w tym w ratuszu) nie mają wpływu.

Omówienie: tunelowanie podzielone sieci VPN dla platformy Microsoft 365

Implementowanie tunelowania podzielonego sieci VPN dla platformy Microsoft 365

Typowe scenariusze tunelowania podzielonego sieci VPN dla platformy Microsoft 365

Zabezpieczanie ruchu multimediów aplikacji Teams na potrzeby tunelowania podziału sieci VPN

Optymalizacja wydajności platformy Microsoft 365 dla chińskich użytkowników

Zasady łączności sieciowej platformy Microsoft 365

Ocena łączności sieciowej na platformie Microsoft 365

Dostrajanie sieci i wydajności platformy Microsoft 365

Alternatywne sposoby zapewniania przez specjalistów ds. zabezpieczeń i działów IT nowoczesnych mechanizmów kontroli zabezpieczeń w dzisiejszych unikatowych scenariuszach pracy zdalnej (blog zespołu ds. zabezpieczeń firmy Microsoft)

Zwiększanie wydajności sieci VPN w firmie Microsoft: używanie Windows 10 profilów sieci VPN do zezwalania na połączenia automatyczne

Uruchamianie w sieci VPN: Jak firma Microsoft utrzymuje połączenie ze swoimi zdalnymi pracownikami

Sieć globalna firmy Microsoft