Microsoft 365 IP-adress och URL-webbtjänst

Webbtjänsten Microsoft 365 IP-adress och URL hjälper dig att bättre identifiera och särskilja Microsoft 365-nätverkstrafik, vilket gör det enklare för dig att utvärdera, konfigurera och hålla dig uppdaterad med ändringar. Den här REST-baserade webbtjänsten ersätter de tidigare nedladdningsbara XML-filerna, som fasades ut den 2 oktober 2018.

Som kund eller leverantör av nätverksperimeterenheter kan du skapa mot webbtjänsten för Microsoft 365 IP-adresser och FQDN-poster. Du kan komma åt data direkt i en webbläsare med hjälp av följande URL:er:

Som kund kan du använda den här webbtjänsten till att:

  • Uppdatera dina PowerShell-skript för att hämta Microsoft 365-slutpunktsdata och ändra all formatering för dina nätverksenheter.
  • Använd informationen för att uppdatera PAC-filer som distribueras till klientdatorer.

Som leverantör av perimeternätverksenheter kan du använda den här webbtjänsten till att:

  • Skapa och testa enhetsprogramvara för att ladda ned listan för automatiserad konfiguration.
  • Sök efter den aktuella versionen.
  • Hämta de aktuella ändringarna.

Obs!

Om du använder Azure ExpressRoute för att ansluta till Microsoft 365 kan du läsa Azure ExpressRoute för Microsoft 365 för att bekanta dig med De Microsoft 365-tjänster som stöds via Azure ExpressRoute. Läs även artikeln om URL:er och IP-adressintervall för Microsoft 365 för att förstå vilka nätverksbegäranden för Microsoft 365-program som kräver Internetanslutning. På så sätt kan du konfigurera dina gränssäkerhetsenheter bättre.

Mer information finns i:

Vanliga parametrar

Dessa parametrar är gemensamma för alla metoder i webbtjänsten:

  • format=<JSON | CSV> – Som standard är det returnerade dataformatet JSON. Använd den här valfria parametern för att returnera data i en fil med kommaavgränsade värden (CSV).

  • ClientRequestId=<guid – ett obligatoriskt> GUID som du genererar för klientassociation. Generera ett unikt GUID för varje dator som anropar webbtjänsten (de skript som finns på den här sidan genererar ett GUID åt dig). Använd inte de GUID:erna som visas i följande exempel eftersom de kan blockeras av webbtjänsten i framtiden. GUID-formatet är xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, där x representerar ett hexadecimalt tal.

    Om du vill generera ett GUID kan du använda New-GUID Windows PowerShell-kommandot eller använda en onlinetjänst som online GUID Generator.

Versionswebbmetod

Microsoft uppdaterar Microsoft 365 IP-adress och FQDN-poster i början av varje månad. Out-of-band-uppdateringar publiceras ibland på grund av supportproblem, säkerhetsuppdateringar och andra operativkrav.

Data för varje publicerad instans tilldelas ett versionsnummer och med versionswebbmetoden kan du söka efter den senaste versionen av varje Microsoft 365-tjänstinstans. Vi rekommenderar att du kontrollerar versionen inte är oftare än en gång i timmen.

Parametrarna för versionswebbmetoden är:

  • AllVersions=<true | false> – som standard är den version som returneras den senaste. Inkludera den här valfria parametern om du vill begära alla publicerade versioner sedan webbtjänsten först släpptes.
  • Format=<JSON | CSV | RSS> – Förutom JSON- och CSV-format stöder webbmetoden version även RSS. Du kan använda den här valfria parametern tillsammans med parametern AllVersions = True för att begära en RSS-feed som kan användas med Outlook eller andra RSS-läsare.
  • Instans=<Globalt | Kina | USGovDoD | USGovGCCHigh> – den här valfria parametern anger den instans som versionen ska returneras för. Om den utelämnas returneras alla instanser. Giltiga instanser är: Worldwide, China, Germany, USGovDoD, USGovGCCHigh.

Versionswebbmetoden är inte hastighetsbegränsade och returnerar aldrig 429 HTTP-svarskoder. Svaret på versionswebbmetoden innehåller ett huvud för cache-kontroll som rekommenderar cachelagring av data i 1 timme. Resultatet av versionswebbmetoden kan vara en enskild post eller en matris med poster. Elementen i varje post är:

  • instance – Det korta namnet på Microsoft 365-tjänstinstansen.
  • senaste – Den senaste versionen för den angivna instansens slutpunkter.
  • versioner – En lista över alla tidigare versioner för den angivna instansen. Det här elementet ingår endast om parametern Allaversioner är sann.

Exempel på versionswebbmetod

Exempel 1 begär URI: https://endpoints.office.com/version?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Den här URI:n returnerar den senaste versionen av varje Microsoft 365-tjänstinstans. Exempelresultat:

[
 {
  "instance": "Worldwide",
  "latest": "2018063000"
 },
 {
  "instance": "USGovDoD",
  "latest": "2018063000"
 },
 {
  "instance": "USGovGCCHigh",
  "latest": "2018063000"
 },
 {
  "instance": "China",
  "latest": "2018063000"
 }
]

Viktigt

GUID för parametern ClientRequestID i dessa URI:er är bara ett exempel. Om du vill prova webbtjänstens URI:er måste du generera en egen GUID. De GUID som visas i dessa exempel kan blockeras av webbtjänsten i framtiden.

Exempel 2 begär URI: https://endpoints.office.com/version/Worldwide?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Den här URI:n returnerar den senaste versionen av den angivna Microsoft 365-tjänstinstansen. Exempelresultat:

{
 "instance": "Worldwide",
 "latest": "2018063000"
}

Exempel 3 begär URI: https://endpoints.office.com/version/Worldwide?Format=CSV&ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Denna URI visas resultatet i CSV-format. Exempelresultat:

instance,latest
Worldwide,2018063000

Exempel 4 begär URI: https://endpoints.office.com/version/Worldwide?AllVersions=true&ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Den här URI:n visar alla tidigare versioner som har publicerats för den globala Tjänstinstansen för Microsoft 365. Exempelresultat:

{
  "instance": "Worldwide",
  "latest": "2018063000",
  "versions": [
    "2018063000",
    "2018062000"
  ]
}

Exempel 5 RSS Feed URI: https://endpoints.office.com/version/worldwide?clientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7& allVersions=true&format=RSS

Den här URI:n visar ett RSS-flöde av publicerade versioner som innehåller länkar till listan över ändringar för varje version. Exempelresultat:

<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0" xmlns:a10="https://www.w3.org/2005/Atom">
<channel>
<link>https://aka.ms/o365ip</link>
<description/>
<language>en-us</language>
<lastBuildDate>Thu, 02 Aug 2018 00:00:00 Z</lastBuildDate>
<item>
<guid isPermaLink="false">2018080200</guid>
<link>https://endpoints.office.com/changes/Worldwide/2018080200?singleVersion&clientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7</link> <description>Version 2018080200 includes 2 changes. IPs: 2 added and 0 removed.</description>
<pubDate>Thu, 02 Aug 2018 00:00:00 Z</pubDate>
</item>

Slutpunktswebbmetod

Slutpunktswebbmetoden returnerar alla poster för IP-adressintervall och URL:er som utgör Microsoft 365-tjänsten. De senaste data från webbmetoden för slutpunkter ska alltid användas för nätverksenhetskonfiguration. Microsoft ger dig ett meddelande 30 dagar innan de publicerar nya tillägg för att ge dig tid att uppdatera listor för åtkomstkontroll och förbikopplingslistor för proxyserver. Vi rekommenderar att du bara anropar webbmetoden för slutpunkter igen när versionswebbmetoden anger att en ny version av data är tillgänglig.

Parametrarna för slutpunktswebbmetoden är:

  • ServiceAreas=<Vanliga | Exchange | SharePoint | Skype> – En kommaavgränsad lista över tjänstområden. Giltiga objekt är Gemensamma, Exchange, SharePoint, Skype. Eftersom Gemensamma tjänstområdesobjekt är en förutsättning för alla andra tjänstområden inkluderar webbtjänsten alltid dem. Om du inte inkluderar den här parametern returneras alla tjänstområden.
  • TenantName=<tenant_name> – Ditt Microsoft 365-klientnamn. Webbtjänsten tar det angivna namnet och infogar det i delar av URL-adresser som innehåller klientnamnet. Om du inte anger ett klientnamn har dessa delar av URL:er jokertecknet (*).
  • NoIPv6=<true | false> – Ange värdet till true för att undanta IPv6-adresser från utdata om du inte använder IPv6 i nätverket.
  • Instans=<Globalt | Kina | USGovDoD | USGovGCCHigh> – den här obligatoriska parametern anger den instans som slutpunkterna ska returneras från. Giltiga instanser är: Worldwide, China, USGovDoD, and USGovGCCHigh.

Om du anropar webbmetoden för slutpunkter för många gånger från samma IP-adress för klient, kan det hända att du får HTTP-svarskod 429 (för många begäranden). Om du får svarskoden väntar du i en timme innan du upprepar begäran eller genererar ett nytt GUID för begäran. Som en allmän metod är att bara anropa webbmetoden för slutpunkter när versionswebbmetoden anger att en ny version är tillgänglig.

Resultatet från slutpunktswebbmetoden är en matris med poster där varje post representerar en specifik slutpunktsuppsättning. Elementen för varje post är:

  • id – Det oföränderliga ID-numret för slutpunktsuppsättningen.
  • serviceArea – Tjänstområdet som detta är en del av: Gemensamma, Exchange, SharePoint eller Skype.
  • URL:er – Webbadresser för slutpunktsuppsättningen. En JSON-matris med DNS-poster. Utelämnas om tomt.
  • tcpPorts – TCP-portar för slutpunktsuppsättningen. Alla portelement är formaterade som en kommaavgränsad lista med portar eller portintervaller avgränsade med ett bindestreck (-). Portar gäller för alla IP-adresser och alla URL-adresser i slutpunktsuppsättningen för en specifik kategori. Utelämnas om tomt.
  • udpPorts – UDP-portar för IP-adressintervallerna i den här slutpunktsuppsättningen. Utelämnas om tomt.
  • ips – IP-adressintervallen som är kopplade till den här slutpunktsuppsättningen som är kopplade till de angivna TCP- eller UDP-portarna. En JSON-matris med IP-adressintervall. Utelämnas om tomt.
  • kategori – Anslutningskategorin för slutpunktsuppsättningen. Giltiga värden är Optimera, Tillåta och Standard. Om du söker i slutpunkternas webbmetodutdata efter kategorin för en specifik IP-adress eller URL är det möjligt att frågan returnerar flera kategorier. I så fall följer du rekommendationer för kategorin med högsta prioritet. Om till exempel slutpunkten visas i båda Optimera och Tillåta ska du följa kraven för Optimera. Obligatoriskt.
  • expressRoute – Sant om den här slutpunktsuppsättningen dirigeras över Microsoft Azure ExpressRoute annars Falskt.
  • required – Sant om den här slutpunktsuppsättningen krävs för att ha anslutning för att Microsoft 365 ska kunna stödjas. False om denna slutpunktsuppsättning är valfri.
  • anteckningar – För valfria slutpunkter beskriver den här texten Microsoft 365-funktioner som inte skulle vara tillgängliga om IP-adresser eller URL:er i den här slutpunktsuppsättningen inte kan nås på nätverksskiktet. Utelämnas om tomt.

Exempel på slutpunktswebbmetod

Exempel 1 begär URI: https://endpoints.office.com/endpoints/Worldwide?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Den här URI:n hämtar alla slutpunkter för Den globala Microsoft 365-instansen för alla arbetsbelastningar. Exempelresultat som visar ett utdrag av utdata:

[
 {
  "id": 1,
  "serviceArea": "Exchange",
  "serviceAreaDisplayName": "Exchange Online",
  "urls":
   [
    "*.protection.outlook.com"
   ],
  "ips":
   [
    "2a01:111:f403::/48", "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", "213.199.154.0/24", "213.199.180.128/26", "94.245.120.64/26", "207.46.163.0/24", "65.55.88.0/24", "216.32.180.0/23", "23.103.144.0/20", "65.55.169.0/24", "207.46.100.0/24", "2a01:111:f400:7c00::/54", "157.56.110.0/23", "23.103.200.0/22", "104.47.0.0/17", "2a01:111:f400:fc00::/54", "157.55.234.0/24", "157.56.112.0/24", "52.238.78.88/32"
   ],
  "tcpPorts": "443",
  "expressRoute": true,
  "category": "Allow"
 },
 {
  "id": 2,
  "serviceArea": "Exchange",
  "serviceAreaDisplayName": "Exchange Online",
  "urls":
   [
    "*.mail.protection.outlook.com"
   ],

Den fullständiga utskriften av begäran i det här exemplet skulle innehålla andra slutpunktsuppsättningar.

Exempel 2 begär URI: https://endpoints.office.com/endpoints/Worldwide?ServiceAreas=Exchange&ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Det här exemplet hämtar slutpunkter för Microsoft 365 Worldwide-instansen endast för Exchange Online och beroenden.

Utdata, till exempel 2 liknar exempel 1, förutom att resultaten inte skulle innehålla slutpunkter för SharePoint eller Skype för företag Online.

Ändringswebbmetod

Ändringswebbmetoden returnerar de senaste uppdateringarna som har publicerats är vanligtvis föregående månads ändringar av IP-adressintervall och URL-adresser.

De mest kritiska ändringarna av slutpunkternas data är nya URL:er och IP-adresser. Om du inte lägger till en IP-adress i en lista över brandväggsåtkomstkontroll eller en URL till en lista över förbikoppling av proxyservern kan det orsaka ett avbrott för Microsoft 365-användare bakom den nätverksenheterna. Trots operativ krav publiceras nya slutpunkter till webbtjänsten 30 dagar före det datum då slutpunkterna allokeras för att ge dig tid att uppdatera listor för åtkomstkontroll och förbikopplingslistor för proxyserver.

Den obligatoriska parametern för ändringswebbmetoden är:

  • Version=<YYYYYMMDDNN> – obligatorisk URL-vägparameter. Det här värdet är versionen som du för närvarande har implementerat. Webbtjänsten kommer att returnera ändringarna sedan den versionen. Formatet är YYYYMMDDNN, där NN är ett naturligt tal som ökas om det finns flera versioner som måste publiceras på en enda dag och 00 som representerar den första uppdateringen för en viss dag. Webbtjänsten kräver att version-parametern innehåller exakt 10 siffror.

Ändringswebbmetoden är begränsad på samma sätt som webbmetoden för slutpunkter. Om du får en 429 HTTP-svarskod väntar du i 1 timme innan du upprepar begäran eller genererar ett nytt GUID för begäran.

Resultatet från ändringswebbmetoden är en matris med poster där varje post representerar en ändring i en specifik version av slutpunkterna. Elementen för varje post är:

  • id – Oföränderligt ID för ändringsposten.
  • endpointSetId – ID för slutpunktsuppsättningsposten som har ändrats.
  • disposition – beskriver vad ändringen gjorde till i slutpunktsuppsättningens post. Värdena är ändra, lägga till eller ta bort.
  • impact – alla förändringar blir inte lika viktiga för alla miljöer. Det här elementet beskriver den förväntade effekten på en företagsnätverksgräns som ett resultat av ändringen. Det här elementet inkluderas bara i ändringsposter av versionen 2018112800 och senare. Alternativen för påverkan är: – AddedIp – En IP-adress har lagts till i Microsoft 365 och kommer snart att vara live på tjänsten. Det här är en ändring som du måste utföra på en brandvägg eller annan nätverksgränsenhet för nivå 3. Om du inte lägger till detta innan vi börjar använda det kan det uppstå ett avbrott. – AddedUrl – En URL lades till i Microsoft 365 och kommer snart att vara live på tjänsten. Det här är en ändring som du måste utföra på en proxyserver eller URL-tolkande nätverksgränsenhet. Om du inte lägger till den här URL:en innan vi börjar använda den kan det uppstå ett avbrott. – AddedIpAndUrl – både en IP-adress och en URL lades till. Det här är en ändring som du måste utföra antingen på en brandväggsenhet på nivå 3 eller proxyserver eller URL-tolkande enhet. Om du inte lägger till det här IP-/URL-paret innan vi börjar använda det kan det uppstå ett avbrott. – RemovedIpOrUrl – minst en IP-adress eller URL har tagits bort från Microsoft 365. Ta bort nätverksslutpunkterna från dina perimeterenheter, men det finns ingen tidsgräns för att göra detta. – ChangedIsExpressRoute – Microsoft Azure ExpressRoutens supportattribut har ändrats. Om du använder Microsoft Azure ExpressRoute kan du behöva vidta åtgärder beroende på din konfiguration. – MovedIpOrUrl – vi har flyttat en IP-adress eller URL mellan den här slutpunktsuppsättningen och en annan. Generellt krävs ingen åtgärd. – RemovedDuplicateIpOrUrl – Vi har tagit bort en duplicerad IP-adress eller URL men den är fortfarande publicerad för Microsoft 365. Generellt krävs ingen åtgärd. – OtherNonPriorityChanges – vi har ändrat något som är mindre kritiskt än alla andra alternativ, t. ex. innehållet i ett anteckningsfält.
  • version – Version av den publicerade slutpunktsuppsättningen i vilken ändringen infördes. Versionsnummer är i formatet ÅÅÅÅMMDDNN, där NN är ett naturligt tal som ökas automatiskt om det finns flera obligatoriska versioner som ska publiceras på samma dag.
  • föregående – En underordnad struktur med information om tidigare värden för ändrade element i slutpunktsuppsättningen. Detta inkluderas inte för nyligen tillagda slutpunktsuppsättningar. Innehåller ExpressRoute, serviceArea, category, required, tcpPorts, udpPorts och notes.
  • aktuella – En underordnad struktur med information om uppdaterade värden för ändrade element i slutpunktsuppsättningen. Innehåller ExpressRoute, serviceArea, category, required, tcpPorts, udpPorts och notes.
  • lägga till – En underordnad struktur med information om objekt som ska läggas till i slutpunktsuppsättningssamlingar. Utelämnas om det inte finns några tillägg. – effectiveDate – Definierar data när tilläggen börjar gälla i tjänsten. – ips – Objekt som ska läggas till i ips-matrisen. – urls – Objekt som ska läggas till i url-matrisen.
  • ta bort – En underordnad struktur med information om objekt som ska tas bort från slutpunktsuppsättningen. Utelämnas om det inte finns några borttagningar. – ips – Objekt som ska tas bort från ips-matrisen. urls – Objekt som ska tas bort från urls-matrisen.

Exempel på ändringswebbmetod

Exempel 1 begär URI: https://endpoints.office.com/changes/worldwide/0000000000?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Detta begär alla tidigare ändringar i den globala Microsoft 365-tjänstinstansen. Exempelresultat:

[
 {
  "id": 424,
  "endpointSetId": 32,
  "disposition": "Change",
  "version": "2018062700",
  "remove":
   {
    "urls":
     [
      "*.api.skype.com", "skypegraph.skype.com"
     ]
   }
 },
 {
  "id": 426,
  "endpointSetId": 31,
  "disposition": "Change",
  "version": "2018062700",
  "add":
   {
    "effectiveDate": "20180609",
    "ips":
     [
      "51.140.203.190/32"
     ]
   },
  "remove":
   {
    "ips":
     [

Exempel 2 begär URI: https://endpoints.office.com/changes/worldwide/2018062700?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Detta begär ändringar sedan den angivna versionen till Microsoft 365 Worldwide-instansen. I det här fallet är den senaste versionen den som anges. Exempelresultat:

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

Exempel på Windows PowerShell-skript

Du kan köra detta Windows PowerShell-skript för att se om det finns åtgärder du ska vidta för uppdaterade data. Du kan köra det här skriptet som en schemalagd aktivitet för att söka efter en versionsuppdatering. Om du vill undvika överdriven belastning på webbtjänsten försöker du inte köra skriptet mer än en gång i timmen.

Skriptet gör följande:

  • Kontrollerar versionsnumret för de aktuella Microsoft 365 Worldwide-instansslutpunkterna genom att anropa webbtjänstens REST API.

  • Söker efter en aktuell versionsfil på $Env:TEMP\O365_endpoints_latestversion.txt. Sökvägen till den globala variabeln $Env:TEMP är vanligtvis C:\Users\<username>\AppData\Local\Temp.

  • Om det här är första gången skriptet körs returnerar skriptet den aktuella versionen och alla aktuella IP-adresser och URL-adresser och skriver slutpunktsversionen till fil $Env:TEMP\O365_endpoints_latestversion.txt och slutpunktsdata kommer att skrivas till filen $Env:TEMP\O365_endpoints_data.txt. Du kan ändra sökvägen och/eller namnet på utdatafilen genom att redigera dessa rader:

    $versionpath = $Env:TEMP + "\O365_endpoints_latestversion.txt"
    $datapath = $Env:TEMP + "\O365_endpoints_data.txt"
    
  • För varje efterföljande körning av skriptet, om den senaste webbtjänstversionen är identisk med versionen i filen O365_endpoints_latestversion.txt avslutas skriptet utan att några ändringar görs.

  • När den senaste webbtjänstversionen är nyare än den version som finns i filen O365_endpoints_latestversion.txt returnerar skriptet slutpunkterna och filter för kategorislutpunkterna Tillåta och Optimera, uppdaterar versionen i filen O365_endpoints_latestversion.txt och skriver uppdaterad data till O365_endpoints_data.txt.

Skriptet genererar ett unikt ClientRequestId för den dator som det körs på och återanvänder detta ID över flera anrop. Detta ID finns i filen O365_endpoints_latestversion.txt.

Om du vill köra Windows PowerShell-skriptet

  1. Kopiera skriptet och spara det till den lokala hårddisken eller till en skriptplats som Get-O365WebServiceUpdates.ps1.

  2. Kör skriptet i önskad skriptredigerare, t. ex. Windows PowerShell ISE eller VS-koden eller från en Windows PowerShell-konsol med följande kommando:

    powershell.exe -file <path>\Get-O365WebServiceUpdates.ps1
    

    Det finns inga parametrar att skicka till skriptet.

<# Get-O365WebServiceUpdates.ps1
From https://aka.ms/ipurlws
v1.1 8/6/2019

DESCRIPTION
This script calls the REST API of the Microsoft 365 IP and URL Web Service (Worldwide instance)
and checks to see if there has been a new update since the version stored in an existing
$Env:TEMP\O365_endpoints_latestversion.txt file in your user directory's temp folder
(usually C:\Users\<username>\AppData\Local\Temp).
If the file doesn't exist, or the latest version is newer than the current version in the
file, the script returns IPs and/or URLs that have been changed, added or removed in the latest
update and writes the new version and data to the output file $Env:TEMP\O365_endpoints_data.txt.

USAGE
Run as a scheduled task every 60 minutes.

PARAMETERS
n/a

PREREQUISITES
PS script execution policy: Bypass
PowerShell 3.0 or later
Does not require elevation
#>

#Requires -Version 3.0

# web service root URL
$ws = "https://endpoints.office.com"
# path where output files will be stored
$versionpath = $Env:TEMP + "\O365_endpoints_latestversion.txt"
$datapath = $Env:TEMP + "\O365_endpoints_data.txt"

# fetch client ID and version if version file exists; otherwise create new file and client ID
if (Test-Path $versionpath) {
    $content = Get-Content $versionpath
    $clientRequestId = $content[0]
    $lastVersion = $content[1]
    Write-Output ("Version file exists! Current version: " + $lastVersion)
}
else {
    Write-Output ("First run! Creating version file at " + $versionpath + ".")
    $clientRequestId = [GUID]::NewGuid().Guid
    $lastVersion = "0000000000"
    @($clientRequestId, $lastVersion) | Out-File $versionpath
}

# call version method to check the latest version, and pull new data if version number is different
$version = Invoke-RestMethod -Uri ($ws + "/version/Worldwide?clientRequestId=" + $clientRequestId)
if ($version.latest -gt $lastVersion) {
    Write-Host "New version of Microsoft 365 worldwide commercial service instance endpoints detected"
    # write the new version number to the version file
    @($clientRequestId, $version.latest) | Out-File $versionpath
    # invoke endpoints method to get the new data
    $endpointSets = Invoke-RestMethod -Uri ($ws + "/endpoints/Worldwide?clientRequestId=" + $clientRequestId)
    # filter results for Allow and Optimize endpoints, and transform these into custom objects with port and category
    # URL results
    $flatUrls = $endpointSets | ForEach-Object {
        $endpointSet = $_
        $urls = $(if ($endpointSet.urls.Count -gt 0) { $endpointSet.urls } else { @() })
        $urlCustomObjects = @()
        if ($endpointSet.category -in ("Allow", "Optimize")) {
            $urlCustomObjects = $urls | ForEach-Object {
                [PSCustomObject]@{
                    category = $endpointSet.category;
                    url      = $_;
                    tcpPorts = $endpointSet.tcpPorts;
                    udpPorts = $endpointSet.udpPorts;
                }
            }
        }
        $urlCustomObjects
    }
    # IPv4 results
    $flatIp4s = $endpointSets | ForEach-Object {
        $endpointSet = $_
        $ips = $(if ($endpointSet.ips.Count -gt 0) { $endpointSet.ips } else { @() })
        # IPv4 strings contain dots
        $ip4s = $ips | Where-Object { $_ -like '*.*' }
        $ip4CustomObjects = @()
        if ($endpointSet.category -in ("Allow", "Optimize")) {
            $ip4CustomObjects = $ip4s | ForEach-Object {
                [PSCustomObject]@{
                    category = $endpointSet.category;
                    ip = $_;
                    tcpPorts = $endpointSet.tcpPorts;
                    udpPorts = $endpointSet.udpPorts;
                }
            }
        }
        $ip4CustomObjects
    }
    # IPv6 results
    $flatIp6s = $endpointSets | ForEach-Object {
        $endpointSet = $_
        $ips = $(if ($endpointSet.ips.Count -gt 0) { $endpointSet.ips } else { @() })
        # IPv6 strings contain colons
        $ip6s = $ips | Where-Object { $_ -like '*:*' }
        $ip6CustomObjects = @()
        if ($endpointSet.category -in ("Optimize")) {
            $ip6CustomObjects = $ip6s | ForEach-Object {
                [PSCustomObject]@{
                    category = $endpointSet.category;
                    ip = $_;
                    tcpPorts = $endpointSet.tcpPorts;
                    udpPorts = $endpointSet.udpPorts;
                }
            }
        }
        $ip6CustomObjects
    }

    # write output to screen
    Write-Output ("Client Request ID: " + $clientRequestId)
    Write-Output ("Last Version: " + $lastVersion)
    Write-Output ("New Version: " + $version.latest)
    Write-Output ""
    Write-Output "IPv4 Firewall IP Address Ranges"
    ($flatIp4s.ip | Sort-Object -Unique) -join "," | Out-String
    Write-Output "IPv6 Firewall IP Address Ranges"
    ($flatIp6s.ip | Sort-Object -Unique) -join "," | Out-String
    Write-Output "URLs for Proxy Server"
    ($flatUrls.url | Sort-Object -Unique) -join "," | Out-String
    Write-Output ("IP and URL data written to " + $datapath)

    # write output to data file
    Write-Output "Microsoft 365 IP and UL Web Service data" | Out-File $datapath
    Write-Output "Worldwide instance" | Out-File $datapath -Append
    Write-Output "" | Out-File $datapath -Append
    Write-Output ("Version: " + $version.latest) | Out-File $datapath -Append
    Write-Output "" | Out-File $datapath -Append
    Write-Output "IPv4 Firewall IP Address Ranges" | Out-File $datapath -Append
    ($flatIp4s.ip | Sort-Object -Unique) -join "," | Out-File $datapath -Append
    Write-Output "" | Out-File $datapath -Append
    Write-Output "IPv6 Firewall IP Address Ranges" | Out-File $datapath -Append
    ($flatIp6s.ip | Sort-Object -Unique) -join "," | Out-File $datapath -Append
    Write-Output "" | Out-File $datapath -Append
    Write-Output "URLs for Proxy Server" | Out-File $datapath -Append
    ($flatUrls.url | Sort-Object -Unique) -join "," | Out-File $datapath -Append
}
else {
    Write-Host "Microsoft 365 worldwide commercial service instance endpoints are up-to-date."
}

Exempel på Python-skript

Här är ett Python-skript, testat med Python 3.6.3 på Windows 10, som du kan köra för att se om det finns åtgärder som du behöver vidta för uppdaterade data. Det här skriptet kontrollerar versionsnumret för Microsoft 365 Worldwide-instansslutpunkterna. När en ändring sker laddas slutpunkterna och filtren ned för kategorislutpunkterna Tillåt och Optimera . Det använder även en unik ClientRequestId på flera anrop och sparar den senaste versionen som finns i en tillfällig fil. Anropa det här skriptet en gång i timmen för att söka efter en versionsuppdatering.

import json
import tempfile
from pathlib import Path
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 = Path(tempfile.gettempdir() + '/endpoints_clientid_latestversion.txt')
# fetch client ID and version if data exists; otherwise create new file
if datapath.exists():
    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', 'Worldwide', clientRequestId)
if version['latest'] > latestVersion:
    print('New version of Microsoft 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', 'Worldwide', clientRequestId)
    # filter results for Allow and Optimize endpoints, and transform these into tuples with port and category
    flatUrls = []
    for endpointSet in endpointSets:
        if endpointSet['category'] in ('Optimize', 'Allow'):
            category = endpointSet['category']
            urls = endpointSet['urls'] if 'urls' in endpointSet else []
            tcpPorts = endpointSet['tcpPorts'] if 'tcpPorts' in endpointSet else ''
            udpPorts = endpointSet['udpPorts'] if 'udpPorts' in endpointSet else ''
            flatUrls.extend([(category, url, tcpPorts, udpPorts) for url in urls])
    flatIps = []
    for endpointSet in endpointSets:
        if endpointSet['category'] in ('Optimize', 'Allow'):
            ips = endpointSet['ips'] if 'ips' in endpointSet else []
            category = endpointSet['category']
            # IPv4 strings have dots while IPv6 strings have colons
            ip4s = [ip for ip in ips if '.' in ip]
            tcpPorts = endpointSet['tcpPorts'] if 'tcpPorts' in endpointSet else ''
            udpPorts = endpointSet['udpPorts'] if 'udpPorts' in endpointSet else ''
            flatIps.extend([(category, ip, tcpPorts, udpPorts) 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('Microsoft 365 worldwide commercial service instance endpoints are up-to-date')

Versionshantering av webbtjänstgränssnitt

Uppdateringar av parametrar eller resultat för de här webbtjänstmetoderna kan bli obligatoriska i framtiden. När den allmänt tillgängliga versionen av dessa webbtjänster har publicerats utför Microsoft rimliga åtgärder för att tillhandahålla förhandsinformation om viktiga uppdateringar av webbtjänsten. När Microsoft anser att en uppdatering kräver ändringar av de klienter som använder webbtjänsten, behåller Microsoft den tidigare versionen (en version bakåt) av webbtjänsten tillgänglig under minst 12 månader efter lanseringen av den nya versionen. Kunder som inte uppgraderar under den tiden kanske inte kan komma åt webbtjänsten och dess metoder. Kunderna måste säkerställa att klienter i webbtjänsten fortsätter att fungera utan fel om följande ändringar görs i webbtjänstens gränssnittssignatur:

  • Tillägg av en ny valfri parameter i en befintlig webbmetod som inte behöver tillhandahållas av äldre klienter och inte påverkar det resultat en äldre klient får.
  • Lägga till ett nytt namngivet attribut i något av REST-svarsobjekten eller andra kolumner i CSV-svarsmappen.
  • Lägga till en ny webbmetod med ett nytt namn som inte anropas av de äldre klienterna.

Uppdateringsaviseringar

Du kan använda några olika metoder för att få e-postmeddelanden när ändringar av IP-adresser och URL-adresser publiceras i webbtjänsten.

Exportera en proxy-PAC-fil

Get-PacFile är ett PowerShell-skript som läser de senaste nätverksslutpunkterna från webbtjänsten Microsoft 365 IP-adress och URL och skapar en PAC-exempelfil. Information om hur du använder Get-PacFile finns i Använda en PAC-fil för direktdirigering av viktig Microsoft 365-trafik.

Url:er och IP-adressintervall för Microsoft 365

Hantera Microsoft 365-slutpunkter

Principer för nätverksanslutning i Microsoft 365

Nätverks- och prestandajustering för Microsoft 365

Utvärdera Microsoft 365 nätverksanslutningar

Prestanda för mediekvalitet och nätverksanslutning i Skype för företag – Online

Optimera ditt nätverk för Skype för företag – Online

Prestandajustering i Microsoft 365 med baslinjer och prestandahistorik

Prestandafelsökningsplan för Microsoft 365