Del via


Microsoft 365 IP-adresse og nettadressenetttjeneste

Microsoft 365 IP-adressen og nettadressetjenesten hjelper deg med å identifisere og differensiere Microsoft 365-nettverkstrafikk på en bedre måte, noe som gjør det enklere for deg å evaluere, konfigurere og holde deg oppdatert med endringer. Denne REST-baserte nettjenesten erstatter de forrige XML-nedlastbare filene, som ble faset ut 2. oktober 2018.

Som kunde eller leverandør av nettverksperimeterenheter kan du bygge mot nettjenesten for IP-adresser og FQDN-oppføringer for Microsoft 365. Du kan få tilgang til dataene direkte i en nettleser ved hjelp av disse nettadressene:

Som kunde kan du bruke denne nettjenesten til å:

  • Oppdater PowerShell-skriptene for å hente Microsoft 365-endepunktdata og endre eventuell formatering for nettverksenhetene.
  • Bruk denne informasjonen til å oppdatere PAC-filer som er distribuert til klientdatamaskiner.

Som leverandør av nettverksperimeterenheter kan du bruke denne nettjenesten til å:

  • Opprett og test enhetsprogramvare for å laste ned listen for automatisert konfigurasjon.
  • Se etter gjeldende versjon.
  • Hent gjeldende endringer.

Obs!

Hvis du bruker Azure ExpressRoute til å koble til Microsoft 365, kan du se gjennom Azure ExpressRoute for Microsoft 365 for å gjøre deg kjent med Microsoft 365-tjenestene som støttes via Azure ExpressRoute. Se også gjennom artikkelen Microsoft 365-nettadresser og IP-adresseområder for å forstå hvilke nettverksforespørsler for Microsoft 365-programmer som krever Internett-tilkobling. Dette vil bidra til bedre konfigurering av sikkerhetsenhetene for perimeter.

Hvis du vil ha mer informasjon, kan du se:

Vanlige parametere

Disse parameterne er vanlige på tvers av alle nettjenestemetodene:

  • format=<JSON | CSV> – som standard er det returnerte dataformatet JSON. Bruk denne valgfrie parameteren til å returnere dataene i kommadelte verdier (CSV)-format.

  • ClientRequestId=<guid> – en nødvendig GUID som du genererer for klienttilknytning. Generer en unik GUID for hver maskin som kaller nettjenesten (skriptene som er inkludert på denne siden, genererer en GUID for deg). Ikke bruk GUID-ene som vises i eksemplene nedenfor, fordi de kan bli blokkert av nettjenesten i fremtiden. GUID-formatet er xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, der x representerer et heksadesimalt tall.

    Hvis du vil generere en GUID, kan du bruke New-Guid PowerShell-kommandoen eller bruke en nettjeneste, for eksempel Online GUID Generator.

Webmetode for versjon

Microsoft oppdaterer IP-adressen og FQDN-oppføringene for Microsoft 365 i begynnelsen av hver måned. Oppdateringer utenfor gruppen publiseres noen ganger på grunn av støttehendelser, sikkerhetsoppdateringer eller andre operasjonelle krav.

Dataene for hver publiserte forekomst tilordnes et versjonsnummer, og med nettmetoden versjoner kan du se etter den nyeste versjonen av hver microsoft 365-tjenesteforekomst. Vi anbefaler at du kontrollerer versjonen ikke mer enn én gang i timen.

Parametere for nettmetoden for versjonen er:

  • AllVersions=<true | false> – som standard er den returnerte versjonen den nyeste. Inkluder denne valgfrie parameteren for å be om alle publiserte versjoner siden nettjenesten først ble utgitt.
  • Format=<JSON | CSV | RSS> – I tillegg til JSON- og CSV-formatene støtter nettmetoden for versjoner også RSS. Du kan bruke denne valgfrie parameteren sammen med AllVersions= sann-parameteren for å be om en RSS-feed som kan brukes med Outlook eller andre RSS-lesere.
  • Forekomst=<Verdensomspennende | Kina | USGovDoD | USGovGCCHigh> – denne valgfrie parameteren angir forekomsten versjonen skal returneres for. Hvis utelatt, returneres alle forekomster. Gyldige forekomster er: Worldwide, China, USGovDoD, USGovGCCHigh.

Nettmetoden for versjonen er ikke begrenset og returnerer aldri 429 HTTP-svarkoder. Svaret på nettmetoden for versjonen inkluderer en hurtigbufferkontrolloverskrift som anbefaler hurtigbufring av dataene i 1 time. Resultatet fra nettmetoden for versjon kan være én enkelt post eller en matrise med poster. Elementene i hver post er:

  • forekomst – det korte navnet på Microsoft 365-tjenesteforekomsten.
  • nyeste – den nyeste versjonen for endepunkter for den angitte forekomsten.
  • versjoner – en liste over alle tidligere versjoner for den angitte forekomsten. Dette elementet inkluderes bare hvis Parameteren AllVersions er sann.

Eksempler på nettmetode for versjon

Forespørsels-URI for eksempel 1: https://endpoints.office.com/version?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Denne URI-en returnerer den nyeste versjonen av hver Microsoft 365-tjenesteforekomst. Eksempelresultat:

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

Viktig

GUID-en for ClientRequestID-parameteren i disse URI-ene er bare et eksempel. Generer din egen GUID for å prøve nettjeneste-URI-ene. GUID-ene som vises i disse eksemplene, kan bli blokkert av nettjenesten i fremtiden.

Forespørsels-URI for eksempel 2: https://endpoints.office.com/version/Worldwide?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Denne URI-en returnerer den nyeste versjonen av den angitte Microsoft 365-tjenesteforekomsten. Eksempelresultat:

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

Eksempel 3 forespørsel URI: https://endpoints.office.com/version/Worldwide?Format=CSV& ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Denne URI-en viser utdata i CSV-format. Eksempelresultat:

instance,latest
Worldwide,2018063000

Eksempel 4 forespørsel URI: https://endpoints.office.com/version/Worldwide?AllVersions=true& ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Denne URI-en viser alle tidligere versjoner som er publisert for tjenesteforekomsten for Microsoft 365 på verdensbasis. Eksempelresultat:

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

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

Denne URI-en viser en RSS-feed av de publiserte versjonene som inneholder koblinger til listen over endringer for hver versjon. Eksempelresultat:

<?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>

Nettmetode for endepunkter

Nettmetoden for endepunkter returnerer alle poster for IP-adresseområder og nettadresser som utgjør Microsoft 365-tjenesten. De nyeste dataene fra nettmetoden for endepunkter bør alltid brukes for konfigurasjon av nettverksenheter. Microsoft gir forhåndsvarsel 30 dager før du publiserer nye tillegg for å gi deg tid til å oppdatere tilgangskontrolllister og proxy-serverforbikoblingslister. Vi anbefaler at du bare kaller opp nettmetoden for endepunkter på nytt når nettmetoden versjon angir at en ny versjon av dataene er tilgjengelig.

Parametere for nettmetoden for endepunkter er:

  • ServiceAreas=<Felles | Exchange | SharePoint | Skype> – en kommadelt liste over tjenesteområder. Gyldige elementer er Common, Exchange, SharePoint og Skype. Siden common service-områdeelementer er en forutsetning for alle andre tjenesteområder, inkluderer nettjenesten dem alltid. Hvis du ikke inkluderer denne parameteren, returneres alle tjenesteområder.
  • TenantName=<tenant_name> – Microsoft 365-leiernavnet ditt. Nettjenesten tar det angitte navnet og setter det inn i deler av nettadresser som inneholder leiernavnet. Hvis du ikke angir et leiernavn, har disse delene av nettadressene jokertegnet (*).
  • NoIPv6=<true | false> – Angi verdien til sann for å utelate IPv6-adresser fra utdataene hvis du ikke bruker IPv6 i nettverket.
  • Forekomst=<Verdensomspennende | Kina | USGovDoD | USGovGCCHigh> – Denne nødvendige parameteren angir forekomsten som endepunktene skal returneres fra. Gyldige forekomster er: Worldwide, China, USGovDoD og USGovGCCHigh.

Hvis du kaller webmetoden for endepunkter for mange ganger fra den samme klient-IP-adressen, kan du motta HTTP-svarkode 429 (for mange forespørsler). Hvis du får denne svarkoden, venter du 1 time før du gjentar forespørselen, eller genererer en ny GUID for forespørselen. Som en generell anbefalt fremgangsmåte må du bare kalle nettmetoden for endepunkter når nettmetoden versjon angir at en ny versjon er tilgjengelig.

Resultatet fra nettmetoden for endepunkter er en matrise med poster der hver post representerer et bestemt endepunktsett. Elementene for hver post er:

  • id – det uforanderlige ID-nummeret for endepunktsettet.
  • serviceArea – tjenesteområdet som dette er en del av: Common, Exchange, SharePoint eller Skype.
  • url-adresser – URL-adresser for endepunktsettet. En JSON-matrise med DNS-poster. Utelates hvis tom.
  • tcpPorts – TCP-porter for endepunktsettet. Alle portelementer er formatert som en kommadelt liste over porter eller portområder atskilt med tankestreker (-). Porter gjelder for alle IP-adresser og alle nettadresser i endepunktsettet for en gitt kategori. Utelates hvis tom.
  • udpPorts – UDP-porter for IP-adresseområder i dette endepunktsettet. Utelates hvis tom.
  • ips – IP-adresseområder som er knyttet til dette endepunktsettet, som er knyttet til de oppførte TCP- eller UDP-portene. En JSON-matrise med IP-adresseområder. Utelates hvis tom.
  • kategori – tilkoblingskategorien for endepunktsettet. Gyldige verdier er Optimaliser, Tillat og Standard. Hvis du søker i utdataene for nettmetoden for endepunktene etter kategorien for en bestemt IP-adresse eller nettadresse, er det mulig at spørringen returnerer flere kategorier. I et slikt tilfelle følger du anbefalingen for kategorien med høyest prioritet. Hvis for eksempel endepunktet vises i både Optimaliser og Tillat, bør du følge kravene for optimalisering. Nødvendig.
  • expressRoute – Sann hvis dette endepunktsettet rutes over ExpressRoute, False hvis ikke.
  • obligatorisk – sann hvis dette endepunktsettet kreves for å ha tilkobling for at Microsoft 365 skal støttes. Usann hvis dette endepunktsettet er valgfritt.
  • merknader – For valgfrie endepunkter beskriver denne teksten Microsoft 365-funksjonalitet som ville vært utilgjengelig hvis IP-adresser eller URL-adresser i dette endepunktsettet ikke kan åpnes på nettverkslaget. Utelates hvis tom.

Eksempler på nettmetode for endepunkter

Forespørsels-URI for eksempel 1: https://endpoints.office.com/endpoints/Worldwide?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Denne URI-en henter alle endepunktene for Microsoft 365-forekomsten på verdensbasis for alle arbeidsbelastninger. Eksempelresultat som viser et utdrag av utdataene:

[
 {
  "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 fullstendige utdataene for forespørselen i dette eksemplet vil inneholde andre endepunktsett.

Eksempel 2 forespørsel URI: https://endpoints.office.com/endpoints/Worldwide?ServiceAreas=Exchange& ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Dette eksemplet henter endepunkter for Microsoft 365 Worldwide-forekomsten bare for Exchange Online og avhengigheter.

Utdataene, for eksempel, 2 ligner på eksempel 1 bortsett fra at resultatene ikke inkluderer endepunkter for SharePoint eller Skype for Business Online.

Endrer webmetode

Endringene av nettmetoden returnerer de nyeste oppdateringene som er publisert, vanligvis forrige måneds endringer i IP-adresseområder og nettadresser.

De mest kritiske endringene i endepunktdata er nye nettadresser og IP-adresser. Hvis du ikke legger til en IP-adresse i en kontrollliste for brannmurtilgang eller en URL-adresse til en proxy-server, kan det føre til et avbrudd for Microsoft 365-brukere bak denne nettverksenheten. Til tross for operasjonelle krav publiseres nye endepunkter til nettjenesten 30 dager før datoen endepunktene klargjøres for bruk for å gi deg tid til å oppdatere tilgangskontrolllister og proxy-serverforbikoblingslister.

Den nødvendige parameteren for webmetoden changes er:

  • Versjon=<YYYYMMDDNN> – obligatorisk parameter for URL-adresserute. Denne verdien er versjonen du har implementert for øyeblikket. Nettjenesten returnerer endringene siden denne versjonen. Formatet er YYYYMMDDNN, der NN er et naturlig tall som økes hvis det er flere versjoner som må publiseres på én enkelt dag, med 00 som representerer den første oppdateringen for en gitt dag. Nettjenesten krever at versjonsparameteren inneholder nøyaktig 10 sifre.

Endringene av nettmetoden er begrenset på samme måte som nettmetoden for endepunkter. Hvis du mottar en 429 HTTP-svarkode, må du vente 1 time før du gjentar forespørselen eller genererer en ny GUID for forespørselen.

Resultatet av endringene av nettmetoden er en matrise med poster der hver post representerer en endring i en bestemt versjon av endepunktene. Elementene for hver post er:

  • id – Uforanderlig ID for endringsposten.
  • endpointSetId – ID-en for endepunktsettposten som er endret.
  • disposition – beskriver hva endringen gjorde med den angitte endepunktposten. Verdier er endring, legg til eller fjern.
  • innvirkning – ikke alle endringer vil være like viktige for alle miljøer. Dette elementet beskriver den forventede innvirkningen på et nettverksperimetermiljø for virksomheten som følge av denne endringen. Dette elementet er bare inkludert i endringsoppføringer i versjon 2018112800 og nyere. Alternativene for innvirkningen er: – AddedIp – En IP-adresse ble lagt til i Microsoft 365 og vil snart være direkte på tjenesten. Dette representerer en endring du må utføre på en brannmur eller en annen nettverksperimeterenhet på lag 3. Hvis du ikke legger til dette før vi begynner å bruke det, kan du oppleve et strømbrudd. — AddedUrl – En URL-adresse ble lagt til Microsoft 365 og vil snart være direkte på tjenesten. Dette representerer en endring du må utføre på en proxy-server eller nettadresse som analyserer nettverksperimeterenheten. Hvis du ikke legger til denne nettadressen før vi begynner å bruke den, kan det hende du opplever et strømbrudd. — AddedIpAndUrl – Både en IP-adresse og en URL-adresse ble lagt til. Dette representerer en endring du må utføre på en brannmurlag 3-enhet eller en proxy-server eller nettadresseanalyseenhet. Hvis du ikke legger til dette IP-/URL-paret før vi begynner å bruke det, kan det hende du opplever et strømbrudd. — RemovedIpOrUrl – minst én IP-adresse eller URL-adresse ble fjernet fra Microsoft 365. Fjern nettverksendepunktene fra perimeterenhetene, men det er ingen tidsfrist for å gjøre dette. — ChangedIsExpressRoute – ExpressRoute-støtteattributtet ble endret. Hvis du bruker ExpressRoute, må du kanskje utføre handlinger avhengig av konfigurasjonen. — MovedIpOrUrl – Vi flyttet en IP-adresse eller URL-adresse mellom dette endepunktsettet og et annet. Vanligvis kreves ingen handling. — RemovedDuplicateIpOrUrl – Vi fjernet en duplisert IP-adresse eller URL-adresse, men den er fortsatt publisert for Microsoft 365. Vanligvis kreves ingen handling. — OtherNonPriorityChanges – Vi endret noe mindre kritisk enn alle de andre alternativene, for eksempel innholdet i et notatfelt.
  • version – Versjonen av det publiserte endepunktsettet der endringen ble introdusert. Versjonsnumre er av formatet YYYYMMDDNN, der NN er et naturlig tall som økes hvis det er flere versjoner som må publiseres på én enkelt dag.
  • forrige – en delstruktur som beskriver tidligere verdier for endrede elementer i endepunktsettet. Dette inkluderes ikke for endepunktsett som nylig er lagt til. Inkluderer ExpressRoute, serviceArea, kategori, obligatorisk, tcpPorts, udpPorts og notater.
  • current – en delstruktur som beskriver oppdaterte verdier for endrede elementer i endepunktsettet. Inkluderer ExpressRoute, serviceArea, kategori, obligatorisk, tcpPorts, udpPorts og notater.
  • legg til – En delstruktur med detaljer om elementer som skal legges til i samlinger for endepunktsett. Utelates hvis det ikke finnes noen tillegg. — effectiveDate – Definerer dataene når tilleggene skal være direkte i tjenesten. — ips – elementer som skal legges til i ips-matrisen . – URL-adresser – elementer som skal legges til i nettadressematrisen .
  • remove – En delstruktur med detaljer om elementer som skal fjernes fra endepunktsettet. Utelates hvis det ikke er noen fjerninger. — ips – elementer som skal fjernes fra ips-matrisen . – URL-adresser – Elementer som skal fjernes fra nettadressematrisen .

Endrer eksempler på nettmetode

Forespørsels-URI for eksempel 1: https://endpoints.office.com/changes/worldwide/0000000000?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Dette ber om alle tidligere endringer i tjenesteforekomsten for Microsoft 365 på verdensbasis. Eksempelresultat:

[
 {
  "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":
     [

Forespørsels-URI for eksempel 2: https://endpoints.office.com/changes/worldwide/2018062700?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Dette ber om endringer siden den angitte versjonen av Microsoft 365 Worldwide-forekomsten. I dette tilfellet er den angitte versjonen den nyeste. Eksempelresultat:

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

Eksempel på PowerShell-skript

Du kan kjøre dette PowerShell-skriptet for å se om det finnes handlinger du må utføre for oppdaterte data. Du kan kjøre dette skriptet som en planlagt oppgave for å se etter en versjonsoppdatering. Hvis du vil unngå overflødig belastning på nettjenesten, kan du prøve å ikke kjøre skriptet mer enn én gang i timen.

Skriptet gjør følgende:

  • Kontrollerer versjonsnummeret til gjeldende forekomstendepunkter for Microsoft 365 Worldwide ved å kalle opp REST-API-en for nettjenesten.

  • Ser etter en gjeldende versjonsfil på $Env:TEMP\O365_endpoints_latestversion.txt. Banen til den globale variabelen $Env:TEMP er vanligvis C:\Brukere\<brukernavn>\AppData\Lokal\Temp.

  • Hvis dette er første gang skriptet er kjørt, returnerer skriptet gjeldende versjon og alle gjeldende IP-adresser og URL-adresser, skriver endepunktversjonen til filen $Env:TEMP\O365_endpoints_latestversion.txt og endepunktenes datautdata til filen $Env:TEMP\O365_endpoints_data.txt. Du kan endre banen og/eller navnet på utdatafilen ved å redigere disse linjene:

    $versionpath = $Env:TEMP + "\O365_endpoints_latestversion.txt"
    $datapath = $Env:TEMP + "\O365_endpoints_data.txt"
    
  • Hvis den nyeste versjonen av nettjenesten er identisk med versjonen i O365_endpoints_latestversion.txt-filen , avsluttes skriptet ved hver påfølgende kjøring av skriptet, uten å gjøre noen endringer.

  • Når den nyeste nettjenesteversjonen er nyere enn versjonen i O365_endpoints_latestversion.txt-filen, returnerer skriptet endepunktene og filtrene for kategoriendepunktene Tillat og optimaliser, oppdaterer versjonen i O365_endpoints_latestversion.txt-filen og skriver de oppdaterte dataene til O365_endpoints_data.txt-filen.

Skriptet genererer en unik ClientRequestId for datamaskinen den kjøres på, og bruker denne ID-en på nytt på tvers av flere kall. Denne ID-en lagres i O365_endpoints_latestversion.txt-filen .

Slik kjører du PowerShell-skriptet

  1. Kopier skriptet, og lagre det på den lokale harddisken eller skriptplasseringen som Get-O365WebServiceUpdates.ps1.

  2. Utfør skriptet i foretrukket skriptredigeringsprogram, for eksempel PowerShell ISE eller VS Code, eller fra en PowerShell-konsoll ved hjelp av følgende kommando:

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

    Det finnes ingen parametere som skal sendes til 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."
}

Eksempel på Python-skript

Her er et Python-skript, testet med Python 3.6.3 på Windows 10, som du kan kjøre for å se om det finnes handlinger du må utføre for oppdaterte data. Dette skriptet kontrollerer versjonsnummeret for forekomstendepunktene for Microsoft 365 Worldwide. Når det er en endring, laster den ned endepunktene og filtrene for kategoriendepunktene Tillat og optimaliser . Den bruker også en unik ClientRequestId på tvers av flere kall og lagrer den nyeste versjonen som finnes i en midlertidig fil. Kall dette skriptet én gang i timen for å se etter en versjonsoppdatering.

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

Versjonskontroll av webtjenestegrensesnitt

Oppdateringer til parameterne eller resultatene for disse nettjenestemetodene kan være nødvendig i fremtiden. Etter at den generelle tilgjengelighetsversjonen av disse nettjenestene er publisert, vil Microsoft gjøre rimelige anstrengelser for å gi forhåndsvarsel om materialoppdateringer til nettjenesten. Når Microsoft tror at en oppdatering vil kreve endringer for klienter som bruker nettjenesten, vil Microsoft holde den forrige versjonen (én versjon tilbake) av nettjenesten tilgjengelig i minst 12 måneder etter utgivelsen av den nye versjonen. Kunder som ikke oppgraderer i løpet av denne perioden, får kanskje ikke tilgang til nettjenesten og metodene. Kunder må sørge for at klienter for nettjenesten fortsetter å arbeide uten feil hvis følgende endringer gjøres i grensesnittsignaturen for nettjenesten:

  • Å legge til en ny valgfri parameter i en eksisterende nettmetode som ikke trenger å gis av eldre klienter, og som ikke påvirker resultatet en eldre klient mottar.
  • Legge til et nytt navngitt attributt i ett av REST-elementene i svaret eller andre kolonner i svar-CSV.
  • Legge til en ny nettmetode med et nytt navn som ikke kalles av de eldre klientene.

Oppdatere varsler

Du kan bruke noen forskjellige metoder for å få e-postvarsler når endringer i IP-adresser og nettadresser publiseres til nettjenesten.

Eksportere en PROXY PAC-fil

Get-PacFile er et PowerShell-skript som leser de nyeste nettverksendepunktene fra Microsoft 365 IP-adressen og nettadressenetttjenesten, og oppretter et eksempel på en PAC-fil. Hvis du vil ha informasjon om hvordan du bruker Get-PacFile, kan du se Bruke en PAC-fil for direkte ruting av viktig Microsoft 365-trafikk.

Nettadresser og IP-adresseområder for Microsoft 365

Administrere Microsoft 365-endepunkter

Prinsipper for nettverkstilkobling for Microsoft 365

Nettverksjustering og ytelsesjustering for Microsoft 365

Vurdering av Nettverkstilkobling for Microsoft 365

Ytelse for mediekvalitet og nettverkstilkobling i Skype for Business Online

Optimalisere nettverket for Skype for Business Online

Ytelsesjustering for Microsoft 365 ved hjelp av opprinnelige planer og ytelseslogg

Feilsøkingsplan for ytelse for Microsoft 365