管理 Office 365 端點

附註:  我們想要以您的語言,用最快的速度為您提供最新的說明內容。 本頁面是經由自動翻譯而成,因此文中可能有文法錯誤或不準確之處。讓這些內容對您有所幫助是我們的目的。希望您能在本頁底部告訴我們這項資訊是否有幫助。 此為 英文文章 出處,以供參考。

Office 365 的網路連線能力

2018 年 3 月 8 日 通往 Office 365 的連線由大量信任的網路要求組成,當這些要求能在由接近使用者的低延遲輸出所提出的情況下發揮最佳效能。部分 Office 365 連線可受益於連線最佳化。

  1. 請確定您的防火牆允許清單允許連線至 Office 365 端點。

  2. 使用 Proxy 基礎結構來允許指向萬用字元以及未公開目的地的網際網路連線。

  3. 維持最佳周邊網路設定。

  4. 確保您可獲得最佳連線 (英文)。

  5. 閱讀Office 365 的網路連線原則,若要瞭解安全地管理 Office 365 流量,可能的最佳效能的連線原則。

透過防火牆和 Proxy 連線至 Office 365。

更新您防火牆的連出允許清單

您可以讓所有信任的 Office 365 網路要求直接通過防火牆,藉此略過所有額外的封包層級檢查或處理,進而最佳化網路效能。這麼做會減少因延遲導致效能變慢的問題,並減少周邊容量需求。若要選擇要信任哪些網路要求,最簡單的方法就是到上方的 [Proxy] 索引標籤使用我們預先建立的 PAC 檔案。

如果您的防火牆會封鎖輸出流量,則您必須確保這個 XML 檔案中列為「必要」的 IP 位址和 FQDN 都在允許清單上。辨識所有服務需要使用一些協力廠商服務。我們不會提供這些協力廠商服務 (例如憑證提供者、內容傳遞網路、DNS 提供者等) 的 IP 位址。無論我們針對該目的地所發佈資訊的多寡,您都必須能夠存取 Office 365 要求的所有目的地,才能擁有完整的 Office 365 功能。

許多目的地並沒有發佈的 IP 位址,或者因為未指定完整的網域名稱而列為萬用字元網域,若要使用這項功能,您必須要能夠解決這些向當前 IP 位址提出的網路要求,並透過網際網路傳送網路要求。

使用可代您剖析 XML 檔案,並依據您規劃用來直接路由過防火牆的服務或功能來自動為您更新規則的防火牆,以設定自動化程序。您也可以使用社群打造的 Azure Range 工具,透過 Cisco XE Route 或 ACL 清單設定、純文字或 CSV 的匯出選項為您剖析 XML 檔案。

我們的參考網站以及 RSS 型變更記錄檔針對網路目的地提供了較完整的說明,以便您訂閱變更。

使用 PAC 檔案設定輸出路徑

使用 PAC 或 WPAD 檔案來管理與 Office 365 相關聯但未提供 IP 位址的網路要求。一般而言,透過 Proxy 或周邊裝置傳送的網路要求會產生額外的延遲。當 Proxy 驗證產生最大稅率時,信譽查詢及嘗試檢查封包等其他服務可能導致不佳的使用者體驗。此外,這些周邊網路裝置需要足夠的容量來處理所有網路要求。針對直接 Office 365 網路要求,建議略過 Proxy 或檢查基礎結構。

請使用我們提供 PAC 檔案來著手判斷分別要將哪些網路流量送到 Proxy 與防火牆。如果您不熟悉 PAC 或 WPAD 檔案如何運作,請參閱這篇部署 PAC 檔案的相關說明文章,文章作者為我們的 Office 365 顧問之一。建議您從參閱這些文章開始著手,並編輯更動以符合您的環境。

更新 4/5/2018 PAC 檔案

第一個範例示範僅透過網際網路管理端點的建議方法。此方法會略過 IP 位址已發佈之 Office 365 目的地的 Proxy,並將其餘的網路要求傳送至 Proxy。

程式碼片段:

// JavaScript source code

//April 2018 - Updates go live 1st May2018
//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, "*.api.skype.com"))
    || (shExpMatch(host, "*.aria.microsoft.com"))
    || (shExpMatch(host, "*.asm.skype.com"))
    || (shExpMatch(host, "*.broadcast.skype.com"))
    || (shExpMatch(host, "*.broker.skype.com"))
    || (shExpMatch(host, "*.cc.skype.com"))
    || (shExpMatch(host, "*.config.skype.com"))
    || (shExpMatch(host, "*.conv.skype.com"))
    || (shExpMatch(host, "*.dc.trouter.io"))
    || (shExpMatch(host, "*.lync.com"))
    || (shExpMatch(host, "*.manage.office.com"))
    || (shExpMatch(host, "*.msg.skype.com"))
    || (shExpMatch(host, "*.office365.com"))
    || (shExpMatch(host, "*.onenote.com"))
    || (shExpMatch(host, "*.outlook.com"))
    || (shExpMatch(host, "*.outlook.office.com"))
    || (shExpMatch(host, "*.pipe.aria.microsoft.com"))
    || (shExpMatch(host, "*.pipe.skype.com"))
    || (shExpMatch(host, "*.portal.cloudappsecurity.com"))
    || (shExpMatch(host, "*.protection.office.com"))
    || (shExpMatch(host, "*.sharepoint.com"))
    || (shExpMatch(host, "*.skypeforbusiness.com"))
    || (shExpMatch(host, "*.svc.ms"))
    || (shExpMatch(host, "*.teams.microsoft.com"))
    || (shExpMatch(host, "*.teams.skype.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, "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, "becws.microsoftonline.com"))
    || (shExpMatch(host, "broadcast.skype.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, "config.edge.skype.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, "pipe.skype.com"))
    || (shExpMatch(host, "portal.microsoftonline.com"))
    || (shExpMatch(host, "portal.office.com"))
    || (shExpMatch(host, "prod.registrar.skype.com"))
    || (shExpMatch(host, "prod.tpc.skype.com"))
    || (shExpMatch(host, "protection.office.com"))
    || (shExpMatch(host, "provisioningapi.microsoftonline.com"))
    || (shExpMatch(host, "s-0001.s-msedge.net"))
    || (shExpMatch(host, "s-0004.s-msedge.net"))
    || (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, "*.api.skype.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, "*.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, "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, "feedback.skype.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, "latest-swx.cdn.skype.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, "skypegraph.skype.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, "swx.cdn.skype.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;
}

第二個範例示範在 ExpressRoute 和網際網路迴路皆可使用的情況下管理連線的建議方法。此方法會將 ExpressRoute 公告的目的地傳送至 ExpressRoute 迴路,並將僅在網際網路上公告的目的地傳送至 Proxy。

程式碼片段:

// JavaScript source code
//April 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, "*.asm.skype.com"))
            || (shExpMatch(host, "*.broadcast.skype.com"))
            || (shExpMatch(host, "*.cc.skype.com"))
            || (shExpMatch(host, "*.config.skype.com"))    
            || (shExpMatch(host, "*.conv.skype.com"))
            || (shExpMatch(host, "*.dc.trouter.io"))
            || (shExpMatch(host, "*.lync.com"))
            || (shExpMatch(host, "*.manage.office.com"))
            || (shExpMatch(host, "*.msg.skype.com"))
            || (shExpMatch(host, "*.outlook.com"))
            || (shExpMatch(host, "*.outlook.office.com"))
            || (shExpMatch(host, "*.pipe.aria.microsoft.com")) 
            || (shExpMatch(host, "*.pipe.skype.com")) 
            || (shExpMatch(host, "*.portal.cloudappsecurity.com"))
            || (shExpMatch(host, "*.protection.office.com"))
            || (shExpMatch(host, "*.protection.outlook.com"))
            || (shExpMatch(host, "*.sharepoint.com")) 
            || (shExpMatch(host, "*.skypeforbusiness.com")) 
            || (shExpMatch(host, "*.svc.ms"))   
            || (shExpMatch(host, "*.teams.microsoft.com"))  
            || (shExpMatch(host, "*.teams.skype.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, "becws.microsoftonline.com"))
            || (shExpMatch(host, "broadcast.skype.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, "config.edge.skype.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, "pipe.skype.com"))
            || (shExpMatch(host, "portal.office.com"))
            || (shExpMatch(host, "prod.registrar.skype.com"))
            || (shExpMatch(host, "prod.tpc.skype.com"))
            || (shExpMatch(host, "protection.office.com"))
            || (shExpMatch(host, "provisioningapi.microsoftonline.com"))
            || (shExpMatch(host, "s-0001.s-msedge.net"))
            || (shExpMatch(host, "s-0004.s-msedge.net"))
            || (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;
    }
}

第三個範例示範如何將所有與 Office 365 相關聯的網路要求傳送至單一目的地。此方法通常用來略過所有針對 Office 365 網路要求的檢查;此檔案也提供了一套所有已發佈清單中的端點皆以 PAC 格式列出的範本,以便您進一步自訂。

程式碼片段:

// JavaScript source code
//April 2018 Update new URLS go live 1st May 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, "*.api.skype.com"))  
        || (shExpMatch(host, "*.asm.skype.com"))     
        || (shExpMatch(host, "*.assets-yammer.com"))
        || (shExpMatch(host, "*.azureedge.net"))   
        || (shExpMatch(host, "*.azurerms.com"))
        || (shExpMatch(host, "*.broadcast.skype.com"))
        || (shExpMatch(host, "*.broker.skype.com"))
        || (shExpMatch(host, "*.cc.skype.com"))
        || (shExpMatch(host, "*.cloudapp.net")) 
        || (shExpMatch(host, "*.config.skype.com"))
        || (shExpMatch(host, "*.conv.skype.com"))
        || (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, "*.msg.skype.com")) 
        || (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, "*.pipe.skype.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, "*.skypeforbusiness.com"))
        || (shExpMatch(host, "*.svc.ms")) 
        || (shExpMatch(host, "*.sway.com"))
        || (shExpMatch(host, "*.symcb.com"))
        || (shExpMatch(host, "*.symcd.com"))
        || (shExpMatch(host, "*.teams.skype.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, "*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, "broadcast.skype.com "))
        || (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, "config.edge.skype.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, "feedback.skype.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, "latest-swx.cdn.skype.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, "pipe.skype.com"))
        || (shExpMatch(host, "platform.linkedin.com"))
        || (shExpMatch(host, "policykeyservice.dc.ad.msft.net"))
        || (shExpMatch(host, "prod.firstpartyapps.oaspapps.com.akadns.net"))
        || (shExpMatch(host, "prod.registrar.skype.com"))
        || (shExpMatch(host, "prod.tpc.skype.com"))
        || (shExpMatch(host, "s.ytimg.com"))
        || (shExpMatch(host, "s0.assets-yammer.com"))  
        || (shExpMatch(host, "s-0001.s-msedge.net")) 
        || (shExpMatch(host, "s-0004.s-msedge.net"))   
        || (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, "skypegraph.skype.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, "swx.cdn.skype.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";
}

以下是來自社群的一些其他工具,如果您已建立某個想要分享的項目,請在註解中留下附註。Microsoft 官方一概不支援及維護本文提到的所有社群工具,這些資訊是為您方便而提供。

  • 這是最早的產生社群工具,可用來協助您管理程序,此工具由 Office 365 社群成員所打造。這裡是下載的連結。

  • 可匯出防火牆規則的概念證明:Microsoft Cloud IP API

  • IT Praktyk:RSS 轉換XML 轉換

  • Peter Abele:下載

  • 使用您的網路分析來判斷哪些網路要求應略過 Proxy 基礎結構。考量到這些端點傳送及收到的網路流量,最常用來略過客戶 Proxy 的 FQDN 如下所列。

    outlook.office365.com
    outlook.office.com
    <tenant-name>.sharepoint.com
    <tenant-name>-my.sharepoint.com
    <tenant-name>-<app>.sharepoint.com
    *.Lync.com
    
  • 請確定直接傳送到您防火牆的網路要求已列於防火牆允許清單中,以便順利通過防火牆。

周邊網路整合

您知道 Microsoft 的 WAN 是全世界最大的骨幹之一嗎?

確實如此,無論您在世界何處,這個大型網路能讓 Office 365 和我們其他的雲端服務保持運作。我們的網路包含高頻寬、低延遲、使用數千哩私有暗光纖支援容錯移轉的連結,以及資料中心與邊緣節點之間的多兆位元連線,全力打造更易於使用的雲端服務。

有了像這樣的網路,您會希望貴組織的裝置盡快連線到我們的網路。具備全球超過 2500 個 ISP 對等互連關聯性及 70 個網路節點,從您的網路連接到我們的網路應該會非常流暢。您不妨花幾分鐘確認您 ISP 的對等互連關聯性是最佳狀態,此處提供一些範例供您了解與我們網路的良好及不佳的對等互連交遞機制。

您可以在您的網路上手動或自動設定裝置,以根據您的設備最佳化處理 Office 365 應用程式網路要求。要最佳化處理 Office 365 網路流量所需要做的設定變更取決於您的環境。允許下列項目的網路設定可能會對 Office 365 網路要求較為有利:

  • 高於較不重要之網路流量的優先順序。

  • 路由到本機出口以避免經由緩慢的 WAN 連結回傳,並同時善用 Microsoft 網路上可用的低延遲。根據客戶參與,此處提供良好的討論

  • 使用靠近本機出口的 DNS,以確保離開本機出口的網路要求能抵達最近的 Microsoft 對等位置。

  • 排除深入封包檢查或其他密集網路封包處理,以符合大規模延遲需求。

現代化網路裝置包含的功能,能夠管理信任的應用程式 (例如 Office 365) 的網路要求,並以不同方式管理一般、未受信任的網際網路流量。隨著 SD-WAN 解決方案的興起,這類流量的區分和路徑的選擇也可透過網路狀態變更的覺察來執行,例如使用者與雲端之間各種連線路徑在該時間點的可用性、延遲或效能。

請參閱 Office 365 的網路與移轉規劃Office 365 的效能疑難排解規劃以及 Office 365 的部署規劃檢查清單,以獲得規劃網路設定相關的其他指導方針。

如要實作這類案例:

請洽詢您的網路解決方案或服務提供者,確認他們是否能夠使用 XML 中的 Office 365 URL 和 IP 定義,以促進本機 (使用者)、降低 Office 365 流量的網路出口需求、管理其相對於其他應用程式的優先順序,以及根據網路情況的變更調整 Office 365 連線到 Microsoft 網路的網路路徑。某些解決方案會下載及自動化其堆疊中的 Office 365 URL 和 IP XML 定義。

請務必確保實作的解決方案有必要程度的備援、針對 Office 365 流量的網路路徑有適當的異地備援,並且能夠在 Office 365 URL 和 IP 發佈時適應其變更。

若要可協助您更有效地識別並區分 Office 365 的網路流量,新的 web 服務發佈 Office 365 結束點,讓您更輕鬆評估、 設定和保持最新的變更。此新的 web 服務 (現在中預覽版本),最後會取代Office 365 Url 與 IP 位址範圍文章,以及該資料的 RSS 和 XML 版本中的端點的清單。若要在不久的將來淘汰我們已規劃下列資料格式的結束點。

為客戶或網路外圍裝置廠商,您可以測試新其餘型 web 服務的 Office 365 IP 位址和 FQDN 項目現在已在預覽中:

為客戶,您可以使用此 web 服務:

  • 更新您的 PowerShell 指令碼,取得 Office 365 結束點資料及修改您的網路裝置任何格式設定。

  • 您可以使用這項資訊來更新 PAC 部署至用戶端電腦的檔案。

為網路外圍裝置供應商,您可以使用此 web 服務:

  • 建立並測試裝置軟體下載自動設定的清單。

  • 檢查目前的版本。

  • 取得目前的變更。

下列各節說明此 web 服務,可能會變更一段時間,直到服務一起推出的預覽。

Web 服務的資料是最新除了下列已知問題:

常見的參數

這些參數是常見過的 web 服務方法:

  • 格式 = CSV |JSON – 查詢字串參數。根據預設,傳回的資料格式是 JSON。包含此選用的參數傳回逗點分隔值 (CSV) 格式的資料。

  • ClientRequestId – 查詢字串參數。必要的 GUID 所產生的用戶端工作階段關聯。您應該產生 GUID 呼叫 web 服務的每一部用戶端電腦。不要使用顯示在下列範例中,因為他們可能被封鎖的 web 服務在未來的 Guid。GUID 格式是 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,其中 x 代表十六進位數字。若要產生 GUID,使用 [新增 Guid PowerShell 命令。

版本 web 方法

Microsoft 更新 Office 365 IP 位址和結尾的每個月等有時候常見問題的操作需求的 FQDN 項目。每個已發佈的執行個體的資料會被指派版本號碼。版本 web 方法可讓您獲得最新版本的 Office 365 服務的實例。若要變更一個月一次,都必須結束點。我們建議您檢查版本,每日、 或最,每小時。

有一個參數的版本 web 方法:

  • AllVersions = true – 查詢字串參數。根據預設,傳回的版本是最新。包含此要求所有發佈版本的選擇性參數。

  • 執行個體– 路由參數。這個選用的參數會指定要傳回的版本的執行個體。如果省略則會傳回所有執行個體。 有效的執行個體: O365Worldwide O365China、 O365Germany、 O365USGovDoD、 O365USGovGCCHigh

單一記錄的陣列,可能會導致從版本 web 方法。每一筆記錄的項目如下:

  • 執行個體-Office 365 服務執行個體的簡短名稱。

  • 最晚 – 指定執行個體的結束點的最新版本。

  • 版本 – 選擇性所有舊版本,指定執行個體的清單。

範例:

範例 1 要求 URI: https://endpoints.office.com/version?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

此 URI 傳回最新版的 Office 365 服務的實例。範例結果:

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

重要: 在這些 Uri ClientRequestID 參數 GUID 是只範例。若要嘗試 web 服務 Uri 出、 產生您自己的 GUID。下列範例所示的 Guid 可能會在未來封鎖 web 服務。

範例 2 要求 URI: https://endpoints.office.com/version/O365Worldwide?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

此 URI 會傳回指定的 Office 365 服務執行個體的最新版本。範例結果:

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

範例 3 要求 URI: https://endpoints.office.com/version/O365Worldwide?Format=CSV&ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

此 URI 顯示輸出 CSV 格式。範例結果:

instance,latest
O365Worldwide,2018031302

範例 4 要求 URI: https://endpoints.office.com/version/O365Worldwide?Format=CSV&AllVersions=true&ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

此 URI 會顯示所有已發佈的 Office 365 全球服務執行個體的先前版本。範例結果:

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

結束點 web 方法

結束點 web 方法傳回 IP 位址範圍和構成 Office 365 服務的 Url 的所有的記錄。參數的結束點 web 方法如下:

  • ServiceAreas – 查詢字串參數。服務區域的逗點分隔的清單。有效的項目是常見、 Exchange、 SharePoint、 Skype。常見的服務區域項目是所有其他服務區域的必要條件,因為 web 服務永遠會包含這些。如果您不包含此參數,則會傳回所有服務的區域。

  • TenantName – 查詢字串參數。您 Office 365 租用戶的名稱。Web 服務會帶您提供的名稱,並將其插入部分包含租用戶名稱的 Url。如果您不提供的租用戶名稱,這些組件的 Url 會有萬用字元 (*)。在預覽中不包含 TenantName 參數。

  • 執行個體– 路由參數。這個必要的參數會指定要傳回的結束點的執行個體。有效的執行個體: O365Worldwide O365China、 O365Germany、 O365USGovDoD、 O365USGovGCCHigh。

結果的結束點 web 方法是陣列代表端點設定每一筆記錄的記錄。每一筆記錄的項目如下:

  • 識別碼 – 不變識別碼端點的設定。所需。

  • serviceArea – 這是部分服務區域: 常見、 Exchange、 SharePoint 或 Skype。所需。

  • defaultUrls – 端點 Url 設定 「 預設 」 類別中的。JSON 的陣列的 DNS 記錄。

  • allowUrls – 端點 Url 設定的 「 允許 」 類別中。JSON 的陣列的 DNS 記錄。

  • optimizeUrls – 端點 Url 設定 「 最佳化 」 類別中的。JSON 的陣列的 DNS 記錄。

  • defaultTcpPorts – 端點的 TCP 連接埠設定 「 預設 」 類別中的。連接埠的所有項目格式設定為 [逗點分隔的連接埠或由破折號字元 (-) 分隔的連接埠範圍清單。端點設定,指定類別的連接埠會套用到所有的 IP 位址。指定類別的連接埠也套用的所有 Url 的端點為該類別,以及較低的類別。最佳化,允許,預設值,其中預設是最低順序定義較低的類別。

  • allowTcpPorts – TCP 連接埠的 IP 位址在此端點設定 「 允許 」 類別中的範圍。

  • optimizeTcpPorts – TCP 連接埠的 IP 位址在此端點設定 「 最佳化 」 類別中的範圍。

  • defaultUdpPorts – UDP 連接埠的 IP 位址在此端點設定 「 預設 」 類別中的範圍。

  • allowUdpPorts – UDP 連接埠的 IP 位址在此端點設定 「 允許 」 類別中的範圍。

  • optimizeUdpPorts – UDP 連接埠的 IP 位址在此端點設定 「 最佳化 」 類別中的範圍。

  • ips – 此設定時所列的 TCP 或 UDP 連接埠與相關聯的端點相關聯的 IP 位址範圍。

  • expressRoute – True 或 False 如果此端點設定透過 ExpressRoute 路由。所需。

  • optionalImpact – 如果此端點設定是選擇性的此文字說明若無法存取此端點集中的結束點,將會遺失的 Office 365 功能。如果端點設定不是選擇性的被排除這個項目。

沒有列出所需的任何項目是選擇性的其餘部分輸出中項目。

範例:

範例 1 要求 URI: https://endpoints.office.com/endpoints/O365Worldwide?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

此 URI 會取得所有 Office 365 全球執行個體的所有工作負載的端點。顯示的輸出摘錄的範例結果:

[
  {
    "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
  },
...

在此範例中,不會包含其他端點集。

範例 2 要求 URI: https://endpoints.office.com/endpoints/O365Worldwide?ServiceAreas=Exchange&ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

此範例中的 Exchange Online 和相依性只取得 Office 365 全球網站執行個體的結束點。

範例 1 相似輸出,例如 2 是不同的結果不會包含結束點的 SharePoint Online] 或 [Skype 的商務用 Online。

變更網頁的方法

變更網頁方法會傳回已發佈的最新的更新。這通常是 IP 位址範圍和 Url 的前一個月的變更。

變更 web 方法的參數是:

  • 版本– 所需的 URL 傳送參數。您目前實作,而且您想要查看變更後的版本的版本。格式是 YYYYMMDDNN。

變更網頁方法則結果為陣列代表特定版本的結束點變更每一筆記錄的記錄。每一筆記錄的項目如下:

  • 識別碼 – 不變變更記錄的識別碼。所需。

  • endpointSetId – 端點的識別碼設定會變更的記錄。所需。

  • changeDescription – 變更的文字描述。所需。

  • 處理 – 這可以的變更,新增或移除,並說明變更並未端點設定記錄。所需。

  • 在已推出變更設定版本 – 已發佈的結束點的版本。版本號碼有格式 YYYYMMDDNN,NN 是自然數字遞增如果有多個版本,才能在單一日期發佈。

  • 上一個 – 設定子結構詳述之前的端點上變更的元素的值。這不會包含在新加入的結束點集。包含 defaultTcpPorts allowTcpPorts、 optimizeTcpPorts、 defaultUdpPorts、 allowUdpPorts、 optimizeUdpPorts,ExpressRoute,optionalImpact。

  • 目前的子結構,詳述更新 endpoinset 上變更項目的值。包含 defaultTcpPorts allowTcpPorts、 optimizeTcpPorts、 defaultUdpPorts、 allowUdpPorts、 optimizeUdpPorts,ExpressRoute,optionalImpact。

  • 新增 – 詳述項目新增至端點的子結構設定集合。

    • effectiveDate – 在時新增的項目會出現在服務中定義的資料。

    • ips – 新增到 ip 陣列的項目。

    • defaultUrls-項目新增至 defaultUrls 陣列。

    • allowUrls-項目新增至 allowUrls 陣列。

    • optimizeUrls-項目新增至 optimizeUrls 陣列。

  • 移除 – 設定子結構詳述從端點移除的項目。

    • ips – 從 ips 陣列中移除的項目。

    • defaultUrls-項目從 defaultUrls 陣列中移除。

    • allowUrls-項目從 allowUrls 陣列中移除。

    • optimizeUrls-項目從 optimizeUrls 陣列中移除。

範例:

範例 1 要求 URI: https://endpoints.office.com/changes/o365worldwide/0000000000?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

這會要求 Office 365 全球服務執行個體的所有上一個變更。範例結果:

[
  {
    "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"]
    }
  }
]

範例 2 要求 URI: https://endpoints.office.com/changes/o365worldwide?version=2018031300&ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

這將要求變更自指定版本的 Office 365 世界各地的執行個體。範例結果:

[
  {
    "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"]
    }
  }
]

範例 PowerShell 指令碼

以下是您可以執行以查看是否有您需要更新資料採取的動作的 PowerShell 指令碼。這個指令碼會檢查有 Office 365 世界各地的執行個體結束點的版本號碼。變更時,它會下載的結束點及篩選的 「 允許 」 類別結束點。同時也是唯一的 ClientRequestId 使用跨多個電話,並會儲存在暫存檔案中找到的最新版本。您應致電這個指令碼小時,若要檢查有更新的版本。

# 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"
}

範例 Python 指令碼

以下是 Python 指令碼,測試 Python 3.6.3 在 Windows 10,讓您執行以查看是否有您需要更新資料採取的動作。這個指令碼會檢查有 Office 365 世界各地的執行個體結束點的版本號碼。變更時,它會下載的結束點及篩選的 「 允許 」 類別結束點。同時也是唯一的 ClientRequestId 使用跨多個電話,並會儲存在暫存檔案中找到的最新版本。您應致電這個指令碼小時,若要檢查有更新的版本。

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')

Web 服務介面版本設定

可能在未來需要更新的參數或 web 服務種方法的結果。這些 web 服務開放版本發佈之後,Microsoft 就會使合理提供換頁材料的 web 服務的更新通知。當 Microsoft 認為更新可能需要使用 web 服務的用戶端的變更時,Microsoft 就會保留至少十二個待 (12) 之後的月份的新版本的版本所提供之 web 服務的舊版本 (回一個版本)。不要在這段期間升級的客戶可能無法存取 web 服務和它的方法。客戶必須確定用戶端的 web 服務時,繼續工作不會發生錯誤的 web 服務介面簽章進行下列變更:

  • 將新的選擇性參數新增至現有的 web 方法,沒有可提供較舊的用戶端,並不會影響結果的較舊的用戶端收到。

  • 回應 CSV 回應其餘的項目與其他資料行中加入新的命名的屬性。

  • 新增新的 web 方法不由較舊的用戶端呼叫為新名稱。

連線相關的系統管理員常見問題集:

請按一下底部的連結來告訴我們文章是否有幫助,並提交任何其他問題。我們會仔細查看意見反應,並將最常見的問題更新在這裡。

新端點公告過後,通常須經過 30 天以上的緩衝期,才會生效並開始接收網路要求。這個緩衝期是為了確保客戶和合作夥伴有機會更新系統。FQDN 及 IP 首碼的新增及移除作業會在公告同時處理,也就是說新的 FQDN 會在開始使用前 30 天加入 XML 檔案中。因為我們會在公告移除端點之前就先停止傳送網路要求至這些端點,所以當我們在公告同時從 XML 檔案移除端點時,該端點就已經停止使用了。

Office 365 端點會在每月月底發佈,30 天前會通知。有時變更會一個月超過一次,或是通知期較短。若有新增的端點,RSS 摘要所列的生效日期將為網路要求傳送到端點後的隔日。如果您不熟悉如何使用 RSS,這裡有透過 Outlook 訂閱的方法,或者您也可以要求將 RSS 摘要更新以電子郵件傳送給您

在您訂閱 RSS 摘要之後,您可以自行剖析或使用指令碼來剖析資訊。下表為 RSS 摘要的格式說明,以便您能更容易了解。

區段

第 1 部分

第 2 部分

第 3 部分

第 4 部分

第 5 部分

第 6 部分

描述

計數

網路要求預期會在此日期之後傳送至端點。

需要端點之功能或服務的基本描述。

除了網際網路之外,您是否能夠在 ExpressRoute 迴路上連線到此端點?

是,在網際網路及 ExpressRoute 上您都可以連線至此端點。

否,您只能在網際網路上連線至此端點。

正在新增或移除的目的地 FQDN 或 IP 範圍。

範例

1/

[生效日期 xx/xx/xxx.

必要:<描述>.

ExpressRoute:

<是/否>.

<FQDN/IP>],

另外要注意的是,每個項目都有一組常用的分隔符號:

  • /:用於計數之後

  • [:用來表示該計數所指的項目

  • .:用於項目中每個不同區段之間

  • ],:用來表示單一項目的結尾

  • ].:用來表示所有項目的結尾

判斷「租用戶位置」的最佳方式是使用我們的資料中心地圖

關於「對等互連位置」,在與 Microsoft 對等互連中有更詳細的說明。

具備全球超過 2500 個 ISP 對等互連關聯性及 70 個網路節點,從您的網路連接到我們的網路應該會非常流暢。您不妨花幾分鐘確認您 ISP 的對等互連關聯性是最佳狀態,此處提供一些範例供您了解與我們網路的良好及不佳的對等互連交遞機制。

Microsoft 的 IP 範圍和特定 Office 365BGP 社群定義了「接受的 ExpressRoute 路由」。

我們會為 Office 365 套件定期加入新功能與服務,擴充連線能力範圍。如果您訂閱的方案是 E3 或 E5 SKU,簡單來說,這表示您需要所有的端點清單,才能讓套件的所有功能正常運作。如果您不是上述 SKU 的使用者,以端點數量而言,差異也不大。

閱讀Office 365 的網路連線原則取得更多有關Office 365端點類別,並瞭解安全地管理Office 365流量,可能的最佳效能的連線原則。

下方的影像為 Office Online 區段中 FQDN 表格的部分範例。列按功能排序整理,差別在於連線能力。前兩列指出 Office Online 仰賴在 Office 365 驗證與身分識別及入口網站與共用區段中標示為必要的端點。Office 365 中的服務通常仰賴這些共用服務。第三列則指出用戶端電腦必須要能連線到 *.officeapps.live.com,才能使用 Office Online。而第四列指出電腦必須連線到 *.cdn.office.net,才能使用 Office Online。

即使電腦需要第三列與第四列才能使用 Office Online,但這兩列分別列出,就表示目的地是不同的。

  1. *.officeapps.live.com 並不代表 CDN,這表示傳送到這個命名空間的要求會直接移至 Microsoft 資料中心。

  2. 至於 *.officeapps.live.com 則可透過 Microsoft 對等在 ExpressRoute 迴路上存取。

  3. 與 Office Online 和 *.officeapps.live.com 相關聯的 IP 位址可在以下連結中找到。

  4. *.cdn.office.net 代表由 Akamai 代管的 CDN,也就是說,傳送到這個命名空間的要求會移至 Akamai 資料中心。

  5. *.cdn.office.net 無法在 ExpressRoute 迴路上存取。

  6. 無法取得與 Office Online 和 *.cdn.office.net 相關聯的 IP 位址。

端點頁面的螢幕擷取畫面

我們僅提供您應經由網際網路或 ExpressRoute 直接路由之 Office 365 伺服器的 IP 位址。這不是您會看到網路要求之所有 IP 位址的完整清單。您會看到 Microsoft 和協力廠商所擁有、未發佈之 IP 位址的網路要求。這些 IP 位址是以動態方式產生或管理,此方式在變更時不會即時通知。如果您的防火牆對於這些網路要求無法允許以 FQDN 為基礎的存取,請使用 PAC 或 WPAD 檔案來管理要求。

看到您想要取得更多資訊的 Office 365 相關 IP?

  1. 請使用 CIDR 計算工具檢查 IP 位址是否包含在更大的發佈範圍中。

  2. 使用 whois 查詢 (英文) 查看合作夥伴是否擁有該 IP。如果這是 Microsoft 所擁有,則可能是內部合作夥伴。

  3. 檢查憑證。請在瀏覽器中使用 HTTPS://<IP_ADDRESS> 連接到 IP 位址,然後檢查憑證中所列的網域,以了解該 IP 位址與哪些網域相關聯。如果是 Microsoft 所擁有的 IP 位址,卻不在 Office 365 IP 位址清單上,有可能是因為該 IP 位址與 Microsoft CDN (例如 MSOCDN.NET) 相關聯,或與其他不具有已發佈 IP 資訊的 Microsoft 網域相關聯。如果您發現憑證上的網域確實是我們宣稱有列出 IP 位址的網域,請通知我們。

Office 365 及其他 Microsoft 服務使用數種協力廠商服務,例如 Akamai 和 MarkMonitor,以改善您的 Office 365 體驗。為了持續為您提供最佳的體驗,我們日後可能會變更這些服務。因此,我們會經常發佈指向協力廠商所擁有之網域的 CNAME 記錄、A 記錄或 IP 位址。協力廠商網域可能會託管內容 (例如 CDN),或可能會託管服務 (例如地理位置流量管理服務)。當您看到這些協力廠商的連線時,這些連線是重新導向或轉介的形式,而不是來自用戶端的初始要求。某些客戶必須確保可允許這種形式的轉介和重新導向通過,而不用明確新增協力廠商服務可能使用之潛在 FQDN 的長清單。

此服務清單可能會隨時變更。目前使用中的部分服務包括:

MarkMonitor:如果要求中包含 *.nsatc.net 就表示正在使用此服務。這個服務提供網域名稱保護與監控功能,以防範惡意行為。

ExactTarget:如果要求中包含 *.exacttarget.com 就表示正在使用此服務。這個服務提供電子郵件連結管理與監控功能,以防範惡意行為。

Akamai:如果要求中包含下列 FQDN 就表示正在使用此服務。這個服務提供 Geo-DNS 及內容傳遞網路服務。

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

  • 您會連線至協力廠商服務以取得基本的網際網路服務,例如 DNS 查閱和 CDN 內容擷取。您也會連線至協力廠商服務以進行整合,例如將 YouTube 影片整合到 OneNote 筆記本中。

  • 您會連線到 Microsoft 託管及營運的次要服務,例如邊緣節點,以便從離您電腦最近的網際網路位置將您的網路要求輸入 Microsoft 的全球網路。Microsoft 全球網路是世界第三大網路,因此能以此做法改善您的連線體驗。您也會連線到 Microsoft Azure 服務 (例如 Azure 媒體服務),因為各種 Office 365 服務都會用到這些服務。

  • 您會連線到 Exchange Online 信箱伺服器或商務用 Skype Online 等主要 Office 365 服務,您獨有的專屬資料就位於此處。您可以透過 FQDN 或 IP 位址使用網路網路或 ExpressRoute 迴路以連線到 Office 365 主要服務。連線到協力廠商及次要服務時,則只能使用網際網路迴路上的 FQDN。

下圖顯示這些服務區域之間的差異。在此圖表中,左下方的客戶內部部署網路有多個網路裝置以協助管理網路連線能力。這是企業客戶常用的設定。如果您的網路在用戶端電腦和網際網路之間只有一道防火牆,也同樣能獲得支援,不過請確定您的防火牆允許清單規則支援 FQDN 和萬用字元。

閱讀Office 365 的網路連線原則取得更多有關Office 365端點類別,並瞭解安全地管理Office 365流量,可能的最佳效能的連線原則。

顯示使用 Office 365 時的三種不同網路端點類型

Office 365 是專為網際網路運作打造的套件,因此它所保證的可靠性與可用性,皆以許多標準網際網路服務可供使用為前提。例如,您必須能連接到 DNS、CRL 與 CDN 等標準網際網路服務,才能使用 Office 365,這一點與您使用大部分現代網際網路服務時並無不同。

除了這些基本網際網路服務之外,還需要一些只用於整合功能的協力廠商服務。例如,在 Microsoft Teams 中使用 Giphy.com 可讓客戶將 GIF 圖片無瑕疵地納入小組中。同樣地,YouTube 和 Flickr 等協力廠商服務也可用來將網際網路上的視訊和影像整合到 Office 用戶端中。雖然整合時需要這些服務,但 Office 365 端點文章將這些服務標示為 [選用],這表示即使其端點無法存取,服務的核心功能仍然能繼續運作。

如果您嘗試使用 Office 365 時發現無法存取協力廠商服務,建議您確認這篇文章中所有標示為 [必要] 或 [選用] 的 FQDN 都能通過 Proxy 與防火牆

次要服務是不屬於 Office 365 控管的 Microsoft 服務,包括邊緣網路、Azure 媒體服務和 Azure 內容傳遞網路等等。這些都是使用 Office 365 時必備的服務,必須能夠連線。

如果您嘗試使用 Office 365 時發現無法存取協力廠商服務,建議您確認這篇文章中所有標示為 [必要] 或 [選用] 的 FQDN 都能通過 Proxy 與防火牆

限制我們的消費者服務存取權限時,您必須自行承擔風險,而要封鎖消費者服務唯一可靠的方式,是限制對 login.live.com FQDN 的存取權。使用此 FQDN 的服務種類廣泛,其中也包括 MSDN、TechNet 及其他非消費者服務。限制對此 FQDN 的存取權可能會導致您需要包含例外規則,以處理與這些服務相關聯的網路要求。

請記住,只封鎖 Microsoft 消費者服務並無法防止您網路上的使用者利用 Office 365 租用戶或其他服務將資訊外流。

相關主題

Microsoft Azure 資料中心 IP 範圍
Microsoft 公用 IP 空間
網路基礎結構需求 Microsoft Intune
Power BI 與 ExpressRoute
Office 365 Url 與 IP 位址範圍
Office 365 連線管理 ExpressRoute
Office 365 的網路連線原則

增進您的 Office 技巧
探索訓練
優先取得新功能
加入 Office 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與其中一位 Office 支援專員連絡以深入了解您的意見。

×