Delen via


Speciale overwegingen voor Teams-gebeurtenissen in VPN-omgevingen

Opmerking

Dit artikel maakt deel uit van een reeks artikelen over Microsoft 365-optimalisatie voor externe gebruikers.

Deelnemersverkeer van Microsoft Teams Live-gebeurtenissen (dit omvat deelnemers aan door Teams geproduceerde livegebeurtenissen en deelnemers die zijn geproduceerd met een externe encoder via Teams of Viva Engage) en verkeer van deelnemers in het stadhuis van Microsoft Teams is momenteel gecategoriseerd als Standaard versus Optimaliseren in de URL/IP-lijst voor de service. Deze eindpunten worden gecategoriseerd als Standaard omdat ze worden gehost op CDN's die ook door andere services kunnen worden gebruikt. Klanten geven er over het algemeen de voorkeur aan om dit type verkeer te proxyen en alle beveiligingselementen toe te passen die normaal gesproken worden uitgevoerd op eindpunten zoals deze.

Veel klanten hebben gevraagd om URL/IP-gegevens die nodig zijn om hun deelnemers in Teams-gebeurtenissen rechtstreeks vanuit hun lokale internetverbinding te verbinden, in plaats van het verkeer met hoog volume en latentie te routeren via de VPN-infrastructuur. Dit is meestal niet mogelijk zonder zowel toegewezen naamruimten als nauwkeurige IP-informatie voor de eindpunten, die niet is opgegeven voor Microsoft 365-eindpunten die zijn gecategoriseerd als Standaard.

Gebruik de volgende stappen om directe connectiviteit te identificeren en in te schakelen voor deelnemersverkeer voor Teams-gebeurtenissen van clients die gebruikmaken van een geforceerd tunnel-VPN. Deze oplossing is bedoeld om klanten een optie te bieden om te voorkomen dat deelnemersverkeer wordt omgeleid via VPN terwijl er veel netwerkverkeer is vanwege scenario's voor thuiswerk. Indien mogelijk raden we u aan de service te openen via een controlerende proxy.

Opmerking

Als u deze oplossing gebruikt, zijn er mogelijk service-elementen die niet worden omgezet in de opgegeven IP-adressen en dus de VPN-verbinding doorkruisen, maar het grootste deel van het verkeer met grote volumes, zoals streaminggegevens, moet dat wel doen. Er kunnen andere elementen buiten het bereik van livegebeurtenissen/Stream zijn die worden ondervangen door deze offload, maar deze moeten beperkt zijn omdat ze moeten voldoen aan zowel de FQDN als de IP-overeenkomst voordat u direct gaat.

Belangrijk

We raden u aan om het risico af te wegen dat meer verkeer verzendt dat de VPN overbrugt via de prestatieverbetering voor Teams-gebeurtenissen.

Als u de uitzondering voor geforceerde tunnels voor Teams-gebeurtenissen wilt implementeren, moet u de volgende stappen toepassen:

1. Externe DNS-resolutie configureren

Clients moeten externe, recursieve DNS-omzetting beschikbaar zijn, zodat de volgende hostnamen kunnen worden omgezet in IP-adressen.

Voor de commerciële cloud:

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

*.media.azure.net en *.bmc.cdn.office.net worden gebruikt voor door Teams geproduceerde livegebeurtenissen (snelstartgebeurtenissen en RTMP-In ondersteunde gebeurtenissen) die zijn gepland vanuit de Teams-client.

*.media.azure.net, *.bmc.cdn.office.net en *.ml.cdn.office.net worden gebruikt voor Teams Town Hall-evenementen.

Opmerking

Sommige van deze eindpunten worden gedeeld met andere elementen buiten Teams-gebeurtenissen. We raden u niet alleen aan deze naamruimten te gebruiken om VPN-offload te configureren, zelfs als dit technisch mogelijk is in uw VPN-oplossing (bijvoorbeeld als deze werkt met de naamruimte in plaats van ip).

Voor de 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 wordt gebruikt voor Teams Town Hall-evenementen in de Microsoft 365 U.S. Government Community Cloud (GCC).

*.cdn.ml.gov.teams.microsoft.us wordt gebruikt voor Teams Town Hall-evenementen in de Microsoft 365 U.S. Government GCC High Cloud (GCC High).

*.cdn.ml.dod.teams.microsoft.us wordt gebruikt voor Teams Town Hall-evenementen in de Microsoft 365 U.S. Government DoD Cloud (DoD).

FQDN's zijn niet vereist in de VPN-configuratie, ze zijn uitsluitend voor gebruik in PAC-bestanden in combinatie met de IP-adressen om het relevante verkeer direct te verzenden.

2. Pac-bestandswijzigingen implementeren (indien nodig)

Voor organisaties die gebruikmaken van een PAC-bestand om verkeer via een proxy te routeren terwijl ze een VPN gebruiken, wordt dit normaal gesproken bereikt met behulp van FQDN's. Bij Teams-gebeurtenissen bevatten de opgegeven hostnamen echter jokertekens die worden omgezet in IP-adressen die worden gebruikt door CDN's (Content Delivery Networks) die niet uitsluitend worden gebruikt voor teams-gebeurtenisverkeer. Als de aanvraag dus direct wordt verzonden op basis van dns-jokertekenovereenkomst, wordt verkeer naar deze eindpunten geblokkeerd omdat er geen route via het directe pad hiervoor is in stap 3 verderop in dit artikel.

Om dit op te lossen, kunnen we de volgende IP-adressen opgeven en deze gebruiken in combinatie met de hostnamen in een voorbeeld-PAC-bestand, zoals beschreven in stap 1. Het PAC-bestand controleert of de URL overeenkomt met de URL die wordt gebruikt voor Teams-gebeurtenissen en als dat het geval is, wordt vervolgens ook gecontroleerd of het IP-adres dat wordt geretourneerd door een DNS-zoekopdracht overeenkomt met het IP-adres dat voor de service is opgegeven. Als beide overeenkomen, wordt het verkeer direct gerouteerd. Als een van de elementen (FQDN/IP) niet overeenkomt, wordt het verkeer naar de proxy verzonden. Als gevolg hiervan zorgt de configuratie ervoor dat alles wat wordt omgezet naar een IP buiten het bereik van zowel het IP-adres als de gedefinieerde naamruimten, de proxy via de VPN passeert zoals normaal.

De huidige lijsten met CDN-eindpunten verzamelen

Voor de commerciële cloud gebruiken Teams-gebeurtenissen meerdere CDN-providers om te streamen naar klanten, om de beste dekking, kwaliteit en tolerantie te bieden. Momenteel worden zowel Azure CDN van Microsoft als Azure CDN van Verizon gebruikt. In de loop van de tijd kan dit worden gewijzigd vanwege situaties zoals regionale beschikbaarheid. Dit artikel is een bron waarmee u op de hoogte kunt blijven van IP-bereiken. Voor de Microsoft 365 U.S. Government-clouds (GCC, GCC High en DoD) wordt alleen Azure CDN van Microsoft gebruikt.

Voor de commerciële cloud:

  • Voor Azure CDN van Microsoft kunt u de lijst downloaden van Azure IP-bereiken en servicetags downloaden - Openbare cloud van het officiële Microsoft Downloadcentrum . U moet specifiek zoeken naar de servicetag AzureFrontdoor.Frontend in de JSON; addressPrefixes geeft de IPv4-/IPv6-subnetten weer. Na verloop van tijd kunnen de IP-adressen worden gewijzigd, maar de lijst met servicetags wordt altijd bijgewerkt voordat ze in gebruik worden gesteld.

  • Voor Azure CDN van Verizon (Edgecast) kunt u een volledige lijst vinden met behulp van Edge-knooppunten - Lijst (selecteer Uitproberen ). U moet specifiek zoeken naar de sectie Premium_Verizon . Houd er rekening mee dat deze API alle Edgecast-IP-adressen (origin en Anycast) weergeeft. Er is momenteel geen mechanisme voor de API om onderscheid te maken tussen origin en Anycast.

Voor de Government-clouds(GCC, GCC High en DoD):

Met het volgende script kan een PAC-bestand worden gegenereerd met de naamruimten en IP-vermeldingen voor het deelnemersverkeer van Teams-gebeurtenissen. De parameter -Instance bepaalt de opgegeven omgeving. De ondersteunde waarden zijn [Worldwide, USGov, USGovGCCHigh en UsGovDoD]. Optioneel kan het script ook de domeinen Optimaliseren en Toestaan bevatten, evenals de parameter -Type .

Voorbeeld van PAC-bestandsgeneratie voor de commerciële cloud

Hier volgt een voorbeeld van het genereren van het PAC-bestand voor de commerciële cloud:

  1. Sla het script op de lokale harde schijf op als Get-EventsPacFile.ps1.

  2. Ga naar de Verizon-URL en download de resulterende JSON (kopieer deze in een bestand met de naam cdnedgenodes.json)

  3. Plaats het bestand in dezelfde map als het script.

  4. Voer in een PowerShell-venster de volgende opdracht uit. Als u alleen de namen van Optimaliseren (en niet Optimaliseren en Toestaan) wilt gebruiken, wijzigt u de parameter -Type in Optimaliseren.

    .\Get-EventsPacFile.ps1 -Instance Worldwide -CdnEdgeNodesFilePath .\cdnedgenodes.json -Type OptimizeAndAllow -FilePath .\Commercial.pac
    
  5. Het bestand Commercial.pac bevat alle naamruimten en IP-adressen (IPv4/IPv6) voor deelnemersverkeer van Teams-gebeurtenissen.

Voorbeeld van HET genereren van PAC-bestanden voor de Microsoft 365 U.S. Government Community Cloud (GCC)

Hier volgt een voorbeeld van het genereren van het PAC-bestand voor de GCC-omgeving:

  1. Sla het script op de lokale harde schijf op als Get-EventsPacFile.ps1.

  2. Voer in een PowerShell-venster de volgende opdracht uit. Als u alleen de namen van Optimaliseren (en niet Optimaliseren en Toestaan) wilt gebruiken, wijzigt u de parameter -Type in Optimaliseren.

    .\Get-EventsPacFile.ps1 -Instance UsGov -Type OptimizeAndAllow -FilePath .\USGov.pac
    
  3. Het bestand USGov.pac bevat alle naamruimten en IP-adressen (IPv4/IPv6) die specifiek zijn voor de GCC-cloud voor deelnemersverkeer van Teams Town Hall.

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
}

Het script parseert automatisch de juiste Azure CDN-lijst op basis van de parameterwaarde van het exemplaar en sleutels van AzureFrontDoor.Frontend, dus u hoeft deze niet handmatig op te halen.

Nogmaals, we raden niet aan om VPN-offload uit te voeren met alleen de FQDN's; Door zowel de FQDN's als de IP-adressen in de functie te gebruiken, kunt u het gebruik van deze offload beperken tot een beperkte set eindpunten, waaronder Teams-gebeurtenissen. De manier waarop de functie is gestructureerd, leidt ertoe dat er een DNS-zoekopdracht wordt uitgevoerd voor de FQDN die rechtstreeks overeenkomt met de dns-resolutie van de resterende naamruimten.

3. Routering configureren op de VPN om direct uitgaand verkeer in te schakelen

De laatste stap is het toevoegen van een directe route voor de Teams-gebeurtenis-IP's die worden beschreven in De huidige lijsten met CDN-eindpunten verzamelen in de VPN-configuratie om ervoor te zorgen dat het verkeer niet via de geforceerde tunnel naar het VPN wordt verzonden. Gedetailleerde informatie over hoe u dit doet voor Microsoft 365 Optimize-eindpunten vindt u in de sectie Vpn-gesplitste tunneling implementeren in Vpn-split tunneling implementeren voor Microsoft 365. Het proces is precies hetzelfde voor de IP-adressen van Teams-gebeurtenissen die in dit document worden vermeld.

Opmerking

Alleen de IP's (geen FQDN's) van Het verzamelen van de huidige lijsten met CDN-eindpunten moeten worden gebruikt voor VPN-configuratie.

Veelgestelde vragen

Wordt al mijn verkeer rechtstreeks naar de service verzonden?

Nee, hierdoor wordt het latentiegevoelige streamingverkeer voor een deelnemer aan een Teams-gebeurtenis direct verzonden. Alle andere verkeer blijft de VPN-tunnel gebruiken als het niet wordt omgezet naar de gepubliceerde IP-adressen.

Moet ik de IPv6-adressen gebruiken?

Nee, de connectiviteit kan alleen IPv4 zijn als dat nodig is.

Waarom worden deze IP-adressen niet gepubliceerd in de Microsoft 365 URL/IP-service?

Microsoft heeft strikte controles voor de indeling en het type informatie in de service om ervoor te zorgen dat klanten de informatie betrouwbaar kunnen gebruiken om veilige en optimale routering te implementeren op basis van eindpuntcategorie.

De categorie Standaardeindpunt bevat om verschillende redenen geen IP-informatie (standaardeindpunten kunnen buiten de controle van Microsoft staan, kunnen te vaak worden gewijzigd of bevinden zich in blokken die worden gedeeld met andere elementen). Daarom zijn standaardeindpunten ontworpen om via FQDN te worden verzonden naar een controlerende proxy, zoals normaal webverkeer.

In dit geval zijn de bovenstaande eindpunten CDN's die kunnen worden gebruikt door niet-Door Microsoft beheerde elementen dan Teams-gebeurtenissen, en dus betekent het verzenden van het verkeer direct ook dat alles wat naar deze IP-adressen wordt omgezet, ook rechtstreeks vanuit de client wordt verzonden. Vanwege de unieke aard van de huidige wereldwijde crisis en om te voldoen aan de kortetermijnbehoeften van onze klanten, heeft Microsoft de bovenstaande informatie verstrekt voor klanten die ze naar eigen goeddunken kunnen gebruiken.

Microsoft werkt aan het opnieuw configureren van de eindpunten voor Teams-gebeurtenissen, zodat deze in de toekomst kunnen worden opgenomen in de eindpuntcategorieën Toestaan/optimaliseren.

Moet ik alleen toegang tot deze IP-adressen toestaan?

Nee, toegang tot alle vereiste gemarkeerde eindpunten voor de juiste omgeving is essentieel voor de werking van de service.

Welke scenario's worden in dit advies behandeld?

  1. Livegebeurtenissen geproduceerd in de Teams-app
  2. Gebeurtenissen die zijn geproduceerd door extern apparaat (encoder)
  3. Teams Stadhuis

Heeft dit advies betrekking op het verkeer van presentatoren?

Dat is niet zo; het bovenstaande advies is uitsluitend bedoeld voor de deelnemers aan het evenement. Als u vanuit Teams presenteert, stroomt het verkeer van de presentator naar de UDP-eindpunten optimaliseren die worden vermeld in URL/IP-servicerij 11, met gedetailleerd advies over VPN-offloads dat wordt beschreven in de sectie VPN-gesplitste tunneling implementeren van Vpn-gesplitste tunneling implementeren voor Microsoft 365.

Overzicht: VPN split tunneling voor Microsoft 365

VPN split tunneling implementeren voor Microsoft 365

Veelvoorkomende scenario's voor vpn-split tunneling voor Microsoft 365

Teams-mediaverkeer beveiligen voor gesplitste VPN-tunneling

Microsoft 365-prestatieoptimalisatie voor China-gebruikers

Microsoft 365-netwerkconnectiviteitsprincipes

Microsoft 365-netwerkverbindingen evalueren

Microsoft 365-netwerk en prestaties afstemmen

Alternatieve manieren voor beveiligingsprofessionals en IT om moderne beveiligingscontroles te realiseren in de huidige unieke scenario's voor extern werken (Microsoft Security Team-blog)

VPN-prestaties bij Microsoft verbeteren: Windows 10 VPN-profielen gebruiken om automatische verbindingen toe te staan

Uitvoeren op VPN: hoe Microsoft zijn externe werknemers verbonden houdt

Wereldwijd netwerk van Microsoft