VPN ortamlarında Teams olayları için özel dikkat edilmesi gerekenler

Not

Bu makale, uzak kullanıcılar için Microsoft 365 iyileştirmesini ele alan bir makale kümesinin parçasıdır.

Microsoft Teams Canlı etkinlikleri katılımcı trafiği (Teams tarafından üretilen canlı etkinliklere katılanları ve Teams veya Viva Engage aracılığıyla bir dış kodlayıcıyla üretilenleri içerir) ve Microsoft Teams Belediye Binası katılımcı trafiği şu anda hizmetin URL/IP listesindeVarsayılan ve İyileştir olarak kategorilere ayrılmıştır. Bu uç noktalar, diğer hizmetler tarafından da kullanılabilecek CDN'lerde barındırıldığından Varsayılan olarak kategorilere ayrılmıştır. Müşteriler genellikle bu tür trafiğe ara sunuculuk yapmak ve normalde bunlar gibi uç noktalara yapılan tüm güvenlik öğelerini uygulamayı tercih eder.

Birçok müşteri, yüksek hacimli ve gecikmeye duyarlı trafiği VPN altyapısı üzerinden yönlendirmek yerine Teams etkinliklerindeki katılımcılarını doğrudan yerel internet bağlantılarından bağlamak için gereken URL/IP verilerini istedi. Genellikle, hem ayrılmış ad alanları hem de uç noktalar için doğru IP bilgileri olmadan bu mümkün değildir. Bu bilgiler Varsayılan olarak kategorilere ayrılmış Microsoft 365 uç noktaları için sağlanmaz.

Zorlamalı tünel VPN kullanan istemcilerden Teams Olayları için katılımcı trafiği için doğrudan bağlantıyı belirlemek ve etkinleştirmek için aşağıdaki adımları kullanın. Bu çözüm, müşterilere evden çalışma senaryoları nedeniyle yüksek ağ trafiği varken katılımcı trafiğini VPN üzerinden yönlendirmekten kaçınma seçeneği sunmak için tasarlanmıştır. Mümkünse, hizmete inceleyen bir ara sunucu aracılığıyla erişmenizi öneririz.

Not

Bu çözümü kullanarak, sağlanan IP adreslerine çözümlanmayan ve bu nedenle VPN'de geçiş yapmayan hizmet öğeleri olabilir, ancak akış verileri gibi yüksek hacimli trafiğin toplu olması gerekir. Canlı Etkinlikler/Stream kapsamı dışında bu yükten yakalanan başka öğeler de olabilir, ancak doğrudan gitmeden önce hem FQDN hem de IP eşleşmesini karşılamaları gerektiğinden bunlar sınırlı olmalıdır.

Önemli

Teams Etkinlikleri için performans artışına göre VPN'i atlayan daha fazla trafik gönderme riskini tartmanızı öneririz.

Teams Olayları için zorlamalı tünel özel durumunu uygulamak için aşağıdaki adımların uygulanması gerekir:

1. Dış DNS çözümlemeyi yapılandırma

İstemcilerin, aşağıdaki ana bilgisayar adlarının IP adreslerine çözümlenebilmesi için dış, özyinelemeli DNS çözümlemesinin kullanılabilir olması gerekir.

Ticari bulut için:

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

*.media.azure.net ve *.bmc.cdn.office.net , Teams istemcisinden zamanlanan Teams tarafından üretilen Canlı Etkinlikler (Hızlı Başlangıç etkinlikleri ve desteklenen etkinlikler RTMP-In) için kullanılır.

*.media.azure.net, *.bmc.cdn.office.net ve *.ml.cdn.office.net Teams Belediye Binası etkinlikleri için kullanılır.

Not

Bu uç noktalardan bazıları Teams olaylarının dışındaki diğer öğelerle paylaşılır. VPN çözümünüzde teknik olarak mümkün olsa bile (örneğin, IP yerine ad alanıyla çalışıyorsa) VPN yükünü yapılandırmak için yalnızca bu ad alanlarını kullanmanızı önermeyiz.

Kamu bulutları için (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 ABD Kamu Topluluğu Bulutu'ndaki (GCC) Teams Belediye binası etkinlikleri için kullanılır.

*.cdn.ml.gov.teams.microsoft.us , Microsoft 365 U.S. Government GCC High Cloud'daki (GCC High) Teams Belediye binası etkinlikleri için kullanılır.

*.cdn.ml.dod.teams.microsoft.us , Microsoft 365 ABD Kamu DoD Bulutu'ndaki (DoD) Teams Belediye etkinlikleri için kullanılır.

FQDN'ler VPN yapılandırmasında gerekli değildir, yalnızca ILGILI trafiği doğrudan göndermek için IP'lerle birlikte PAC dosyalarında kullanılmak üzere kullanılır.

2. PAC dosyası değişikliklerini uygulama (gerektiğinde)

VPN'deyken trafiği bir ara sunucu üzerinden yönlendirmek için PAC dosyası kullanan kuruluşlarda bu normalde FQDN'ler kullanılarak gerçekleştirilir. Ancak Teams olaylarında sağlanan konak adları, Content Delivery Networks (CDN) tarafından kullanılan ve yalnızca Teams olay trafiği için kullanılmayan IP adreslerine çözümlenen joker karakterler içerir. Bu nedenle, istek yalnızca DNS joker karakteri eşleşmesine göre doğrudan gönderilirse, bu uç noktalara giden trafik engellenir çünkü bu makalenin 3. Adımında bu uç noktalar için doğrudan yol üzerinden bir yol yoktur.

Bunu çözmek için aşağıdaki IP'leri sağlayabilir ve bunları 1. Adımda açıklandığı gibi örnek bir PAC dosyasındaki konak adlarıyla birlikte kullanabiliriz. PAC dosyası, URL'nin Teams olayları için kullanılanlarla eşleşip eşleşmediğini denetler ve eşleşiyorsa, bir DNS aramasından döndürülen IP'nin hizmet için sağlananlarla eşleşip eşleşmediğini de denetler. Her ikisi de eşleşirse trafik doğrudan yönlendirilir. Herhangi bir öğe (FQDN/IP) eşleşmiyorsa, trafik ara sunucuya gönderilir. Sonuç olarak, yapılandırma hem IP hem de tanımlı ad alanlarının kapsamı dışında bir IP'ye çözümleyen her şeyin proxy'yi VPN üzerinden normal şekilde dolaşmasını sağlar.

GEÇERLI CDN Uç Noktaları listelerini toplama

Ticari bulut için Teams olayları müşterilere akış yapmak, en iyi kapsamı, kaliteyi ve dayanıklılığı sağlamak için birden çok CDN sağlayıcısı kullanır. Şu anda hem Microsoft'tan Azure CDN hem de Verizon'dan Azure CDN kullanılmaktadır. Zaman içinde bu durum bölgesel kullanılabilirlik gibi durumlardan dolayı değiştirilebilir. Bu makale, IP aralıklarında güncel kalmanızı sağlayan bir kaynaktır. Microsoft 365 ABD Kamu bulutları (GCC, GCC High ve DoD) için yalnızca Microsoft'tan Azure CDN kullanılır.

Ticari bulut için:

  • Microsoft'tan Azure CDN için, Resmi Microsoft İndirme Merkezi'nden Azure IP Aralıklarını ve Hizmet Etiketlerini – Genel Bulutu İndir - listesinden indirebilirsiniz; JSON'da özellikle hizmet etiketini AzureFrontdoor.Frontend aramanız gerekir; addressPrefixes , IPv4/IPv6 alt ağlarını gösterir. Zaman içinde IP'ler değişebilir, ancak hizmet etiketi listesi kullanılmadan önce her zaman güncelleştirilir.

  • Verizon'dan Azure CDN (Edgecast) için Edge Düğümleri - Liste ( Dene'yi seçin) kullanarak kapsamlı bir liste bulabilirsiniz; özellikle Premium_Verizon bölümüne bakmanız gerekir. Bu API'nin tüm Edgecast IP'lerini (origin ve Anycast) gösterdiğini unutmayın. Şu anda API'nin kaynak ile Anycast arasında ayrım yapma mekanizması yoktur.

Kamu bulutları için (GCC, GCC High ve DoD):

Aşağıdaki betik, Teams Etkinlikleri katılımcı trafiği için ad alanlarını ve IP listelerini içerecek bir PAC dosyası oluşturabilir. -Instance parametresi belirtilen ortamı belirler. Desteklenen değerler şunlardır: [Worldwide, USGov, USGovGCCHigh ve UsGovDoD]. İsteğe bağlı olarak betik, -Type parametresini kullanarak İyileştirme ve İzin Ver etki alanlarını da içerebilir.

Ticari bulut için örnek PAC dosyası oluşturma

Ticari bulut için PAC dosyasının nasıl oluşturulacağıyla ilgili bir örnek aşağıda verilmişti:

  1. Betiği yerel sabit diskinize Get-EventsPacFile.ps1olarak kaydedin.

  2. Verizon URL'sine gidin ve elde edilen JSON dosyasını indirin (kopyalayıp cdnedgenodes.json adlı bir dosyaya yapıştırın)

  3. Dosyayı betikle aynı klasöre yerleştirin.

  4. PowerShell penceresinde aşağıdaki komutu çalıştırın. Yalnızca İyileştir adlarını (İyileştir ve İzin Ver'i değil) istiyorsanız -Type parametresini İyileştir olarak değiştirin.

    .\Get-EventsPacFile.ps1 -Instance Worldwide -CdnEdgeNodesFilePath .\cdnedgenodes.json -Type OptimizeAndAllow -FilePath .\Commercial.pac
    
  5. Commercial.pac dosyası, Teams Etkinlikleri katılımcı trafiği için tüm ad alanlarını ve IP'leri (IPv4/IPv6) içerir.

Microsoft 365 ABD Kamu Topluluk Bulutu (GCC) için örnek PAC dosyası oluşturma

GCC ortamı için PAC dosyasının nasıl oluşturulacağıyla ilgili bir örnek aşağıda verilmiştir:

  1. Betiği yerel sabit diskinize Get-EventsPacFile.ps1olarak kaydedin.

  2. PowerShell penceresinde aşağıdaki komutu çalıştırın. Yalnızca İyileştir adlarını (İyileştir ve İzin Ver'i değil) istiyorsanız -Type parametresini İyileştir olarak değiştirin.

    .\Get-EventsPacFile.ps1 -Instance UsGov -Type OptimizeAndAllow -FilePath .\USGov.pac
    
  3. USGov.pac dosyası, Teams Belediye binası katılımcı trafiği için GCC buluta özgü tüm ad alanlarını ve IP'leri (IPv4/IPv6) içerir.

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
}

Betik, Uygun Azure CDN listesini AzureFrontDoor.Frontend'inÖrnek parametre değerine ve anahtarlarına göre otomatik olarak ayrıştırır, bu nedenle el ile almanız gerekmez.

Yine yalnızca FQDN'leri kullanarak VPN boşaltması gerçekleştirmenizi önermiyoruz; işlevindeki hem FQDN'lerin hem de IP adreslerinin kullanılması, bu yük boşaltmanın kapsamını Teams Olayları da dahil olmak üzere sınırlı bir uç nokta kümesiyle sınırlandırmaya yardımcı olur. İşlevin yapılandırılma şekli, FQDN için istemci tarafından doğrudan listelenenlerle eşleşen bir DNS araması yapılmasına neden olur; diğer bir deyişle, kalan ad alanlarının DNS çözümlemesi değişmeden kalır.

3. Doğrudan çıkışı etkinleştirmek için VPN'de yönlendirmeyi yapılandırma

Son adım, trafiğin zorlamalı tünel üzerinden VPN'ye gönderilmediğinden emin olmak için GEÇERLI CDN Uç Noktaları listelerini VPN yapılandırmasına toplama bölümünde açıklanan Teams olay IP'leri için doğrudan bir yol eklemektir. Microsoft 365 İyileştirme uç noktaları için bunun nasıl gerçekleştirileceğine ilişkin ayrıntılı bilgi, Microsoft 365 için VPN bölünmüş tünel uygulama'nın VPN bölünmüş tüneli uygulama bölümünde bulunabilir. Bu işlem, bu belgede listelenen Teams olay IP'leri için tamamen aynıdır.

Not

VPN yapılandırması için yalnızca GEÇERLI CDN Uç Noktaları listelerini toplamadaki IP'ler (FQDN'ler değil) kullanılmalıdır.

SSS

Bu işlem tüm trafiğimi doğrudan hizmete gönderir mi?

Hayır, bu bir Teams Etkinliği katılımcısı doğrudan için gecikmeye duyarlı akış trafiği gönderir; yayımlanan IP'lere çözümlenmezse diğer tüm trafik VPN tünelini kullanmaya devam eder.

IPv6 Adreslerini kullanmam gerekiyor mu?

Hayır, bağlantı yalnızca gerektiğinde IPv4 olabilir.

Bu IP'ler neden Microsoft 365 URL/IP hizmetinde yayımlanmaz?

Microsoft, müşterilerin uç nokta kategorisine göre güvenli ve en iyi yönlendirmeyi uygulamak için bilgileri güvenilir bir şekilde kullanabilmesini sağlamak için hizmetteki bilgilerin biçimi ve türüyle ilgili sıkı denetimlere sahiptir.

Varsayılan uç nokta kategorisinde çok sayıda nedenden dolayı IP bilgisi sağlanmadı (Varsayılan uç noktalar Microsoft'un denetiminin dışında olabilir, çok sık değişebilir veya diğer öğelerle paylaşılan bloklarda olabilir). Bu nedenle Varsayılan uç noktalar, normal web trafiği gibi FQDN aracılığıyla incelenen bir ara sunucuya gönderilecek şekilde tasarlanmıştır.

Bu durumda, yukarıdaki uç noktalar Teams Olayları dışında Microsoft tarafından denetlenmeyen öğeler tarafından kullanılabilecek CDN'lerdir ve bu nedenle trafiğin doğrudan gönderilmesi, bu IP'leri çözümleyen başka bir şeyin de istemciden doğrudan gönderileceği anlamına gelir. Mevcut küresel krizin benzersiz doğası ve müşterilerimizin kısa vadeli ihtiyaçlarını karşılamak için Microsoft, müşterilerin uygun gördükleri şekilde kullanabilmeleri için yukarıdaki bilgileri sağlamıştır.

Microsoft, Teams olay uç noktalarını gelecekte uç nokta kategorilerine dahil edilebilmeleri için yeniden yapılandırmaya çalışmaktadır.

Yalnızca bu IP'lere erişime izin vermem mi gerekiyor?

Hayır, hizmetin çalışması için uygun ortam için gerekli işaretli uç noktaların tümüne erişim önemlidir.

Bu öneri hangi senaryoları kapsar?

  1. Teams Uygulamasında oluşturulan canlı etkinlikler
  2. Harici cihaz (kodlayıcı) tarafından üretilen olaylar
  3. Teams Belediye Binası

Bu öneri sunucu trafiğini kapsıyor mu?

Öyle değil; yukarıdaki tavsiyeler yalnızca etkinliğe katılanlara yöneliktir. Teams'in içinden sunum yapılırken sunucunun url/IP hizmeti satırı 11'de listelenen İşaretli UDP uç noktalarına akan trafiği ve Microsoft 365 için VPN bölünmüş tüneli uygulama bölümündeki AYRıNTıLı VPN boşaltma önerisi gösterilir.

Genel bakış: Microsoft 365 için VPN bölünmüş tüneli

Microsoft 365 için VPN bölünmüş tüneli uygulama

Microsoft 365 için yaygın VPN bölünmüş tünel senaryoları

VPN bölünmüş tüneli için Teams medya trafiğinin güvenliğini sağlama

Çin kullanıcıları için Microsoft 365 performans iyileştirmesi

Microsoft 365 Ağ Bağlantı İlkeleri

Microsoft 365 ağ bağlantısını değerlendirme

Microsoft 365 ağ ve performans ayarlama

Günümüzün benzersiz uzaktan çalışma senaryolarında modern güvenlik denetimleri elde etmek için güvenlik uzmanları ve BT için alternatif yollar (Microsoft Güvenlik Ekibi blogu)

Microsoft'ta VPN performansını geliştirme: otomatik bağlantılara izin vermek için Windows 10 VPN profillerini kullanma

VPN üzerinde çalıştırma: Microsoft uzak iş gücünü nasıl bağlı tutuyor?

Microsoft küresel ağı