Zarządzanie punktami końcowymi usługi Office 365

Łączność sieciowa usługi Office 365

2018-03-08 Połączenia z usługą Office 365 składają się z dużej liczby zaufanych żądań sieciowych, których realizacja przebiega najlepiej, gdy są wykonywane za pośrednictwem punktów wyjściowych o małych opóźnieniach znajdujących się w pobliżu użytkownika. W przypadku niektórych połączeń usługi Office 365 korzystna jest ich optymalizacja.

  1. Upewnij się, że na listach dozwolonych Twojej zapory znajdują się połączenia z punktami końcowymi usługi Office 365.

  2. Używając infrastruktury swojego serwera proxy, zezwól na połączenia internetowe z wieloznacznymi i niepublikowanymi miejscami docelowymi.

  3. Utrzymaj optymalną konfigurację sieci obwodowej.

  4. Upewnij się, że uzyskujesz najlepszą łączność.

  5. Przeczytaj Zasady łączności sieciowej usługi Office 365, aby zrozumieć zasady łączności w celu bezpiecznego zarządzania ruchem usługi Office 365 i uzyskiwania najlepszej możliwej wydajności.

Łączenie się z usługą Office 365 przez zapory i serwery proxy.

Aktualizowanie list dozwolonych ruchu wychodzącego zapory

Możesz zoptymalizować sieć, wysyłając wszystkie zaufane żądania sieciowe usługi Office 365 bezpośrednio przez zaporę z pominięciem wszelkiego dodatkowego przetwarzania i sprawdzania na poziomie pakietów. Przyspiesza to działanie dzięki redukcji opóźnień i zmniejsza wymagania dotyczące pojemności sieci obwodowej. Najprostszym sposobem wybrania zaufanych żądań sieciowych jest użycie gotowych plików PAC, co zostało opisane na powyższej karcie Serwery proxy.

Jeśli zapora blokuje ruch wychodzący, warto mieć pewność, że wszystkie adresy IP i nazwy FQDN wymienione jako Wartość wymagana w tym pliku XML znajdują się na liście dozwolonych. Pamiętaj, że wszystkie usługi wymagają użycia usług innych dostawców. Nie podajemy adresów IP tych usług innych dostawców, takich jak na przykład dostawcy certyfikatów, sieci dostarczania zawartości czy dostawcy DNS. Aby uzyskać pełną funkcjonalność usługi Office 365, należy nawiązać połączenie ze wszystkimi miejscami docelowymi wymaganymi przez usługę Office 365, niezależnie od tego, ile informacji publikujemy na temat danego miejsca docelowego.

Wiele miejsc docelowych nie ma opublikowanego adresu IP lub jest wymienianych jako domena wieloznaczna bez określonej w pełni kwalifikowanej nazwy domeny. Aby korzystać z tej funkcji, należy przetłumaczyć te żądania sieciowe na bieżący żądany adres IP i wysłać dane żądanie sieciowe przez Internet.

Zautomatyzuj proces przy użyciu zapory, która analizuje plik XML w Twoim imieniu i automatycznie aktualizuje reguły na podstawie usług lub funkcji, które planujesz kierować bezpośrednio przez swoją zaporę. Możesz też użyć narzędzia Azure Range skompilowanego przez społeczność, które analizuje plik XML z opcjami eksportu do usługi Cisco XE Route lub konfiguracji listy ACL, zwykłego tekstu albo pliku CSV.

Obszerniejsze wyjaśnienia dotyczące miejsc docelowych w sieci są dostępne na naszej witrynie referencyjnej oraz w opartym na kanale informacyjnym RSS dzienniku zmian, umożliwiającym subskrybowanie zmian.

Konfigurowanie ścieżek ruchu wychodzącego za pomocą plików PAC

Pliki PAC lub WPAD umożliwiają zarządzanie żądaniami sieciowymi, które są skojarzone z usługą Office 365, ale nie mają podanych adresów IP. Zazwyczaj żądania sieciowe wysyłane za pośrednictwem serwera proxy lub urządzenia obwodowego wnoszą dodatkowe opóźnienia. Podczas gdy uwierzytelnianie serwera proxy generuje największe obciążenie, inne usługi, takie jak wyszukiwanie reputacji i próby sprawdzania pakietów, mogą powodować słabe działanie środowiska użytkownika. Ponadto te urządzenia sieci obwodowej muszą mieć pojemność wystarczającą do przetwarzania wszystkich żądań sieciowych. Zalecamy pomijanie serwera proxy lub infrastruktury inspekcji w przypadku bezpośrednich żądań sieciowych usługi Office 365.

Użyj jednego z naszych plików PAC jako punktu wyjścia, umożliwiającego określenie ruchu sieciowego wysyłanego do serwera proxy i ruchu sieciowego wysyłanego do zapory. Jeśli nie masz doświadczenia w używaniu plików PAC lub WPAD, przeczytaj ten wpis dotyczący wdrażania plików PAC, utworzony przez jednego z naszych konsultantów usługi Office 365. Potraktuj te dane jako punkt wyjścia i dopasuj je do swojego środowiska.

Aktualizacja plików PAC: 12/06/2018.

Pierwszy przykład przedstawia zalecane przez nas podejście do zarządzania punktami końcowymi tylko przez Internet. W przypadku miejsc usługi Office 365, których adresy IP zostały opublikowane, serwer proxy jest pomijany, a pozostałe żądania sieciowe są wysyłane do serwera proxy.

Fragment kodu:

// JavaScript source code

//July 2018 - Updates go live 1st August2018
//This PAC file contains all FQDNs needed for all services and splits the traffic between those which Microsoft can provide IPs for (so can be sent through a managed firewall with conditional access if desired) and those which IPs cannot be provided for, so need to go to an unrestricted proxy or egress. 
//Due to the use of wildcards, some extra logic is provided to send traffic to the proxy before a 'direct' wildcard is hit.
//Includes Core ProPlus URLs but not Office Mobile/IPAD/IOS/ANDROID fqdns from https://support.office.com/en-gb/article/Network-requests-in-Office-365-ProPlus-eb73fcd1-ca88-4d02-a74b-2dd3a9f3364d
//Every Effort is made to ensure 100% accuracy but this PAC should be used as an example and cross-checked with your needs and the Office 365 URL & IP page
//Intended only for Worldwide Office 365 instances, which the vast majority of customers will be using

function FindProxyForURL(url, host)
{
    // Define proxy server
    var proxyserver = "PROXY 10.10.10.10:8080";
    var proxyserver2 = "PROXY 10.10.10.11:8080";
    // Make host lowercase
    var lhost = host.toLowerCase();
    host = lhost;

    //Catch explicit FQDNs which need the proxy but are covered under wildcarded FQDNs which have IPs. This has to be done first before the wildcard is hit

    if ((shExpMatch(host, "quicktips.skypeforbusiness.com"))    
        || (shExpMatch(host, "*.um.outlook.com"))
        || (shExpMatch(host, "r3.res.office365.com"))
        || (shExpMatch(host, "r3.res.outlook.com"))
        || (shExpMatch(host, "r4.res.office365.com"))
        || (shExpMatch(host, "xsi.outlook.com"))
        || (shExpMatch(host, "r1.res.office365.com")))


    {
        return proxyserver;
    }
        //Send FQDNs which Microsoft provide IPs for direct, so they can be sent via a firewall

    else if ((isPlainHostName(host))
    || (shExpMatch(host, "*.aria.microsoft.com"))    
    || (shExpMatch(host, "*.dc.trouter.io"))
    || (shExpMatch(host, "*.lync.com"))
    || (shExpMatch(host, "*.manage.office.com"))
    || (shExpMatch(host, "*.office365.com"))
    || (shExpMatch(host, "*.onenote.com"))
    || (shExpMatch(host, "*.outlook.com"))
    || (shExpMatch(host, "*.outlook.office.com"))
    || (shExpMatch(host, "*.portal.cloudappsecurity.com"))
    || (shExpMatch(host, "*.protection.office.com"))
    || (shExpMatch(host, "*.sharepoint.com"))
    || (shExpMatch(host, "*.skype.com"))
    || (shExpMatch(host, "*.skypeforbusiness.com"))
    || (shExpMatch(host, "*.svc.ms"))
    || (shExpMatch(host, "*.teams.microsoft.com"))
    || (shExpMatch(host, "*.yammer.com"))
    || (shExpMatch(host, "*.yammerusercontent.com"))    
    || (shExpMatch(host, "*broadcast.officeapps.live.com"))
    || (shExpMatch(host, "*excel.officeapps.live.com"))
    || (shExpMatch(host, "*onenote.officeapps.live.com"))
    || (shExpMatch(host, "*powerpoint.officeapps.live.com"))
    || (shExpMatch(host, "*view.officeapps.live.com"))
    || (shExpMatch(host, "*visio.officeapps.live.com"))
    || (shExpMatch(host, "*word-edit.officeapps.live.com"))
    || (shExpMatch(host, "*word-view.officeapps.live.com"))
    || (shExpMatch(host, "admin.microsoft.com"))    
    || (shExpMatch(host, "account.office.net"))
    || (shExpMatch(host, "adminwebservice.microsoftonline.com"))
    || (shExpMatch(host, "agent.office.net"))
    || (shExpMatch(host, "api.login.microsoftonline.com"))
    || (shExpMatch(host, "api.passwordreset.microsoftonline.com"))
    || (shExpMatch(host, "apc.delve.office.com"))
    || (shExpMatch(host, "aus.delve.office.com"))
    || (shExpMatch(host, "autologon.microsoftazuread-sso.com"))  
    || (shExpMatch(host, "becws.microsoftonline.com"))
    || (shExpMatch(host, "browser.pipe.aria.microsoft.com"))  
    || (shExpMatch(host, "can.delve.office.com"))
    || (shExpMatch(host, "ccs.login.microsoftonline.com"))
    || (shExpMatch(host, "ccs-sdf.login.microsoftonline.com"))
    || (shExpMatch(host, "clientconfig.microsoftonline-p.net"))
    || (shExpMatch(host, "clientlog.portal.office.com"))
    || (shExpMatch(host, "companymanager.microsoftonline.com"))
    || (shExpMatch(host, "cus-000.tasks.osi.office.net"))
    || (shExpMatch(host, "delve.office.com"))
    || (shExpMatch(host, "device.login.microsoftonline.com"))    
    || (shExpMatch(host, "ea-000.tasks.osi.office.net"))
    || (shExpMatch(host, "eur.delve.office.com"))
    || (shExpMatch(host, "eus-zzz.tasks.osi.office.net"))
    || (shExpMatch(host, "gbr.delve.office.com"))    
    || (shExpMatch(host, "hip.microsoftonline-p.net"))
    || (shExpMatch(host, "hipservice.microsoftonline.com"))
    || (shExpMatch(host, "home.office.com"))
    || (shExpMatch(host, "ind.delve.office.com"))
    || (shExpMatch(host, "jpn.delve.office.com"))
    || (shExpMatch(host, "kor.delve.office.com"))
    || (shExpMatch(host, "lam.delve.office.com"))
    || (shExpMatch(host, "login.microsoft.com"))
    || (shExpMatch(host, "login.microsoftonline.com"))
    || (shExpMatch(host, "login.microsoftonline-p.com"))
    || (shExpMatch(host, "login.windows.net"))
    || (shExpMatch(host, "logincert.microsoftonline.com"))
    || (shExpMatch(host, "loginex.microsoftonline.com"))
    || (shExpMatch(host, "login-us.microsoftonline.com"))     
    || (shExpMatch(host, "manage.office.com"))
    || (shExpMatch(host, "mobile.pipe.aria.microsoft.com"))
    || (shExpMatch(host, "nam.delve.office.com"))
    || (shExpMatch(host, "neu-000.tasks.osi.office.net"))
    || (shExpMatch(host, "nexus.microsoftonline-p.com"))
    || (shExpMatch(host, "nexus.officeapps.live.com"))
    || (shExpMatch(host, "nexusrules.officeapps.live.com"))
    || (shExpMatch(host, "office.live.com"))
    || (shExpMatch(host, "officeapps.live.com"))
    || (shExpMatch(host, "passwordreset.microsoftonline.com"))
    || (shExpMatch(host, "portal.microsoftonline.com"))
    || (shExpMatch(host, "portal.office.com"))
    || (shExpMatch(host, "protection.office.com"))
    || (shExpMatch(host, "provisioningapi.microsoftonline.com"))
    || (shExpMatch(host, "scsinstrument-ss-us.trafficmanager.net"))   
    || (shExpMatch(host, "scsquery-ss-asia.trafficmanager.net")) 
    || (shExpMatch(host, "scsquery-ss-eu.trafficmanager.net")) 
    || (shExpMatch(host, "scsquery-ss-us.trafficmanager.net"))
    || (shExpMatch(host, "sea-000.tasks.osi.office.net"))    
    || (shExpMatch(host, "stamp2.login.microsoftonline.com"))
    || (shExpMatch(host, "suite.office.net"))    
    || (shExpMatch(host, "tasks.office.com"))
    || (shExpMatch(host, "teams.microsoft.com"))
    || (shExpMatch(host, "testconnectivity.microsoft.com"))
    || (shExpMatch(host, "webshell.suite.office.com"))
    || (shExpMatch(host, "weu-000.tasks.osi.office.net"))
    || (shExpMatch(host, "wus-000.tasks.osi.office.net"))
    || (shExpMatch(host, "www.office.com")))

      
    {
        return "DIRECT";
    }
    else

        // Send all unknown IP traffic to Proxy for unrestricted access. This section is not necessary if you have a catchall for all other traffic to go to an unfiltered proxy. 
        //However the fqdns required, but for which we dont have IPs for, are listed here incase you need an explicit list.

   if          ((shExpMatch(host, "*.aadrm.com"))
        || (shExpMatch(host, "*.adhybridhealth.azure.com")) 
        || (shExpMatch(host, "*.adl.windows.com"))   
        || (shExpMatch(host, "*.api.microsoftstream.com"))      
        || (shExpMatch(host, "*.assets-yammer.com"))   
        || (shExpMatch(host, "*.azureedge.net"))            
        || (shExpMatch(host, "*.azurerms.com"))
        || (shExpMatch(host, "*.cloudapp.net"))
        || (shExpMatch(host, "*.entrust.net")) 
        || (shExpMatch(host, "*.geotrust.com"))   
        || (shExpMatch(host, "*.helpshift.com"))   
        || (shExpMatch(host, "*.hockeyapp.net"))    
        || (shExpMatch(host, "*.localytics.com"))    
        || (shExpMatch(host, "*.log.optimizely.com"))    
        || (shExpMatch(host, "*.microsoft.com"))
        || (shExpMatch(host, "*.microsoftonline.com"))
        || (shExpMatch(host, "*.microsoftonline-p.com"))
        || (shExpMatch(host, "*.microsoftonline-p.net"))
        || (shExpMatch(host, "*.msecnd.net"))
        || (shExpMatch(host, "*.msedge.net"))      
        || (shExpMatch(host, "*.msocdn.com")) 
        || (shExpMatch(host, "*.mstea.ms"))    
        || (shExpMatch(host, "*.notification.api.microsoftstream.com")) 
        || (shExpMatch(host, "*.o365weve.com"))     
        || (shExpMatch(host, "*.office.com"))   
        || (shExpMatch(host, "*.office.net"))
        || (shExpMatch(host, "*.omniroot.com"))
        || (shExpMatch(host, "*.onmicrosoft.com"))
        || (shExpMatch(host, "*.phonefactor.net"))
        || (shExpMatch(host, "*.public-trust.com"))
        || (shExpMatch(host, "*.search.production.apac.trafficmanager.net"))
        || (shExpMatch(host, "*.search.production.emea.trafficmanager.net"))
        || (shExpMatch(host, "*.search.production.us.trafficmanager.net"))
        || (shExpMatch(host, "*.secure.skypeassets.com"))  
        || (shExpMatch(host, "*.sfbassets.com"))
        || (shExpMatch(host, "*.sharepointonline.com"))
        || (shExpMatch(host, "*.sway.com"))
        || (shExpMatch(host, "*.symcb.com"))
        || (shExpMatch(host, "*.teams.microsoft.com"))  
        || (shExpMatch(host, "*.tenor.com"))  
        || (shExpMatch(host, "*.symcd.com"))     
        || (shExpMatch(host, "*.users.storage.live.com"))
        || (shExpMatch(host, "*.verisign.com"))
        || (shExpMatch(host, "*.verisign.net"))
        || (shExpMatch(host, "*.windows.net"))
        || (shExpMatch(host, "*cdn.onenote.net"))
        || (shExpMatch(host, "account.activedirectory.windowsazure.com"))
        || (shExpMatch(host, "ad.atdmt.com"))
        || (shExpMatch(host, "admin.onedrive.com"))
        || (shExpMatch(host, "ajax.aspnetcdn.com"))
        || (shExpMatch(host, "aka.ms"))
        || (shExpMatch(host, "amp.azure.net"))
        || (shExpMatch(host, "api.microsoftstream.com"))
        || (shExpMatch(host, "apis.live.net"))  
        || (shExpMatch(host, "apps.identrust.com"))  
        || (shExpMatch(host, "assets.onestore.ms"))
        || (shExpMatch(host, "auth.gfx.ms"))
        || (shExpMatch(host, "cacerts.digicert.com"))        
        || (shExpMatch(host, "cdn.odc.officeapps.live.com"))  
        || (shExpMatch(host, "cdn.onenote.net"))
        || (shExpMatch(host, "cdn.optimizely.com")) 
        || (shExpMatch(host, "cert.int-x3.letsencrypt.org"))
        || (shExpMatch(host, "client.hip.live.com"))
        || (shExpMatch(host, "connect.facebook.net"))        
        || (shExpMatch(host, "crl.globalsign.com"))
        || (shExpMatch(host, "crl.globalsign.net"))
        || (shExpMatch(host, "crl.identrust.com"))    
        || (shExpMatch(host, "crl3.digicert.com"))  
        || (shExpMatch(host, "crl4.digicert.com"))
        || (shExpMatch(host, "cus-odc.officeapps.live.com"))              
        || (shExpMatch(host, "cus-roaming.officeapps.live.com"))
        || (shExpMatch(host, "dc.services.visualstudio.com"))
        || (shExpMatch(host, "domains.live.com"))
        || (shExpMatch(host, "ea-000.ocws.officeapps.live.com"))
        || (shExpMatch(host, "ea-roaming.officeapps.live.com"))          
        || (shExpMatch(host, "ecn.dev.virtualearth.net "))   
        || (shExpMatch(host, "eus2-000.ocws.officeapps.live.com"))
        || (shExpMatch(host, "eus2-roaming.officeapps.live.com"))             
        || (shExpMatch(host, "eus-odc.officeapps.live.com"))         
        || (shExpMatch(host, "eus-www.sway-cdn.com"))
        || (shExpMatch(host, "eus-www.sway-extensions.com"))        
        || (shExpMatch(host, "firstpartyapps.oaspapps.com"))
        || (shExpMatch(host, "g.live.com"))
        || (shExpMatch(host, "groupsapi2-prod.outlookgroups.ms"))  
        || (shExpMatch(host, "groupsapi3-prod.outlookgroups.ms"))  
        || (shExpMatch(host, "groupsapi4-prod.outlookgroups.ms"))  
        || (shExpMatch(host, "groupsapi-prod.outlookgroups.ms"))   
        || (shExpMatch(host, "isrg.trustid.ocsp.identrust.com"))   
        || (shExpMatch(host, "liverdcxstorage.blob.core.windowsazure.com"))
        || (shExpMatch(host, "management.azure.com"))        
        || (shExpMatch(host, "mem.gfx.ms"))
        || (shExpMatch(host, "mrodevicemgr.officeapps.live.com"))      
        || (shExpMatch(host, "ncus-000.ocws.officeapps.live.com"))
        || (shExpMatch(host, "ncus-roaming.officeapps.live.com"))                
        || (shExpMatch(host, "neu-000.ocws.officeapps.live.com")) 
        || (shExpMatch(host, "neu-odc.officeapps.live.com"))         
        || (shExpMatch(host, "neu-roaming.officeapps.live.com"))              
        || (shExpMatch(host, "nexus.officeapps.live.com"))
        || (shExpMatch(host, "nexusrules.officeapps.live.com"))
        || (shExpMatch(host, "nps.onyx.azure.net"))
        || (shExpMatch(host, "ocsa.officeapps.live.com"))
        || (shExpMatch(host, "ocsp.digicert.com"))
        || (shExpMatch(host, "ocspx.digicert.com"))
        || (shExpMatch(host, "ocsp.globalsign.com"))
        || (shExpMatch(host, "ocsp.int-x3.letsencrypt.org"))
        || (shExpMatch(host, "ocsp.msocsp.com"))       
        || (shExpMatch(host, "ocsp2.globalsign.com"))
        || (shExpMatch(host, "ocsredir.officeapps.live.com"))
        || (shExpMatch(host, "ocws.officeapps.live.com"))
        || (shExpMatch(host, "odc.officeapps.live.com"))  
        || (shExpMatch(host, "officecdn.microsoft.com.edgekey.net"))            
        || (shExpMatch(host, "officecdn.microsoft.com.edgesuite.net"))              
        || (shExpMatch(host, "ols.officeapps.live.com"))  
        || (shExpMatch(host, "oneclient.sfx.ms"))
        || (shExpMatch(host, "outlook.uservoice.com"))
        || (shExpMatch(host, "platform.linkedin.com"))
        || (shExpMatch(host, "policykeyservice.dc.ad.msft.net"))
        || (shExpMatch(host, "prod.firstpartyapps.oaspapps.com.akadns.net")) 
        || (shExpMatch(host, "r1.res.office365.com"))
        || (shExpMatch(host, "r3.res.office365.com"))
        || (shExpMatch(host, "r4.res.office365.com"))
        || (shExpMatch(host, "s.ytimg.com"))
        || (shExpMatch(host, "scus-000.ocws.officeapps.live.com"))
        || (shExpMatch(host, "scus-odc.officeapps.live.com"))         
        || (shExpMatch(host, "scus-roaming.officeapps.live.com"))                 
        || (shExpMatch(host, "sea-odc.officeapps.live.com"))         
        || (shExpMatch(host, "sea-roaming.officeapps.live.com"))              
        || (shExpMatch(host, "secure.globalsign.com"))
        || (shExpMatch(host, "site-cdn.onenote.net"))
        || (shExpMatch(host, "skydrive.wns.windows.com"))
        || (shExpMatch(host, "skypemaprdsitus.trafficmanager.net"))   
        || (shExpMatch(host, "spoprod-a.akamaihd.net"))  
        || (shExpMatch(host, "ssw.live.com"))
        || (shExpMatch(host, "staffhub.ms"))
        || (shExpMatch(host, "staffhub.uservoice.com"))
        || (shExpMatch(host, "storage.live.com"))
        || (shExpMatch(host, "sway.com")) 
        || (shExpMatch(host, "teams.microsoft.com"))              
        || (shExpMatch(host, "telemetry.remoteapp.windowsazure.com"))         
        || (shExpMatch(host, "telemetryservice.firstpartyapps.oaspapps.com"))    
        || (shExpMatch(host, "web.microsoftstream.com"))         
        || (shExpMatch(host, "weu-000.ocws.officeapps.live.com"))
        || (shExpMatch(host, "weu-odc.officeapps.live.com"))         
        || (shExpMatch(host, "weu-roaming.officeapps.live.com"))
        || (shExpMatch(host, "wu.client.hip.live.com"))
        || (shExpMatch(host, "wus-000.ocws.officeapps.live.com"))
        || (shExpMatch(host, "wus-firstpartyapps.oaspapps.com"))  
        || (shExpMatch(host, "wus-odc.officeapps.live.com"))         
        || (shExpMatch(host, "wus-roaming.officeapps.live.com"))
        || (shExpMatch(host, "wus-www.sway-cdn.com"))
        || (shExpMatch(host, "wus-www.sway-extensions.com"))   
        || (shExpMatch(host, "www.digicert.com"))
        || (shExpMatch(host, "www.google-analytics.com"))
        || (shExpMatch(host, "www.onedrive.com"))
        || (shExpMatch(host, "www.remoteapp.windowsazure.com"))
        || (shExpMatch(host, "www.youtube.com"))
        || (shExpMatch(host, "xsi.outlook.com")))


        

    {
        return proxyserver;
    }

    //Catchall for all other traffic to another proxy 

else return proxyserver;
}

Drugi przykład przedstawia zalecane przez nas podejście do zarządzania połączeniami, gdy są dostępne obwody internetowe i obwody usługi ExpressRoute. Anonsowane miejsca docelowe usługi ExpressRoute są wysyłane do obwodu usługi ExpressRoute, a miejsca docelowe anonsowane tylko w Internecie są wysyłane do serwera proxy.

Fragment kodu:

// JavaScript source code
//July 2018 Update
// Consolidated FQDNs of URLS which are reachable via Microsoft peering over ExpressRoute. All other traffic sent to a proxy in this example. 
//Every Effort is made to ensure 100% accuracy but this PAC should be used as an example and cross-checked with your traffic flow needs and the Office 365 URL & IP page. 
//Intended only for Worldwide Office 365 instances, which the vast majority of customers will be using
//PAC presumes all Office 365 BGP communities/route filters are allowed.

function FindProxyForURL(url, host)
{
    // Define proxy server
    var proxyserver = "PROXY 10.10.10.10:8080";
    // Make host lowercase
    var lhost = host.toLowerCase();
    host = lhost;
    //SUB-FQDNs of ExpressRoutable wildcards which need to be explicitly sent to the proxy at the top of the PAC because they arent ER routable
    if ((shExpMatch(host, "xsi.outlook.com"))
        || (shExpMatch(host, "r3.res.outlook.com"))
        || (shExpMatch(host, "quicktips.skypeforbusiness.com"))
        || (shExpMatch(host, "*.um.outlook.com")))					
    {
        return proxyserver;
    }
        //EXPRESS ROUTE DIRECT
    else if ((isPlainHostName(host))  
            || (shExpMatch(host, "*.aria.microsoft.com"))             
            || (shExpMatch(host, "*.dc.trouter.io"))
            || (shExpMatch(host, "*.lync.com"))
            || (shExpMatch(host, "*.manage.office.com"))
            || (shExpMatch(host, "*.outlook.com"))
            || (shExpMatch(host, "*.outlook.office.com"))
            || (shExpMatch(host, "*.portal.cloudappsecurity.com"))
            || (shExpMatch(host, "*.protection.office.com"))
            || (shExpMatch(host, "*.protection.outlook.com"))
            || (shExpMatch(host, "*.sharepoint.com")) 
            || (shExpMatch(host, "*.skype.com")) 
            || (shExpMatch(host, "*.skypeforbusiness.com")) 
            || (shExpMatch(host, "*.svc.ms"))   
            || (shExpMatch(host, "*.teams.microsoft.com"))  
            || (shExpMatch(host, "*broadcast.officeapps.live.com"))
            || (shExpMatch(host, "*excel.officeapps.live.com"))
            || (shExpMatch(host, "*onenote.officeapps.live.com"))
            || (shExpMatch(host, "*powerpoint.officeapps.live.com"))
            || (shExpMatch(host, "*view.officeapps.live.com"))                                 
            || (shExpMatch(host, "*visio.officeapps.live.com"))
            || (shExpMatch(host, "*word-edit.officeapps.live.com"))
            || (shExpMatch(host, "*word-view.officeapps.live.com"))
            || (shExpMatch(host, "account.office.net"))
            || (shExpMatch(host, "adminwebservice.microsoftonline.com"))
            || (shExpMatch(host, "agent.office.net"))  
            || (shExpMatch(host, "apc.delve.office.com"))
            || (shExpMatch(host, "api.login.microsoftonline.com"))
            || (shExpMatch(host, "api.passwordreset.microsoftonline.com"))
            || (shExpMatch(host, "aus.delve.office.com"))
            || (shExpMatch(host, "autologon.microsoftazuread-sso.com")) 
            || (shExpMatch(host, "becws.microsoftonline.com"))
            || (shExpMatch(host, "browser.pipe.aria.microsoft.com"))  
            || (shExpMatch(host, "can.delve.office.com")) 
            || (shExpMatch(host, "ccs.login.microsoftonline.com"))  
            || (shExpMatch(host, "ccs-sdf.login.microsoftonline.com"))
            || (shExpMatch(host, "clientconfig.microsoftonline-p.net"))
            || (shExpMatch(host, "companymanager.microsoftonline.com"))
            || (shExpMatch(host, "delve.office.com"))
            || (shExpMatch(host, "device.login.microsoftonline.com"))
            || (shExpMatch(host, "domains.live.com")) 
            || (shExpMatch(host, "eur.delve.office.com"))
            || (shExpMatch(host, "gbr.delve.office.com"))
            || (shExpMatch(host, "hip.microsoftonline-p.net"))
            || (shExpMatch(host, "hipservice.microsoftonline.com"))
            || (shExpMatch(host, "home.office.com"))
            || (shExpMatch(host, "ind.delve.office.com"))
            || (shExpMatch(host, "jpn.delve.office.com"))
            || (shExpMatch(host, "kor.delve.office.com"))
            || (shExpMatch(host, "lam.delve.office.com"))
            || (shExpMatch(host, "login.microsoft.com"))
            || (shExpMatch(host, "login.microsoftonline.com"))
            || (shExpMatch(host, "login.microsoftonline-p.net"))
            || (shExpMatch(host, "login.windows.net"))
            || (shExpMatch(host, "logincert.microsoftonline.com"))
            || (shExpMatch(host, "loginex.microsoftonline.com"))
            || (shExpMatch(host, "login-us.microsoftonline.com"))
            || (shExpMatch(host, "manage.office.com"))
            || (shExpMatch(host, "mobile.pipe.aria.microsoft.com"))
            || (shExpMatch(host, "nam.delve.office.com"))
            || (shExpMatch(host, "nexus.microsoftonline-p.net"))
            || (shExpMatch(host, "office.live.com")) 
            || (shExpMatch(host, "officeapps.live.com")) 
            || (shExpMatch(host, "outlook.office365.com")) 
            || (shExpMatch(host, "passwordreset.microsoftonline.com"))
            || (shExpMatch(host, "portal.office.com"))
            || (shExpMatch(host, "protection.office.com"))
            || (shExpMatch(host, "provisioningapi.microsoftonline.com"))
            || (shExpMatch(host, "scsinstrument-ss-us.trafficmanager.net")) 
            || (shExpMatch(host, "scsquery-ss-asia.trafficmanager.net"))
            || (shExpMatch(host, "scsquery-ss-eu.trafficmanager.net")) 
            || (shExpMatch(host, "scsquery-ss-us.trafficmanager.net"))  
            || (shExpMatch(host, "signup.microsoft.com"))
            || (shExpMatch(host, "smtp.office365.com"))  
            || (shExpMatch(host, "stamp2.login.microsoftonline.com"))
            || (shExpMatch(host, "suite.office.net")) 
            || (shExpMatch(host, "teams.microsoft.com")) 
            || (shExpMatch(host, "webshell.suite.office.com")) 
            || (shExpMatch(host, "www.office.com")))             

       
    {
        return "DIRECT";
    }

        //Catchall for all other traffic to proxy
    else
    {
        return proxyserver;
    }
}

Trzeci przykład przedstawia wysyłanie wszystkich żądań sieciowych skojarzonych z usługą Office 365 do jednego miejsca docelowego. Jest to powszechnie stosowane, aby pominąć całą inspekcję żądań sieciowych usługi Office 365. Ponadto metoda ta umożliwia korzystanie z listy w formacie PAC zawierającej wszystkie opublikowane punkty końcowe, którą można dostosować do własnych potrzeb.

Fragment kodu:

// JavaScript source code
//July 2018 Update new URLS go live 1st August 2018 -
//Consolidated FQDNs required to access Office 365 - All services including optional components covered and elements covered under wildcards removed. 
//Some repeated domains have been consoliodated into unpublished wildcards in order to keep the file as small as possible.
//Includes Core ProPlus URLs but not Office Mobile/IPAD/IOS/ANDROID fqdns from https://support.office.com/en-gb/article/Network-requests-in-Office-365-ProPlus-eb73fcd1-ca88-4d02-a74b-2dd3a9f3364d
//Every Effort is made to ensure 100% accuracy but this PAC should be used as an example and cross-checked with your needs and the Office 365 URL & IP page
//Intended only for Worldwide Office 365 instances, which the vast majority of customers will be using

function FindProxyForURL(url, host)
{
    // Define proxy server
    var proxyserver = "PROXY 10.10.10.10:8080";
    // Make host lowercase
    var lhost = host.toLowerCase();
    host = lhost;

   if  ((shExpMatch(host, "*.aadrm.com"))
        || (shExpMatch(host, "*.adhybridhealth.azure.com"))
        || (shExpMatch(host, "*.adl.windows.com"))
        || (shExpMatch(host, "*.api.microsoftstream.com"))  
        || (shExpMatch(host, "*.assets-yammer.com"))
        || (shExpMatch(host, "autologon.microsoftazuread-sso.com"))  
        || (shExpMatch(host, "*.azureedge.net"))   
        || (shExpMatch(host, "*.azurerms.com"))
        || (shExpMatch(host, "*.cloudapp.net")) 
        || (shExpMatch(host, "*.dc.trouter.io"))
        || (shExpMatch(host, "*.entrust.net")) 
        || (shExpMatch(host, "*.geotrust.com"))
        || (shExpMatch(host, "*.helpshift.com"))
        || (shExpMatch(host, "*.hockeyapp.net"))       
        || (shExpMatch(host, "*.localytics.com"))
        || (shExpMatch(host, "*.log.optimizely.com"))     
        || (shExpMatch(host, "*.lync.com"))
        || (shExpMatch(host, "*.microsoft.com"))
        || (shExpMatch(host, "*.microsoftonline.com"))
        || (shExpMatch(host, "*.microsoftonline-p.com"))
        || (shExpMatch(host, "*.microsoftonline-p.net"))
        || (shExpMatch(host, "*.msecnd.net"))
        || (shExpMatch(host, "*.msedge.net"))
        || (shExpMatch(host, "*.msocdn.com"))
        || (shExpMatch(host, "*.mstea.ms"))
        || (shExpMatch(host, "*.o365weve.com"))
        || (shExpMatch(host, "*.office.com"))
        || (shExpMatch(host, "*.office.net"))
        || (shExpMatch(host, "*.office365.com"))
        || (shExpMatch(host, "*.omniroot.com"))
        || (shExpMatch(host, "*.onenote.com"))
        || (shExpMatch(host, "*.onmicrosoft.com"))
        || (shExpMatch(host, "*.outlook.com"))
        || (shExpMatch(host, "*.phonefactor.net")) 
        || (shExpMatch(host, "*.portal.cloudappsecurity.com"))
        || (shExpMatch(host, "*.public-trust.com"))
        || (shExpMatch(host, "*.search.production.apac.trafficmanager.net"))
        || (shExpMatch(host, "*.search.production.emea.trafficmanager.net"))
        || (shExpMatch(host, "*.search.production.us.trafficmanager.net"))
        || (shExpMatch(host, "*.secure.skypeassets.com"))
        || (shExpMatch(host, "*.sfbassets.com"))  
        || (shExpMatch(host, "*.sharepoint.com"))
        || (shExpMatch(host, "*.sharepointonline.com"))
        || (shExpMatch(host, "*.skype.com"))
        || (shExpMatch(host, "*.skypeforbusiness.com"))
        || (shExpMatch(host, "*.svc.ms")) 
        || (shExpMatch(host, "*.sway.com"))
        || (shExpMatch(host, "*.symcb.com"))
        || (shExpMatch(host, "*.symcd.com"))
        || (shExpMatch(host, "*.tenor.com"))
        || (shExpMatch(host, "*.users.storage.live.com"))
        || (shExpMatch(host, "*.verisign.com"))
        || (shExpMatch(host, "*.verisign.net"))
        || (shExpMatch(host, "*.windows.net"))
        || (shExpMatch(host, "*.yammer.com"))
        || (shExpMatch(host, "*.yammerusercontent.com"))         
        || (shExpMatch(host, "*broadcast.officeapps.live.com"))
        || (shExpMatch(host, "*cdn.onenote.net"))
        || (shExpMatch(host, "*excel.officeapps.live.com"))
        || (shExpMatch(host, "*onenote.officeapps.live.com"))
        || (shExpMatch(host, "*powerpoint.officeapps.live.com"))
        || (shExpMatch(host, "*view.officeapps.live.com"))
        || (shExpMatch(host, "*visio.officeapps.live.com"))
        || (shExpMatch(host, "*word-edit.officeapps.live.com"))
        || (shExpMatch(host, "*word-view.officeapps.live.com"))    
        || (shExpMatch(host, "account.activedirectory.windowsazure.com"))
        || (shExpMatch(host, "ad.atdmt.com"))
        || (shExpMatch(host, "admin.onedrive.com"))
        || (shExpMatch(host, "ajax.aspnetcdn.com"))
        || (shExpMatch(host, "aka.ms"))
        || (shExpMatch(host, "amp.azure.net"))
        || (shExpMatch(host, "api.microsoftstream.com"))
        || (shExpMatch(host, "apis.live.net"))
        || (shExpMatch(host, "apps.identrust.com")) 
        || (shExpMatch(host, "assets.onestore.ms"))
        || (shExpMatch(host, "auth.gfx.ms"))
        || (shExpMatch(host, "cacerts.digicert.com"))    
        || (shExpMatch(host, "cdn.odc.officeapps.live.com"))  
        || (shExpMatch(host, "cdn.onenote.net"))
        || (shExpMatch(host, "cdn.optimizely.com"))
        || (shExpMatch(host, "cert.int-x3.letsencrypt.org"))
        || (shExpMatch(host, "client.hip.live.com"))     
        || (shExpMatch(host, "connect.facebook.net"))
        || (shExpMatch(host, "crl.globalsign.com"))
        || (shExpMatch(host, "crl.globalsign.net"))
        || (shExpMatch(host, "crl.identrust.com"))    
        || (shExpMatch(host, "crl3.digicert.com"))  
        || (shExpMatch(host, "crl4.digicert.com"))
        || (shExpMatch(host, "cus-odc.officeapps.live.com"))              
        || (shExpMatch(host, "cus-roaming.officeapps.live.com"))      
        || (shExpMatch(host, "dc.services.visualstudio.com"))
        || (shExpMatch(host, "domains.live.com"))
        || (shExpMatch(host, "ea-000.ocws.officeapps.live.com")) 
        || (shExpMatch(host, "ea-roaming.officeapps.live.com"))           
        || (shExpMatch(host, "ecn.dev.virtualearth.net"))
        || (shExpMatch(host, "eus2-000.ocws.officeapps.live.com"))
        || (shExpMatch(host, "eus2-roaming.officeapps.live.com"))              
        || (shExpMatch(host, "eus-odc.officeapps.live.com"))              
        || (shExpMatch(host, "eus-www.sway-cdn.com"))
        || (shExpMatch(host, "eus-www.sway-extensions.com"))
        || (shExpMatch(host, "firstpartyapps.oaspapps.com"))
        || (shExpMatch(host, "g.live.com"))
        || (shExpMatch(host, "groupsapi2-prod.outlookgroups.ms"))  
        || (shExpMatch(host, "groupsapi3-prod.outlookgroups.ms"))  
        || (shExpMatch(host, "groupsapi4-prod.outlookgroups.ms"))  
        || (shExpMatch(host, "groupsapi-prod.outlookgroups.ms"))  
        || (shExpMatch(host, "isrg.trustid.ocsp.identrust.com"))
        || (shExpMatch(host, "liverdcxstorage.blob.core.windowsazure.com"))
        || (shExpMatch(host, "management.azure.com"))
        || (shExpMatch(host, "mem.gfx.ms"))
        || (shExpMatch(host, "mrodevicemgr.officeapps.live.com"))               
        || (shExpMatch(host, "ncus-000.ocws.officeapps.live.com"))
        || (shExpMatch(host, "ncus-roaming.officeapps.live.com"))                 
        || (shExpMatch(host, "neu-000.ocws.officeapps.live.com")) 
        || (shExpMatch(host, "neu-odc.officeapps.live.com"))              
        || (shExpMatch(host, "neu-roaming.officeapps.live.com"))              
        || (shExpMatch(host, "nexus.officeapps.live.com"))
        || (shExpMatch(host, "nexusrules.officeapps.live.com"))
        || (shExpMatch(host, "nps.onyx.azure.net"))   
        || (shExpMatch(host, "ocsa.officeapps.live.com"))
        || (shExpMatch(host, "ocsp.digicert.com"))
        || (shExpMatch(host, "ocsp.globalsign.com"))
        || (shExpMatch(host, "ocsp.int-x3.letsencrypt.org"))
        || (shExpMatch(host, "ocsp.msocsp.com"))     
        || (shExpMatch(host, "ocsp2.globalsign.com")) 
        || (shExpMatch(host, "ocspx.digicert.com"))
        || (shExpMatch(host, "ocsredir.officeapps.live.com"))
        || (shExpMatch(host, "ocws.officeapps.live.com"))
        || (shExpMatch(host, "odc.officeapps.live.com"))  
        || (shExpMatch(host, "office.live.com"))
        || (shExpMatch(host, "officeapps.live.com"))
        || (shExpMatch(host, "officecdn.microsoft.com.edgekey.net"))              
        || (shExpMatch(host, "officecdn.microsoft.com.edgesuite.net"))
        || (shExpMatch(host, "ols.officeapps.live.com"))  
        || (shExpMatch(host, "oneclient.sfx.ms"))
        || (shExpMatch(host, "outlook.uservoice.com"))
        || (shExpMatch(host, "platform.linkedin.com"))
        || (shExpMatch(host, "policykeyservice.dc.ad.msft.net"))
        || (shExpMatch(host, "prod.firstpartyapps.oaspapps.com.akadns.net"))
        || (shExpMatch(host, "s.ytimg.com"))
        || (shExpMatch(host, "s0.assets-yammer.com"))  
        || (shExpMatch(host, "scsinstrument-ss-us.trafficmanager.net")) 
        || (shExpMatch(host, "scsquery-ss-asia.trafficmanager.net"))
        || (shExpMatch(host, "scsquery-ss-eu.trafficmanager.net")) 
        || (shExpMatch(host, "scsquery-ss-us.trafficmanager.net")) 
        || (shExpMatch(host, "scus-000.ocws.officeapps.live.com"))
        || (shExpMatch(host, "scus-odc.officeapps.live.com"))         
        || (shExpMatch(host, "scus-roaming.officeapps.live.com"))                 
        || (shExpMatch(host, "sea-odc.officeapps.live.com"))              
        || (shExpMatch(host, "sea-roaming.officeapps.live.com"))              
        || (shExpMatch(host, "secure.globalsign.com"))
        || (shExpMatch(host, "site-cdn.onenote.net"))
        || (shExpMatch(host, "skydrive.wns.windows.com"))
        || (shExpMatch(host, "skypemaprdsitus.trafficmanager.net"))
        || (shExpMatch(host, "spoprod-a.akamaihd.net"))
        || (shExpMatch(host, "ssw.live.com"))
        || (shExpMatch(host, "staffhub.ms"))
        || (shExpMatch(host, "staffhub.uservoice.com"))    
        || (shExpMatch(host, "storage.live.com"))
        || (shExpMatch(host, "telemetry.remoteapp.windowsazure.com"))
        || (shExpMatch(host, "telemetryservice.firstpartyapps.oaspapps.com"))
        || (shExpMatch(host, "web.microsoftstream.com"))   
        || (shExpMatch(host, "weu-000.ocws.officeapps.live.com")) 
        || (shExpMatch(host, "weu-odc.officeapps.live.com"))              
        || (shExpMatch(host, "weu-roaming.officeapps.live.com"))              
        || (shExpMatch(host, "wu.client.hip.live.com"))
        || (shExpMatch(host, "wus-000.ocws.officeapps.live.com"))  
        || (shExpMatch(host, "wus-firstpartyapps.oaspapps.com"))  
        || (shExpMatch(host, "wus-odc.officeapps.live.com"))              
        || (shExpMatch(host, "wus-roaming.officeapps.live.com"))              
        || (shExpMatch(host, "wus-www.sway-cdn.com"))
        || (shExpMatch(host, "wus-www.sway-extensions.com"))        
        || (shExpMatch(host, "www.digicert.com"))
        || (shExpMatch(host, "www.google-analytics.com"))
        || (shExpMatch(host, "www.onedrive.com"))
        || (shExpMatch(host, "www.remoteapp.windowsazure.com"))
        || (shExpMatch(host, "www.youtube.com")))




    {
        return proxyserver;
    }

        //Catchall for all other traffic to another proxy

    else return "PROXY 10.10.10.11:8080";
}

Oto kilka dodatkowych narzędzi od społeczności. Jeśli udało Ci się utworzyć coś, co chcesz udostępnić innym, pozostaw uwagę w komentarzach. Żadne z narzędzi społeczności omawianych w poniższym artykule nie jest oficjalnie obsługiwane ani utrzymywane przez firmę Microsoft. Są one podane jedynie dla Twojej wygody.

  • To najstarsze przygotowane w społeczności narzędzie ułatwiające zarządzanie procesem utworzone przez członka społeczności usługi Office 365. Oto link do plików do pobrania.

  • Weryfikacja koncepcji z regułami zapory, które można eksportować: Interfejs API adresu IP portalu Microsoft Cloud.

  • IT Praktyk: konwersja RSS oraz konwersja XML.

  • Peter Abele: Materiały do pobrania.

  • Użyj analizy sieci, aby określić żądania sieciowe, które powinny omijać infrastrukturę serwera proxy. Najczęstsze nazwy FQDN używane do obchodzenia serwerów proxy klientów obejmują poniższe, ze względu na objętość ruchu sieciowego wysyłanego do tych punktów końcowych i z nich odbieranego.

    outlook.office365.com
    outlook.office.com
    <tenant-name>.sharepoint.com
    <tenant-name>-my.sharepoint.com
    <tenant-name>-<app>.sharepoint.com
    *.Lync.com
    
  • Upewnij się, że żądania sieciowe wysyłane bezpośrednio do zapory mają odpowiadające im wpisy na liście dozwolonych zapory, aby umożliwić przekazywanie żądania.

Integracja sieci obwodowej

Czy wiesz, że sieć WAN firmy Microsoft jest jedną z największych sieci szkieletowych na świecie?

To prawda. Ta właśnie dzięki tej olbrzymiej sieci usługa Office 365 i inne nasze usługi w chmurze działają niezależnie od miejsca na świecie, w którym przebywa klient. Nasza sieć składa się z łączy o dużej przepustowości, niskich opóźnieniach i z obsługą awarii, tysięcy mil prywatnych łączy światłowodowych typu Dark Fiber oraz wieloterabitowych połączeń między centrami danych i węzłami brzegowymi — wszystko to ma ułatwiać klientom korzystanie z naszych usług w chmurze.

W przypadku takiej sieci klienci powinni zadbać o jak najszybsze połączenie z nią urządzeń swoich organizacji. Przy ponad 2500 relacjach komunikacji równorzędnej z usługodawcami internetowymi na całym świecie i 70 punktach obecności komunikacja z Twojej sieci do naszej powinna być bezproblemowa. Warto poświęcić kilka minut na upewnienie się, że relacja komunikacji równorzędnej z usługodawcą internetowym jest optymalna. Oto kilka przykładów dobrych i niezbyt dobrych przekierowań w komunikacji równorzędnej do naszej sieci.

Można ręcznie lub automatycznie skonfigurować urządzenia we własnej sieci pod kątem optymalnej obsługi żądań sieciowych aplikacji usługi Office 365 — w zależności od sprzętu. Zmiany w konfiguracji potrzebne do optymalnej obsługi ruchu sieciowego usługi Office 365 zależą od konkretnego środowiska. Żądania sieciowe usługi Office 365 mogą być lepiej obsługiwane w konfiguracjach sieci, które umożliwiają:

  • Pierwszeństwo przed ruchem sieciowym o mniejszym znaczeniu.

  • Routing do lokalnego punktu wyjściowego w celu uniknięcia kierowania ruchu przez wolne pośredniczące łącza sieci WAN i skorzystania z małych opóźnień w sieci firmy Microsoft. Tutaj dostępna jest dobra dyskusja oparta na interakcjach z klientami.

  • Używanie systemu DNS w pobliżu lokalnego punktu wyjściowego w celu zapewnienia, że żądania sieciowe wychodzące z tego lokalnego punktu wyjściowego dotrą do najbliższej lokalizacji komunikacji równorzędnej firmy Microsoft.

  • Wykluczenie ze szczegółowej inspekcji pakietów lub innego intensywnego przetwarzania pakietów sieciowych w celu spełnienia wymagań dotyczących małych opóźnień w odpowiedniej skali.

Nowoczesne urządzenia sieciowe zapewniają możliwości zarządzania żądaniami sieciowymi dotyczącymi zaufanych aplikacji, takich jak usługa Office 365, inaczej niż zwykłym, niezaufanym ruchem internetowym. W dobie wyłaniających się rozwiązań SD-WAN takie zróżnicowanie ruchu i wyboru ścieżek można też realizować z uwzględnieniem informacji o zmieniającym się stanie sieci, takich jak dostępność, opóźnienia lub wydajność w danym momencie różnych ścieżek łączności między użytkownikiem i chmurą.

Aby uzyskać dodatkowe wskazówki dotyczące planowania konfiguracji sieci, zobacz Planowanie sieci i migracji dla usługi Office 365, Plan rozwiązywania problemów z wydajnością usługi Office 365 i Lista kontrolna planowania wdrożenia usługi Office 365.

Aby wdrożyć ten scenariusz:

Dowiedz się od swojego dostawcy rozwiązań sieciowych lub usług, czy umożliwia on używanie definicji adresów IP i URL usługi Office 365 z pliku XML w celu zapewnienia lokalnego (względem użytkownika) obarczonego niskim narzutem wyjścia z sieci dla ruchu usługi Office 365, zarządzania jego priorytetem względem innych aplikacji i dostosowania ścieżki sieciowej dla połączeń usługi Office 365 skierowanych do sieci firmy Microsoft w zależności od zmieniających się warunków sieciowych. Niektóre rozwiązania pobierają i automatyzują definicje XML adresów IP i URL usługi Office 365 w swoich stosach.

Należy koniecznie zadbać o to, aby zaimplementowane rozwiązanie zapewniało dostateczną odporność oraz odpowiednią nadmiarowość geograficzną ścieżki sieciowej dla ruchu usługi Office 365 i uwzględniało zmiany adresów IP i URL usługi Office 365 w miarę ich publikowania.

Aby pomóc w lepszym identyfikowaniu i rozróżnianiu ruchu sieciowego usługi Office 365, nowa usługa sieci Web publikuje punkty końcowe usługi Office 365, ułatwiając ocenianie, konfigurowanie i śledzenie zmian na bieżąco. Ta nowa usługa sieci Web (teraz w wersji Preview) po pewnym czasie zastąpi listę punktów końcowych wymienionych w artykule Adresy URL i zakresy adresów IP usługi Office 365 oraz wersje RSS i XML tych danych. Planuje się wycofanie tego formatu danych punktów końcowych w niedalekiej przyszłości.

Jako klient lub dostawca urządzenia sieci obwodowej, możesz przetestować nową usługę sieci Web opartą na architekturze REST dla wpisów nazw FQDN i adresów IP usługi Office 365, która jest teraz dostępna w wersji Preview:

Jako klient, możesz korzystać z tej usługi sieci Web w następujących celach:

  • Aktualizowanie skryptów programu PowerShell w celu uzyskiwania danych punktu końcowego usługi Office 365 i modyfikowania formatowania dla urządzeń sieciowych.

  • Używanie tych informacji do aktualizowania plików PAC wdrożonych na komputerach klienckich.

Jako dostawca urządzenia sieci obwodowej, możesz używać tej usługi sieci Web w następujących celach:

  • Tworzenie i testowanie oprogramowania urządzenia w celu pobrania listy do automatycznej konfiguracji.

  • Sprawdzanie dostępności bieżącej wersji.

  • Pobieranie bieżących zmian.

W poniższych sekcjach opisano wersję Preview tej usługi sieci Web, która może ulec zmianie, zanim zostanie udostępniona ogólnie.

Dane w usłudze sieci Web są aktualne z wyjątkiem następującego znanego problemu:

Wspólne parametry

Te parametry są wspólne we wszystkich metodach usługi sieci Web:

  • format=CSV | JSON — parametr ciągu zapytania. Domyślnie format zwracanych danych to JSON. Dołącz ten parametr opcjonalny, aby zwrócić dane w formacie wartości rozdzielanych przecinkami (CSV).

  • ClientRequestId — parametr ciągu zapytania. Wymagany identyfikator GUID generowany dla skojarzenia sesji klienta. Identyfikator GUID należy wygenerować dla każdego komputera klienckiego wywołującego usługę sieci Web. Nie używaj identyfikatorów GUID pokazanych w poniższych przykładach, ponieważ mogą zostać zablokowane przez usługę sieci Web w przyszłości. Format identyfikatora GUID to xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, gdzie x odzwierciedla liczbę szesnastkową. Aby wygenerować identyfikator GUID, użyj polecenia programu PowerShell New-Guid.

Metoda sieci Web Version (Wersja)

Firma Microsoft aktualizuje wpisy nazw FQDN i adresów IP usługi Office 365 na koniec każdego miesiąca, a czasem częściej ze względu na wymagania operacyjne. Do danych dla każdego opublikowanego wystąpienia jest przypisany numer wersji. Metoda sieci Web Version (Wersja) umożliwia wykrywanie najnowszej wersji dla każdego wystąpienia usługi Office 365. Planowane są zmiany punktów końcowych raz na miesiąc. Zalecamy codzienne lub najwyżej cogodzinne sprawdzanie dostępności nowej wersji.

Istnieje jeden parametr metody sieci Web Version (Wersja):

  • AllVersions=true — parametr ciągu zapytania. Domyślnie jest zwracana najnowsza wersja. Dołącz ten parametr opcjonalny, aby zażądać wszystkich opublikowanych wersji.

  • Instance — parametr trasy. Ten parametr opcjonalny określa wystąpienie, dla którego ma zostać zwrócona wersja. W razie pominięcia zostaną zwrócone wszystkie wystąpienia. Prawidłowe wystąpienia to: O365Worldwide, O365China, O365Germany, O365USGovDoD, O365USGovGCCHigh

Wynikiem metody sieci Web Version (Wersja) może być pojedynczy rekord lub tablica rekordów. Elementy każdego rekordu to:

  • instance — krótka nazwa wystąpienia usługi Office 365.

  • latest — najnowsza wersja dla punktów końcowych określonego wystąpienia.

  • versions — opcjonalna lista wszystkich poprzednich wersji dla określonego wystąpienia.

Przykłady:

Przykład 1. Identyfikator URI żądania: https://endpoints.office.com/version?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Ten identyfikator URI zwraca najnowszą wersję każdego wystąpienia usługi Office 365. Przykład wyniku:

[{"instance":"O365Worldwide","latest":"2018030200"},{"instance":"O365China","latest":"2018020100"},{"instance":"O365Germany","latest":"2018020100"},{"instance":"O365USGovDoD","latest":"2018030200"},{"instance":"O365USGovGCCHigh","latest":"2018030200"}]

Ważne: Identyfikator GUID parametru ClientRequestID w tych identyfikatorach URI to tylko przykład. Aby wypróbować identyfikatory URI usługi sieci Web, wygeneruj własny identyfikator GUID. Identyfikatory GUID pokazane w tych przykładach mogą zostać w przyszłości zablokowane przez usługę sieci Web.

Przykład 2. Identyfikator URI żądania: https://endpoints.office.com/version/O365Worldwide?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Ten identyfikator URI zwraca najnowszą wersję określonego wystąpienia usługi Office 365. Przykład wyniku:

{"instance":"O365Worldwide","latest":"2018031302"}

Przykład 3. Identyfikator URI żądania: https://endpoints.office.com/version/O365Worldwide?Format=CSV&ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Ten identyfikator URI pokazuje dane wyjściowe w formacie CSV. Przykład wyniku:

instance,latest
O365Worldwide,2018031302

Przykład 4. Identyfikator URI żądania: https://endpoints.office.com/version/O365Worldwide?Format=CSV&AllVersions=true&ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Ten identyfikator URI przedstawia wszystkie wcześniejsze wersje, które zostały opublikowane dla wystąpienia usługi Office 365 Worldwide. Przykład wyniku:

{"instance":"O365Worldwide","latest":"2018031302","versions":["2018031302","2018031301","2018031300","2018030200","2018020701","2018020700","2018020100","2017121200","2017120800"]}

Metoda sieci Web Endpoints (Punkty końcowe)

Metoda sieci Web Endpoints (Punkty końcowe) zwraca wszystkie rekordy dla zakresów adresów IP i adresów URL, które tworzą usługę Office 365. Parametry metody sieci Web Endpoints (Punkty końcowe) to:

  • ServiceAreas — parametr ciągu zapytania. Rozdzielona przecinkami lista obszarów usługi. Prawidłowe elementy to Common, Exchange, SharePoint, Skype. Elementy obszaru usługi Common są wymaganiem wstępnym dla wszystkich pozostałych obszarów usługi, dlatego usługa sieci Web będzie je zawsze uwzględniać. Jeśli nie uwzględnisz tego parametru, będą zwracane wszystkie obszary usługi.

  • TenantName — parametr ciągu zapytania. Nazwa Twojej dzierżawy usługi Office 365. Usługa sieci Web pobiera Twoją podaną nazwę i wstawia ja w częściach adresów URL zawierających nazwę dzierżawy. Jeśli nie podasz nazwy dzierżawy, te części adresów URL przyjmą symbol wieloznaczny (*). Parametr TenantName nie jest uwzględniany w wersji Preview.

  • Instance — parametr trasy. Ten parametr wymagany określa wystąpienie, dla którego mają zostać zwrócone punkty końcowe. Prawidłowe wystąpienia to: O365Worldwide, O365China, O365Germany, O365USGovDoD, O365USGovGCCHigh.

Wynikiem metody sieci Web Endpoints (Punkty końcowe) jest tablica rekordów, w której każdy rekord odzwierciedla zestaw punktów końcowych. Elementy dla każdego rekordu to:

  • id — niezmienialny numer identyfikacyjny zestawu punktów końcowych. Wymagany.

  • serviceArea — obszar usługi, do której to należy: Common, Exchange, SharePoint lub Skype. Wymagany.

  • defaultUrls — adresy URL zestawu punktów końcowych będących w kategorii „Defalut” (Domyślne). Tabela JSON rekordów DNS.

  • allowUrls — adresy URL zestawu punktów końcowych będących w kategorii „Allow” (Zezwalaj). Tabela JSON rekordów DNS.

  • optimizeUrls — adresy URL zestawu punktów końcowych będących w kategorii „Optimize” (Optymalizuj). Tabela JSON rekordów DNS.

  • defaultTcpPorts — porty TCP zestawu punktów końcowych będących w kategorii „Defalut” (Domyślne). Wszystkie elementy portów są formatowane jako rozdzielona przecinkami lista portów lub zakresy portów rozdzielone znakiem kreski (-). Porty danej kategorii są stosowane do wszystkich adresów IP w tym zestawie punktów końcowych. Porty danej kategorii są stosowanie również do wszystkich adresów URL w tym zestawie punktów końcowych dla tej kategorii, a także dla niższych kategorii. Niższe kategorie są zdefiniowane w kolejności Optimize (Optymalizuj), Allow (Zezwalaj) i Default (Domyślne), gdzie Default (Domyślne) jest najniższa.

  • allowTcpPorts — porty TCP dla zakresów adresów IP w tym zestawie punktów końcowych będące w kategorii „Allow” (Zezwalaj).

  • optimizeTcpPorts — porty TCP dla zakresów adresów IP w tym zestawie punktów końcowych będące w kategorii „Optimize” (Optymalizuj).

  • defaultUdpPorts — porty UDP dla zakresów adresów IP w tym zestawie punktów końcowych będące w kategorii „Default” (Domyślne).

  • allowUdpPorts — porty UDP dla zakresów adresów IP w tym zestawie punktów końcowych będące w kategorii „Allow” (Zezwalaj).

  • optimizeUdpPorts — porty UDP dla zakresów adresów IP w tym zestawie punktów końcowych będące w kategorii „Optimize” (Optymalizuj).

  • ips — zakresy adresów IP skojarzone z tym zestawem punktów końcowych jako skojarzone z wymienionymi portami TCP lub UDP.

  • expressRoute — True (Prawda) lub False (Fałsz), jeśli ten zestaw punktów końcowych jest kierowany przez usługę ExpressRoute. Wymagany.

  • optionalImpact — Jeśli ten zestaw punktów końcowych jest opcjonalny, ten tekst zawiera opis funkcji usługi Office 365, których zabraknie, jeśli nie będzie można uzyskać dostępu do punktów końcowych w tym zestawie punktów końcowych. Jeśli zestaw punktów końcowych nie jest opcjonalny, ten element jest wykluczany.

Wszystkie elementy niewymienione jako wymagane są opcjonalne w danych wyjściowych architektury REST.

Przykłady:

Przykład 1. Identyfikator URI żądania: https://endpoints.office.com/endpoints/O365Worldwide?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Ten identyfikator URI uzyskuje wszystkie punkty końcowe wystąpienia usługi Office 365 Worldwide dla wszystkich obciążeń. Przykład wyniku przedstawiający fragment danych wyjściowych:

[
  {
    "id":1,
    "serviceArea":"Exchange",
    "allowUrls":["*.protection.outlook.com"],
    "allowTcpPorts":"443",
    "expressRoute":true
  },
  {"id":2,
    "serviceArea":"Exchange",
    "allowUrls":["*.mail.protection.outlook.com"],
    "allowTcpPorts":"25",
    "expressRoute":true
  }, 
  {
    "id":3,
    "serviceArea":"Exchange",
    "ips":["213.199.154.0/24","213.199.180.128/26","94.245.120.64/26",
    "207.46.163.0/24","216.32.180.0/23","23.103.144.0/20","65.55.88.0/24",
    "65.55.169.0/24","207.46.100.0/24","104.47.0.0/17",
    "2a01:111:f400:fc00::/54","157.55.234.0/24","157.56.112.0/24","157.56.110.0/23",
    "23.103.200.0/22","2a01:111:f400:7c00::/54","23.103.132.0/22","23.103.136.0/21",
    "23.103.198.0/23","23.103.212.0/22","40.92.0.0/14","40.107.0.0/17",
    "40.107.128.0/18","52.100.0.0/14","2a01:111:f403::/48"],
    "allowTcpPorts":"25,443",
    "expressRoute":true
  },
...

Dodatkowe zestawy punktów końcowych nie są uwzględnione w tym przykładzie.

Przykład 2. Identyfikator URI żądania: https://endpoints.office.com/endpoints/O365Worldwide?ServiceAreas=Exchange&ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Ten przykład uzyskuje punkty końcowe tylko dla wystąpienia usługi Office 365 Worldwide dla usługi Exchange Online i zależności.

Wynik dla przykładu 2 jest podobny do przykładu 1 z tym wyjątkiem, że wyniki nie będą zawierać punktów końcowych dla usługi SharePoint Online lub Skype dla firm Online.

Metoda sieci Web Changes (Zmiany)

Metoda sieci Web Changes (Zmiany) zwraca najnowsze opublikowane zmiany. Są to zazwyczaj zmiany z poprzedniego miesiąca w adresach URL i zakresach adresów IP.

Parametr metody sieci Web Changes (Zmiany) to:

  • Version — wymagany parametr trasy adresu URL. Wersja, która jest obecnie zaimplementowana, i od której chcesz wyświetlić zmiany. Format to RRRRMMDDLN.

Wynikiem metody sieci Web Changes (Zmiany) jest tablica rekordów, w której każdy rekord odzwierciedla zmianę w konkretnej wersji punktów końcowych. Elementy dla każdego rekordu to:

  • id — niezmienialny identyfikator rekordu zmiany. Wymagany.

  • endpointSetId — identyfikator zmienianego rekordu zestawu punktów końcowych. Wymagany.

  • changeDescription — opis tekstowy zmiany. Wymagany.

  • disposition — może to być zmiana, dodanie lub usunięcie i opisuje, co spowodowała zmiana w rekordzie zestawu punktów końcowych. Wymagany.

  • version — wersja opublikowanego zestawu punktów końcowych, w którym wprowadzono zmianę. Numery wersji są w formacie RRRRMMDDLN, gdzie LN to liczba naturalna zwiększana, jeśli jednego dnia jest wymagane opublikowanie wielu wersji.

  • previous — struktura podrzędna z wyszczególnionymi poprzednimi wartościami zmienionych elementów w zestawie punktów końcowych. Nie będzie ona uwzględniana dla nowo dodanych zestawów punktów końcowych. Obejmuje parametry defaultTcpPorts, allowTcpPorts, optimizeTcpPorts, defaultUdpPorts, allowUdpPorts, optimizeUdpPorts, ExpressRoute, optionalImpact.

  • current — struktura podrzędna z wyszczególnionymi zaktualizowanymi wartościami elementów zmian w zestawie punktów końcowych. Obejmuje parametry defaultTcpPorts, allowTcpPorts, optimizeTcpPorts, defaultUdpPorts, allowUdpPorts, optimizeUdpPorts, ExpressRoute, optionalImpact.

  • add — struktura podrzędna z wyszczególnionymi elementami do dodania do kolekcji zestawów punktów końcowych.

    • effectiveDate — definiuje datę, od której dodania zaczną istnieć w usłudze.

    • ips — elementy do dodania do tablicy adresów IP.

    • defaultUrls — elementy do dodania do tablicy defaultUrls.

    • allowUrls — elementy do dodania do tablicy allowUrls.

    • optimizeUrls — elementy do dodania do tablicy optimizeUrls.

  • remove — struktura podrzędna z wyszczególnionymi elementami do usunięcia z zestawu punktów końcowych.

    • ips — elementy do usunięcia z tablicy ips.

    • defaultUrls — elementy do usunięcia z tablicy defaultUrls.

    • allowUrls — elementy do usunięcia z tablicy allowUrls.

    • optimizeUrls — elementy do usunięcia z tablicy optimizeUrls.

Przykłady:

Przykład 1. Identyfikator URI żądania: https://endpoints.office.com/changes/o365worldwide/0000000000?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

To żąda wszystkich wcześniejszych zmian w wystąpieniu usługi Office 365 Worldwide. Przykład wyniku:

[
  {
    "id":2,
    "endpointSetId":118,
    "changeDescription":"Adding a OneNote endpoint",
    "disposition":"Change",
    "version":"2018030200",
    "add":{
      "effectiveDate":"20180401",
      "allowUrls":["officeapps.live.com"]
    }
  },
  {
    "id":3,
    "endpointSetId":33,
    "changeDescription":"Removing old IP prefixes",
    "disposition":"Change",
    "version":"2018031301",
    "remove":{
      "ips":["65.55.127.0/24","66.119.157.192/26","66.119.158.0/25",
        "111.221.76.128/25","111.221.77.0/26","207.46.5.0/24"]
    }
  },
  {
    "id":4,
    "endpointSetId":45,
    "changeDescription":"Removing old IP prefixes",
    "disposition":"Change",
    "version":"2018031301",
    "remove":{
      "ips":["13.78.93.8/32","40.113.87.220/32","40.114.149.220/32",
      "40.117.100.83/32","40.118.214.164/32","104.208.31.113/32"]
    }
  }
]

Przykład 2. Identyfikator URI żądania: https://endpoints.office.com/changes/o365worldwide?version=2018031300&ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

To żąda zmian od określonej wersji w wystąpieniu usługi Office 365 Worldwide. Przykład wyniku:

[
  {
    "id":3,
    "endpointSetId":33,
    "changeDescription":"Removing old IP prefixes",
    "disposition":"Change",
    "version":"2018031301",
    "remove":{
      "ips":["65.55.127.0/24","66.119.157.192/26","66.119.158.0/25",
      "111.221.76.128/25","111.221.77.0/26","207.46.5.0/24"]
    }
  },
  {
    "id":4,
    "endpointSetId":45,
    "changeDescription":"Removing old IP prefixes",
    "disposition":"Change",
    "version":"2018031301",
    "remove":{
      "ips":["13.78.93.8/32","40.113.87.220/32","40.114.149.220/32",
      "40.117.100.83/32","40.118.214.164/32","104.208.31.113/32"]
    }
  }
]

Przykładowy skrypt programu PowerShell

Oto skrypt programu PowerShell, który można uruchomić, aby sprawdzić, czy istnieją akcje do wykonania dla zaktualizowanych danych. Ten skrypt sprawdza numer wersji dla punktów końcowych wystąpienia usługi Office 365 Worldwide. Gdy nastąpi zmiana, pobiera on punkty końcowe i odfiltrowuje punkty końcowe z kategorii „Allow” (Zezwalaj). Używa on także unikatowego identyfikatora ClientRequestId w wielu połączeniach i zapisuje najnowszą znalezioną wersję w pliku tymczasowym. Ten skrypt należy wywoływać raz na godzinę w celu sprawdzenia dostępności aktualizacji wersji.

# webservice root URL
$ws = "https://endpoints.office.com"

# path where client ID and latest version number will be stored
$datapath = $Env:TEMP + "\endpoints_clientid_latestversion.txt"

# fetch client ID and version if data file exists; otherwise create new file
if (Test-Path $datapath) {
    $content = Get-Content $datapath
    $clientRequestId = $content[0]
    $lastVersion = $content[1]
}
else {
    $clientRequestId = [GUID]::NewGuid().Guid
    $lastVersion = "0000000000"
    @($clientRequestId, $lastVersion) | Out-File $datapath
}

# call version method to check the latest version, and pull new data if version number is different
$version = Invoke-RestMethod -Uri ($ws + "/version/O365Worldwide?clientRequestId=" + $clientRequestId)
if ($version.latest -gt $lastVersion) {
    Write-Host "New version of Office 365 worldwide commercial service instance endpoints detected"
    
    # write the new version number to the data file
    @($clientRequestId, $version.latest) | Out-File $datapath
    
    # invoke endpoints method to get the new data
    $endpointSets = Invoke-RestMethod -Uri ($ws + "/endpoints/O365Worldwide?clientRequestId=" + $clientRequestId)

    # filter results for Allow and Optimize endpoints, and transform these into custom objects with port and category
    $flatUrls = $endpointSets | ForEach-Object {
        $endpointSet = $_
        $allowUrls = $(if ($endpointSet.allowUrls.Count -gt 0) { $endpointSet.allowUrls } else { @() })
        $optimizeUrls = $(if ($endpointSet.optimizeUrls.Count -gt 0) { $endpointSet.optimizeUrls } else { @() })
        
        $allowUrlCustomObjects = $allowUrls | ForEach-Object {
            [PSCustomObject]@{
                category = "Allow";
                url      = $_;
                # Allow URLs should permit traffic across both Allow and Optimize ports
                tcpPorts = (($endpointSet.allowTcpPorts, $endpointSet.optimizeTcpPorts) | Where-Object { $_ -ne $null }) -join ",";
                udpPorts = (($endpointSet.allowUdpPorts, $endpointSet.optimizeUdpPorts) | Where-Object { $_ -ne $null }) -join ",";
            }
        }
        $optimizeUrlCustomObjects = $optimizeUrls | ForEach-Object {
            [PSCustomObject]@{
                category = "Optimize";
                url      = $_;
                tcpPorts = $endpointSet.optimizeTcpPorts;
                udpPorts = $endpointSet.optimizeUdpPorts;
            }
        }
        $allowUrlCustomObjects, $optimizeUrlCustomObjects
    }

    $flatIps = $endpointSets | ForEach-Object {
        $endpointSet = $_
        $ips = $(if ($endpointSet.ips.Count -gt 0) { $endpointSet.ips } else { @() })
        # IPv4 strings have dots while IPv6 strings have colons
        $ip4s = $ips | Where-Object { $_ -like '*.*' }
        
        $allowIpCustomObjects = @()
        if ($endpointSet.allowTcpPorts -or $endpointSet.allowUdpPorts) {
            $allowIpCustomObjects = $ip4s | ForEach-Object {
                [PSCustomObject]@{
                    category = "Allow";
                    ip = $_;
                    tcpPorts = $endpointSet.allowTcpPorts;
                    udpPorts = $endpointSet.allowUdpPorts;
                }
            }
        }
        $optimizeIpCustomObjects = @()
        if ($endpointSet.optimizeTcpPorts -or $endpointSet.optimizeUdpPorts) {
            $optimizeIpCustomObjects = $ip4s | ForEach-Object {
                [PSCustomObject]@{
                    category = "Optimize";
                    ip       = $_;
                    tcpPorts = $endpointSet.optimizeTcpPorts;
                    udpPorts = $endpointSet.optimizeUdpPorts;
                }                
            }
        }
        $allowIpCustomObjects, $optimizeIpCustomObjects
    }
    
    Write-Output "IPV4 Firewall IP Address Ranges"
    ($flatIps.ip | Sort-Object -Unique) -join "," | Out-String

    Write-Output "URLs for Proxy Server"
    ($flatUrls.url | Sort-Object -Unique) -join "," | Out-String

    # TODO Call Send-MailMessage with new endpoints data
}
else {
    Write-Host "Office 365 worldwide commercial service instance endpoints are up-to-date"
}

Przykładowy skrypt w języku Python

Oto skrypt w języku Python przetestowany w programie Python 3.6.3 w systemie Windows 10, który można uruchomić w celu sprawdzenia, czy istnieją akcje do wykonania dla zaktualizowanych danych. Ten skrypt sprawdza numer wersji dla punktów końcowych wystąpienia usługi Office 365 Worldwide. Gdy nastąpi zmiana, pobiera on punkty końcowe i odfiltrowuje punkty końcowe z kategorii „Allow” (Zezwalaj). Używa on także unikatowego identyfikatora ClientRequestId w wielu połączeniach i zapisuje najnowszą znalezioną wersję w pliku tymczasowym. Ten skrypt należy wywoływać raz na godzinę w celu sprawdzenia dostępności aktualizacji wersji.

import json
import os
import urllib.request
import uuid

# helper to call the webservice and parse the response
def webApiGet(methodName, instanceName, clientRequestId):
    ws = "https://endpoints.office.com"
    requestPath = ws + '/' + methodName + '/' + instanceName + '?clientRequestId=' + clientRequestId
    request = urllib.request.Request(requestPath)
    with urllib.request.urlopen(request) as response:
        return json.loads(response.read().decode())

# path where client ID and latest version number will be stored
datapath = os.environ['TEMP'] + '\endpoints_clientid_latestversion.txt'

# fetch client ID and version if data exists; otherwise create new file
if os.path.exists(datapath):
    with open(datapath, 'r') as fin:
        clientRequestId = fin.readline().strip()
        latestVersion = fin.readline().strip()
else:
    clientRequestId = str(uuid.uuid4())
    latestVersion = '0000000000'
    with open(datapath, 'w') as fout:
        fout.write(clientRequestId + '\n' + latestVersion)

# call version method to check the latest version, and pull new data if version number is different
version = webApiGet('version', 'O365Worldwide', clientRequestId)
if version['latest'] > latestVersion:
    print('New version of Office 365 worldwide commercial service instance endpoints detected')

    # write the new version number to the data file
    with open(datapath, 'w') as fout:
       fout.write(clientRequestId + '\n' + version['latest'])

    # invoke endpoints method to get the new data
    endpointSets = webApiGet('endpoints', 'O365Worldwide', clientRequestId)

    # filter results for Allow and Optimize endpoints, and transform these into tuples with port and category
    flatUrls = []
    for endpointSet in endpointSets:
        allowUrls = endpointSet['allowUrls'] if 'allowUrls' in endpointSet else []
        optimizeUrls = endpointSet['optimizeUrls'] if 'optimizeUrls' in endpointSet else []

        # Allow URLs should permit traffic across both Allow and Optimize ports
        allowTcpPorts = endpointSet['allowTcpPorts'] if 'allowTcpPorts' in endpointSet else ''
        optimizeTcpPorts = endpointSet['optimizeTcpPorts'] if 'optimizeTcpPorts' in endpointSet else ''
        allTcpPorts = ','.join([ports for ports in [allowTcpPorts, optimizeTcpPorts] if ports != ''])

        allowUdpPorts = endpointSet['allowUdpPorts'] if 'allowUdpPorts' in endpointSet else ''
        optimizeUdpPorts = endpointSet['optimizeUdpPorts'] if 'optimizeUdpPorts' in endpointSet else ''
        allUdpPorts = ','.join([ports for ports in [allowUdpPorts, optimizeUdpPorts] if ports != ''])

        flatUrls.extend([('Allow', allowUrl, allTcpPorts, allUdpPorts) for allowUrl in allowUrls])
        flatUrls.extend([('Optimize', optimizeUrl, optimizeTcpPorts, optimizeUdpPorts) for optimizeUrl in optimizeUrls])

    flatIps = []
    for endpointSet in endpointSets:
        ips = endpointSet['ips'] if 'ips' in endpointSet else []
        # IPv4 strings have dots while IPv6 strings have colons
        ip4s = [ip for ip in ips if '.' in ip]
        if 'allowTcpPorts' in endpointSet or 'allowUdpPorts' in endpointSet:
            allowTcpPorts = endpointSet['allowTcpPorts'] if 'allowTcpPorts' in endpointSet else ''
            allowUdpPorts = endpointSet['allowUdpPorts'] if 'allowUdpPorts' in endpointSet else ''
            flatIps.extend([('Allow', ip, allowTcpPorts, allowUdpPorts) for ip in ip4s])
        if 'optimizeTcpPorts' in endpointSet or 'optimizeUdpPorts' in endpointSet:
            optimizeTcpPorts = endpointSet['optimizeTcpPorts'] if 'optimizeTcpPorts' in endpointSet else ''
            optimizeUdpPorts = endpointSet['optimizeUdpPorts'] if 'optimizeUdpPorts' in endpointSet else ''
            flatIps.extend([('Optimize', ip, optimizeTcpPorts, optimizeUdpPorts) for ip in ip4s])

    print('IPv4 Firewall IP Address Ranges')
    print(','.join(sorted(set([ip for (category, ip, tcpPorts, udpPorts) in flatIps]))))

    print('URLs for Proxy Server')
    print(','.join(sorted(set([url for (category, url, tcpPorts, udpPorts) in flatUrls]))))

    # TODO send mail (e.g. with smtplib/email modules) with new endpoints data

else:
    print('Office 365 worldwide commercial service instance endpoints are up-to-date')

Przechowywanie wersji interfejsu usługi sieci Web

W przyszłości mogą być wymagane aktualizacje parametrów lub wyników tych metod usługi sieci Web. Po opublikowaniu wersji ogólnodostępnej tych usług sieci Web firma Microsoft podejmie uzasadnione starania w celu udostępnienia z wyprzedzeniem powiadomienia o istotnych aktualizacjach usługi sieci Web. Gdy firma Microsoft uzna, że aktualizacja będzie wymagała zmian w klientach korzystających z usługi sieci Web, pozostawi dostępną poprzednią wersję (jedną wersję wstecz) usługi sieci Web przez co najmniej dwanaście (12) miesięcy po wydaniu nowej wersji. Klienci, którzy nie przeprowadzą uaktualnienia w tym czasie, mogą nie być w stanie uzyskiwać dostępu do usługi sieci Web i jej metod. Klienci muszą zapewnić, że klienci usługi sieci Web nadal działają bezbłędnie, jeśli wprowadzono następujące zmiany w podpisie interfejsu usługi sieci Web:

  • Dodanie nowego parametru opcjonalnego do istniejącej metody sieci Web, która nie musi być dostarczana przez starszych klientów i nie ma wpływu na wynik otrzymywany przez starszego klienta.

  • Dodanie nowego nazwanego atrybutu w jednym z elementów odpowiedzi architektury REST lub dodatkowych kolumn do pliku CSV odpowiedzi.

  • Dodanie nowej metody sieci Web z nową nazwą, która nie jest wywoływana przez starszych klientów.

Często zadawane przez administratorów pytania dotyczące łączności:

Kliknij link na dole, aby poinformować, czy artykuł był pomocny, oraz przesłać wszelkie dodatkowe pytania. Monitorujemy opinie i uzupełniamy znajdujące się tutaj pytania o najczęściej zadawane.

Po zaanonsowaniu nowych punktów końcowych zwykle następuje co najmniej 30-dniowy okres, po którym zaczynają one działać, odbierając żądania sieciowe. Ten bufor czasowy ma na celu umożliwienie klientom i partnerom zaktualizowania swoich systemów. Dodawane i usuwane nazwy FQDN i prefiksy IP są przetwarzane w pliku XML podczas anonsowania, co oznacza, że nowa nazwa FQDN będzie się znajdować w pliku XML 30 dni przed jej użyciem. Zaprzestanie wysyłania żądań sieciowych do usuwanych punktów końcowych następuje przed zaanonsowaniem usunięcia tych punktów końcowych. Dlatego punkt końcowy usuwany z pliku XML podczas anonsowania nie jest już używany.

Punkty końcowe usługi Office 365 są publikowane pod koniec każdego miesiąca, z 30-dniowym wyprzedzeniem. Od czasu do czasu zmiany występują częściej niż raz w miesiącu lub z krótszym wyprzedzeniem. Po dodaniu punktu końcowego data wprowadzenia podana w kanale informacyjnym RSS jest datą, po której żądania sieciowe będą przesyłane do tego punktu końcowego. Jeśli nie masz jeszcze doświadczenia w korzystaniu z kanału informacyjnego RSS, zobacz instrukcje dotyczące subskrybowania przy użyciu programu Outlook. Możesz też zamówić otrzymywanie informacji o aktualizacjach kanału informacyjnego RSS pocztą e-mail.

Po zasubskrybowaniu kanału informacyjnego RSS można przeanalizować informacje samodzielnie lub za pomocą skryptu. W celu ułatwienia tego w poniższej tabeli opisano format kanału informacyjnego RSS.

Sekcja

Część 1

Część 2

Część 3

Część 4

Część 5

Część 6

Opis

Licznik

Data, po upływie której możesz oczekiwać wysłania żądań sieciowych do punktu końcowego.

Podstawowy opis funkcji lub usługi, która wymaga punktu końcowego.

Czy możesz połączyć się z tym punktem końcowym w obwodzie usługi ExpressRoute poza Internetem?

Yes (Tak) — możesz połączyć się z tym punktem końcowym zarówno w Internecie, jak i w usłudze ExpressRoute.

No (Nie) — możesz połączyć się z tym punktem końcowym tylko w Internecie.

Dodawana lub usuwana docelowa nazwa FQDN lub zakres adresów IP.

Przykład

1/

[Effective xx/xx/xxx.

Required: <opis>.

ExpressRoute:

<Yes/No>.

<FQDN/IP>],

Kilka innych kwestii, na które należy zwrócić uwagę — każdy wpis ma wspólny zestaw ograniczników:

  • / — po liczbie

  • [ — do oznaczania wpisu dla liczby

  • . — używany między każdą odrębną sekcją wpisu

  • ], — do oznaczania końca pojedynczego wpisu

  • ]. — do oznaczania końca wszystkich wpisów

Lokalizację dzierżawy najlepiej jest ustalić za pomocą naszej mapy centrów danych.

Lokalizacje komunikacji równorzędnej opisano bardziej szczegółowo w informacjach o komunikacji równorzędnej z firmą Microsoft.

Przy ponad 2500 relacjach komunikacji równorzędnej z usługodawcami internetowymi na całym świecie i 70 punktach obecności komunikacja z Twojej sieci do naszej powinna być bezproblemowa. Warto poświęcić kilka minut na upewnienie się, że relacja komunikacji równorzędnej z usługodawcą internetowym jest optymalna. Oto kilka przykładów dobrych i niezbyt dobrych przekierowań w komunikacji równorzędnej do naszej sieci.

Akceptowane trasy usługi ExpressRoute są definiowane przez zakresy adresów IP firmy Microsoft i konkretne Office 365społeczności BGP.

Regularnie dodajemy nowe funkcje i usługi do pakietu usługi Office 365, rozszerzając środowisko łączności. Jeśli masz subskrypcję jednostki SKU E3 lub E5, najprościej uznać wszystkie punkty końcowe na liście za niezbędne do zapewnienia pełnej funkcjonalności pakietu. Jeśli nie masz subskrypcji żadnej z tych jednostek SKU, różnica w kontekście liczby punktów końcowych jest minimalna.

Przeczytaj Zasady łączności sieciowej usługi Office 365, aby uzyskać więcej informacji o kategoriach punktów końcowych usługi Office 365 i zrozumieć zasady łączności w celu bezpiecznego zarządzania ruchem usługi Office 365 i uzyskiwania najlepszej możliwej wydajności.

Na poniższym obrazie przedstawiono przykład części tabeli nazw FQDN w sekcji Office Online. Wiersze są uporządkowane według funkcji i różnic w zakresie łączności. Pierwsze dwa wiersze wskazują, że aplikacje Office Online zależą od punktów końcowych oznaczonych jako Wymagane w sekcjach Office 365 — uwierzytelnianie i tożsamość oraz portal i usługi współużytkowane. Poleganie na tych usługach udostępnionych jest typowe dla usługi wchodzącej w skład usługi Office 365. Trzeci wiersz wskazuje, że komputery klienckie muszą mieć możliwość dostępu do witryny *.officeapps.live.com, aby używać aplikacji Office Online. Czwarty wiersz wskazuje, że komputery muszą również mieć możliwość dostępu do witryny *.cdn.office.net, aby używać aplikacji Office Online.

Pomimo że oba te wiersze (trzeci i czwarty) są wymagane do używania aplikacji Office Online, zostały rozdzielone, aby wskazać na różnicę w miejscu docelowym:

  1. Pozycja *.officeapps.live.com nie odzwierciedla sieci CDN. Oznacza to, że żądania kierowane do tej przestrzeni nazw będą przechodzić bezpośrednio do centrum danych firmy Microsoft.

  2. Witryna *.officeapps.live.com jest dostępna w obwodach usługi ExpressRoute za pośrednictwem komunikacji równorzędnej firmy Microsoft.

  3. Adresy IP skojarzone z aplikacjami Office Online oraz witryną *.officeapps.live.com można znaleźć, korzystając z tego linku.

  4. Pozycja *.cdn.office.net odzwierciedla sieć CDN hostowaną przez firmę Akamai. Oznacza to, że żądania kierowane do tej przestrzeni nazw będą przechodzić do centrum danych firmy Akamai.

  5. Witryna *.cdn.office.net nie jest dostępna w obwodach usługi ExpressRoute.

  6. Adresy IP skojarzone z aplikacjami Office Online i witryną *.cdn.office.net nie są dostępne.

Zrzut ekranu przedstawiający stronę punktów końcowych

Udostępniamy wyłącznie adresy IP serwerów usługi Office 365, pod które należy bezpośrednio kierować ruch przez Internet lub usługę ExpressRoute. Nie jest to pełna lista wszystkich adresów IP, pod które skierowane są żądania sieciowe. Będą też występować żądania sieciowe skierowane pod nieopublikowane adresy IP należące do firmy Microsoft i innych podmiotów. Te adresy IP są generowane dynamicznie lub zarządzane w sposób uniemożliwiający terminowe powiadomienia o ich zmianie. Jeśli zapora nie zezwala na dostęp dla tych żądań sieciowych na podstawie nazw FQDN, zarządzaj nimi za pomocą pliku PAC lub WPAD.

Widzisz skojarzony z usługą Office 365 adres IP i chcesz uzyskać na jego temat więcej informacji?

  1. Sprawdź, czy dany adres IP nie należy do większego opublikowanego zakresu, za pomocą kalkulatora CIDR.

  2. Sprawdź, czy dany adres IP nie należy do partnera, za pomocą zapytania whois. Jeśli należy on do firmy Microsoft, jego właścicielem może być partner wewnętrzny.

  3. Sprawdź certyfikat: w przeglądarce połącz się z adresem IP, wpisując ciąg HTTPS://<ADRES_IP>, a następnie sprawdź domeny podane w certyfikacie, aby zobaczyć, które domeny są skojarzone z tym adresem IP. Jeśli ten adres IP należy do firmy Microsoft i nie znajduje się na liście adresów IP usługi Office 365, prawdopodobnie jest skojarzony z siecią CDN firmy Microsoft, taką jak MSOCDN.NET, lub inną domeną firmy Microsoft, dla której nie ma opublikowanych informacji o adresie IP. Jeśli ustalisz, że domena podana w certyfikacie jest domeną, dla której zapewniamy publikowanie adresu IP, poinformuj nas o tym.

Usługa Office 365 i inne usługi firmy Microsoft używają kilku usług innych firm, takich jak Akamai i MarkMonitor, aby ulepszyć Twoje środowisko usługi Office 365. Aby stale zapewniać Ci jak najlepszą łączność w środowisku pracy, możemy zmieniać te usługi w przyszłości. W ten sposób często publikujemy rekord CNAME wskazujący domenę, rekord lub adres IP innego podmiotu. W domenach innych podmiotów może być hostowana zawartość, taka jak sieć dostarczania zawartości, lub usługi, takie jak usługa zarządzania ruchem geograficznym. Gdy są widoczne połączenia do tych innych firm, mają one postać przekierowania lub odwołania, a nie żądania początkowego od klienta. Niektórzy klienci muszą zadbać o zezwolenie na przekazanie takiego przekierowania lub odwołania bez jawnego dodawania długiej listy potencjalnych nazw FQDN, jakich mogą używać usługi innych dostawców.

Lista usług może ulec zmianie w dowolnym momencie. Oto niektóre usługi, które są obecnie używane:

Usługa MarkMonitor jest w użyciu, gdy widzisz żądania zawierające domenę *.nsatc.net. Ta usługa udostępnia funkcje ochrony i monitorowania nazw domen w celu ich zabezpieczenia przez złośliwym zachowaniem.

Usługa ExactTarget jest w użyciu, gdy widzisz żądania dotyczące domeny *.exacttarget.com. Ta usługa udostępnia funkcje zarządzania linkami w wiadomościach e-mail i monitorowania ich w celu ochrony przez złośliwym zachowaniem.

Usługa Akamai jest w użyciu, gdy widzisz żądania zawierające jedną z poniższych nazw FQDN. Ta usługa oferuje usługi DNS oparte na lokalizacji geograficznej oraz usługi sieci dostarczania zawartości.

*.akadns.net
*.akam.net
*.akamai.com
*.akamai.net
*.akamaiedge.net
*.akamaihd.net
*.akamaized.net
*.edgekey.net
*.edgesuite.net

  • Łączysz się z usługami innych firm, aby uzyskiwać podstawowe usługi internetowe, takie jak wyszukiwania DNS i pobieranie zawartości sieci CDN. Łączysz się również z usługami innych firm na potrzeby integracji, takich jak dołączanie klipów wideo z serwisu YouTube do notesów programu OneNote.

  • Łączysz się z usługami pomocniczymi hostowanymi i prowadzonymi przez firmę Microsoft, takimi jak węzły brzegowe, które umożliwiają Twojej sieci zgłaszanie żądań wejścia do globalnej sieci firmy Microsoft w lokalizacji internetowej najbliższej względem Twojego komputera. Ponieważ jest to trzecia największa sieć na świecie, usprawnia to Twoją łączność. Łączysz się również z usługami platformy Microsoft Azure, takimi jak usługi Azure Media Services, które są używane przez wiele różnych usług Office 365.

  • Łączysz się z podstawowymi usługami Office 365, takimi jak serwer skrzynki pocztowej usługi Exchange Online lub serwer usługi Skype dla firm Online, na których znajdują się Twoje własne unikatowe dane. Możesz łączyć się z podstawowymi usługami Office 365 za pomocą nazwy FQDN lub adresu IP i używać obwodów internetowych lub obwodów usługi ExpressRoute. Możesz łączyć się z usługami innych firm i usługami pomocniczymi tylko za pomocą nazw FQDN i obwodu internetowego.

Na poniższym diagramie przedstawiono różnice między tymi obszarami usług. Na tym diagramie sieć lokalna klienta w lewym dolnym rogu zawiera wiele urządzeń sieciowych, które pomagają w zarządzaniu łącznością sieciową. Konfiguracje podobne do tej są typowe dla klientów korporacyjnych. Konfiguracja sieci zawierająca tylko zaporę między komputerami klienckimi i Internetem jest również obsługiwana. W takim przypadku należy zagwarantować, że zapora może obsługiwać nazwy FQDN i symbole wieloznaczne w regułach listy dozwolonych.

Przeczytaj Zasady łączności sieciowej usługi Office 365, aby uzyskać więcej informacji o kategoriach punktów końcowych usługi Office 365 i zrozumieć zasady łączności w celu bezpiecznego zarządzania ruchem usługi Office 365 i uzyskiwania najlepszej możliwej wydajności.

Na ilustracji przedstawiono trzy różne typy sieciowych punktów końcowych w przypadku korzystania z usługi Office 365

Usługa Office 365 to pakiet usług zaprojektowanych do działania za pośrednictwem Internetu. Gwarancje dotyczące ich niezawodności i dostępności wymagają korzystania z wielu dostępnych standardowych usług internetowych. Na przykład, aby było możliwe korzystanie z usługi Office 365, muszą być osiągalne standardowe usługi internetowe, takie jak DNS, CRL i sieci CDN. Osiągalność tych usług jest wymagana do działania większości współczesnych usług internetowych.

Oprócz tych podstawowych usług internetowych istnieją usługi innych firm, które służą wyłącznie do integracji funkcjonalności. Na przykład korzystanie z usługi Giphy.com w aplikacji Microsoft Teams umożliwia klientom bezproblemowe umieszczenie obrazów GIF w aplikacji Microsoft Teams. Podobnie serwisy YouTube i Flickr są usługami innych firm umożliwiającymi bezproblemową integrację klipów wideo i obrazów z klientami pakietu Office za pośrednictwem Internetu. Ponieważ usługi te są wymagane na potrzeby integracji, są one oznaczone jako opcjonalne w artykule z opisem punktów końcowych usługi Office 365, co oznacza, że podstawowa funkcjonalność usługi będzie nadal działać, gdy dany punkt końcowy nie będzie dostępny.

Jeśli podczas próby korzystania z usługi Office 365 ustalono, że usługi innych firm są niedostępne, należy zadbać o to, aby przekazywanie przez serwer proxy lub zaporę wszystkich nazw FQDN oznaczonych w tym artykule jako wymaganych lub opcjonalnych było dozwolone.

Usługi pomocnicze to usługi firmy Microsoft, które nie są objęte kontrolą usługi Office 365. Są to między innymi: sieć brzegowa, usługi Azure Media Services i usługi Azure Content Delivery Network. Wszystkie z nich są wymagane do korzystania z usługi Office 365 i muszą być osiągalne.

Jeśli podczas próby korzystania z usługi Office 365 ustalono, że usługi innych firm są niedostępne, należy zadbać o to, aby przekazywanie przez serwer proxy lub zaporę wszystkich nazw FQDN oznaczonych w tym artykule jako wymaganych lub opcjonalnych było dozwolone.

Ograniczanie dostępu do naszych usług dla klientów indywidualnych wykonuje się na własne ryzyko — jedynym niezawodnym sposobem zablokowania usług dla klientów indywidualnych jest ograniczenie dostępu do nazwy FQDN login.live.com. Ta nazwa FQDN jest używana przez szeroki zestaw usług, w tym przez usługi inne niż dla klientów indywidualnych, takie jak między innymi MSDN i TechNet. Ograniczenie dostępu do tej nazwy FQDN może spowodować konieczność uwzględniania też wyjątków od tej reguły dla żądań sieciowych skojarzonych z tymi usługami.

Należy pamiętać, że samo zablokowanie dostępu do usług firmy Microsoft dla klientów indywidualnych nie uniemożliwi użytkownikom w Twojej sieci eksfiltrowania informacji za pomocą dzierżawy usługi Office 365 lub innej usługi.

Tematy pokrewne

Zakresy adresów IP centrum danych platformy Microsoft Azure
Przestrzeń publicznych adresów IP firmy Microsoft
Wymagania dotyczące infrastruktury sieciowej dla usługi Microsoft Intune
Usługi Power BI i ExpressRoute
Adresy URL i zakresy adresów IP usługi Office 365
Zarządzanie usługą ExpressRoute dla zapewnienia łączności usługi Office 365
Zasady łączności sieciowej usługi Office 365

Rozwijaj umiejętności związane z pakietem Office
Poznaj szkolenia
Uzyskuj nowe funkcje w pierwszej kolejności
Dołącz do niejawnych testerów pakietu Office

Czy te informacje były pomocne?

Dziękujemy za opinię!

Dziękujemy za opinię! Wygląda na to, że połączenie Cię z jednym z naszych agentów pomocy technicznej pakietu Office może być pomocne.

×