Office 365-IP-Adress- und -URL-Webdienst

Der Office 365-IP-Adress- und URL-Dienst unterstützt Sie beim besseren Erkennen und Differenzieren des Netzwerkdatenverkehrs in Office 365, was es Ihnen erleichtert, Änderungen auszuwerten, zu konfigurieren und auf dem neuesten Stand zu bleiben. Dieser REST-basierte Webdienst ersetzt die vorherigen herunterladbaren XML-Dateien, die am 2. Oktober 2018 ausliefen.

Als Kunde oder Hersteller von Netzwerkumkreisgeräten können Sie den Build für den Webdienst für die Office 365-IP-Adress- und -FQDN-Einträge erstellen. Sie können direkt in einem Webbrowser auf die Daten zugreifen, indem Sie diese URLs verwenden:

Als Kunde können Sie diesen Webdienst für Folgendes verwenden:

  • Aktualisieren Sie Ihre PowerShell-Skripte zum Abrufen von Daten auf Office 365-Endpunkten und zum Ändern der Formatierung für Ihre Netzwerkgeräte.
  • Verwenden Sie diese Informationen, um auf Clientcomputern bereitgestellte PAC-Dateien zu aktualisieren.

Als Anbieter von Netzwerkperimetergeräten können Sie diesen Webdienst für Folgendes verwenden:

  • Erstellen und testen Sie Gerätesoftware für den Download der Liste für die automatische Konfiguration.
  • Suchen Sie die aktuelle Version.
  • Rufen Sie die aktuellen Änderungen ab.

Hinweis

Wenn Sie Azure ExpressRoute zum Herstellen einer Verbindung mit Office 365 verwenden, lesen Sie Azure ExpressRoute für Microsoft 365, um sich mit den über Azure ExpressRoute unterstützten Office 365-Diensten vertraut zu machen. Bitte lesen Sie auch den Artikel Office 365-URLs und -IP-Adressbereiche, um zu verstehen, welche Netzwerke für Office 365-Apps eine Internetverbindung benötigen. Das wird Ihnen helfen, Ihre Umkreis-Sicherheitsgeräte besser zu konfigurieren.

Weitere Informationen finden Sie unter:

Allgemeine Parameter

Diese Parameter gelten für sämtliche Webdienstmethoden:

  • format=< JSON | CSV> : Standardmäßig ist das zurückgegebene Datenformat JSON. Verwenden Sie diesen optionalen Parameter, um die Daten in durch Trennzeichen getrennten Werten (CSV-Format) zurückzuerhalten.

  • ClientRequestId=<guid> – Eine erforderliche GUID, die Sie für die Clientzuordnung generieren. Generieren Sie eine eindeutige GUID für jeden Computer, von dem der Webdienst aufgerufen wird (die auf dieser Seite enthaltenen Skripts generieren eine GUID für Sie). Nutzen Sie nicht die in den folgenden Beispielen dargestellten GUIDs, da sie künftig durch den Webdienst blockiert werden könnten. Das GUID-Format ist xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, wobei x eine hexadezimale Zahl darstellt.

    Wenn Sie eine GUID generieren möchten, können Sie den PowerShell-Befehl New-Guid verwenden oder einen Onlinedienst wie den Online GUID Generator nutzen.

Versionswebmethode

Microsoft aktualisiert die Office 365-IP-Adress- und -FQDN-Einträge am Anfang jeden Monats. Out-of-Band-Updates werden manchmal aufgrund von Supportfällen, Sicherheitsupdates oder sonstigen betrieblichen Anforderungen veröffentlicht.

Den Daten für jede veröffentlichte Instanz wird eine Versionsnummer zugewiesen, und mit der Versionswebmethode können Sie nach der neuesten Version jeder Office 365-Dienstinstanz suchen. Wir empfehlen, die Version nicht mehr als einmal pro Stunde zu überprüfen.

Parameter für die Versionswebmethode sind:

  • AllVersions=<true | false> – Standardmäßig ist die zurückgegebene Version die neueste. Nehmen Sie diesen optionalen Parameter mit auf, um alle veröffentlichten Versionen seit dem ersten Release des Webdiensts anzufordern.
  • Format=< JSON | CSV | RSS> : Zusätzlich zu den FORMATen JSON und CSV unterstützt die Version-Webmethode auch RSS. Diesen optionalen Parameter können Sie zusammen mit dem Parameter AllVersions=true verwenden, um einen RSS-Feed anzufordern, der mit Outlook oder anderen RSS-Readern genutzt werden kann.
  • Instanz=< Weltweit | China | USGovDoD | USGovGCCHigh> – Dieser optionale Parameter gibt die Instanz an, für die die Version zurückgegeben werden soll. Wenn nicht angegeben, werden alle Instanzen zurückgegeben. Gültige Instanzen sind: Weltweit, China, USGovDoD, USGovGCCHigh.

Die Rate der Versionswebmethode ist nicht beschränkt, und sie gibt nie 429-HTTP-Antwortcodes zurück. Die Antwort auf die Versionswebmethode enthält einen Cache-Control-Header, der empfiehlt, die Daten für eine Stunde zwischenzuspeichern. Das Ergebnis der Versionswebmethode kann ein einzelner Datensatz oder ein Array aus Datensätzen sein. Die Elemente jedes Datensatzes sind:

  • instance – der Kurzname der Office 365-Serviceinstanz.
  • latest – die neueste Version für Endpunkte der angegebenen Instanz.
  • versions – eine Liste aller vorherigen Versionen für die angegebene Instanz. Dieses Element wird nur einbezogen, wenn der Parameter AllVersions wahr ist.

Beispiele für die Versionswebmethode

Beispiel 1 – Anforderungs-URI: https://endpoints.office.com/version?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Dieser URI gibt die neueste Version jeder Office 365 Dienstinstanz zurück. Beispielergebnis:

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

Wichtig

Die GUID für den Parameter ClientRequestID in diesen URIs sind nur ein Beispiel. Um die Webdienst-URIs auszuprobieren, generieren Sie Ihre eigene GUID. Die in diesen Beispielen gezeigten GUIDs können in Zukunft vom Webdienst blockiert werden.

Beispiel 2 – Anforderungs-URI: https://endpoints.office.com/version/Worldwide?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Dieser URI gibt die neueste Version der angegebenen Office 365 Dienstinstanz zurück. Beispielergebnis:

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

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

Dieser URI zeigt die Ausgabe im CSV-Format an. Beispielergebnis:

instance,latest
Worldwide,2018063000

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

Dieser URI zeigt alle früheren Versionen an, die für die Office 365 weltweiten Dienstinstanz veröffentlicht wurden. Beispielergebnis:

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

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

Dieser URI zeigt einen RSS-Feed der veröffentlichten Versionen an, der Links zur Liste der Änderungen für jede Version enthält. Beispielergebnis:

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

Endpunktwebmethode

Die Endpunktwebmethode gibt alle Datensätze für IP-Adressbereiche und URLs zurück, die den Office 365-Dienst bilden. Die neuesten Daten aus der Endpunkt-Webmethode sollten immer für die Konfiguration von Netzwerkgeräten verwendet werden. Microsoft kündigt neue Ergänzungen 30 Tage vor der Veröffentlichung an, um Ihnen Zeit zum Aktualisieren von Zugriffssteuerungs- und Proxyserver-Umgehungslisten zu lassen. Wir empfehlen Ihnen, die Endpunktwebmethode erst wieder einzusetzen, wenn die Versionswebmethode besagt, dass eine neue Version der Daten verfügbar ist.

Parameter für die Endpunktwebmethode sind:

  • ServiceAreas=< Allgemein | Austausch | SharePoint | Skype> – Eine durch Trennzeichen getrennte Liste von Dienstbereichen. Gültige Elemente sindCommon, Exchange, SharePoint und Skype. Da Common-Dienstbereich-Elemente Voraussetzung für alle anderen Dienstbereiche sind, bezieht der Webdienst sie stets mit ein. Wenn Sie diesen Parameter nicht miteinschließen, werden alle Dienstbereiche zurückgegeben.
  • TenantName=<tenant_name> – Ihr Office 365 Mandantenname. Der Webdienst übernimmt Ihren angegebenen Namen und fügt ihn in URL-Teile ein, die den Mandantennamen enthalten. Wenn Sie keinen Mandantennamen angeben, weisen diese Teile der URLs das Platzhalterzeichen (*) auf.
  • NoIPv6=<true | false> – Legen Sie den Wert auf true fest, um IPv6-Adressen aus der Ausgabe auszuschließen, wenn Sie IPv6 nicht in Ihrem Netzwerk verwenden.
  • Instanz=< Weltweit | China | USGovDoD | USGovGCCHigh> – Dieser erforderliche Parameter gibt die Instanz an, von der die Endpunkte zurückgegeben werden sollen. Gültige Instanzen sind: Weltweit, China, USGovDoD, und USGovGCCHigh.

Wenn Sie die Endpunktwebmethode zu häufig von derselben Client-IP-Adresse abrufen, erhalten Sie möglicherweise den HTTP-Antwortcode 429 (zu viele Anforderungen). Wenn Sie diesen Antwortcode erhalten, warten Sie eine Stunde, bevor Sie Ihre Anforderung wiederholen, oder generieren Sie eine neue GUID für sie. Als allgemein bewährte Methode rufen Sie die Endpunktwebmethode nur auf, wenn die Versionswebmethode besagt, dass eine neue Version verfügbar ist.

Das Ergebnis der Endpunktwebmethode ist ein Array aus Datensätzen, in dem jeder Datensatz einen bestimmten Endpunktsatz darstellt. Die Elemente für jeden Datensatz sind:

  • id – die unveränderliche ID-Nummer des Endpunktsatzes.
  • serviceArea – der Servicebereich, zu dem Folgendes gehört: Allgemein, Exchange, SharePoint oder Skype.
  • urls – URLs für den Endpunktsatz. ein JSON-Array von DNS-Einträgen. Weggelassen, falls leer.
  • tcpPorts – TCP-Ports für den Endpunktsatz. Alle Ports-Elemente sind als eine durch Trennzeichen getrennte Liste von Ports oder Portbereichen formatiert, die durch einen Bindestrich (-) getrennt sind. Ports werden auf alle IP-Adressen und alle URLs im Endpunktsatz für eine bestimmte Kategorie angewendet. Weggelassen, falls leer.
  • udpPorts – UDP-Ports für die IP-Adressbereiche in diesem Endpunktsatz. Weggelassen, falls leer.
  • ips – die mit diesem Endpunktsatz verbundenen IP-Adressbereiche, die mit den aufgeführten TCP- oder UDP-Ports verknüpft sind. ein JSON-Array von IP-Adressbereichen. Weggelassen, falls leer.
  • category – die Verbindungskategorie des Endpunktsatzes. Gültige Werte sind Optimize, Allow und Default. Wenn Sie die Ausgabe der Endpunktwebmethode für die Kategorie einer bestimmten IP-Adresse oder URL durchsuchen, kann die Abfrage mehrere Kategorien zurückgeben. Folgen Sie in diesem Fall der Empfehlung für die Kategorie mit der höchsten Priorität. Wenn der Endpunkt beispielsweise sowohl in Optimize als auch Allow angezeigt wird, sollten Sie den Anforderungen für Optimize entsprechen. Erforderlich.
  • expressRoute – True, wenn dieser Endpunktsatz über ExpressRoute weitergeleitet wird; False, wenn nicht.
  • required – True, wenn für diesen Endpunktsatz Konnektivität erforderlich ist, damit Office 365 unterstützt wird. False, wenn dieser Endpunktsatz optional ist.
  • notes – für optionale Endpunkte beschreibt dieser Text die Office 365-Funktionalität, die nicht verfügbar wäre, wenn der Zugriff auf IP-Adressen oder URLs in diesem Endpunktsatz auf Netzwerkebene nicht möglich ist. Weggelassen, falls leer.

Beispiele für die Endpunktwebmethode

Beispiel 1 – Anforderungs-URI: https://endpoints.office.com/endpoints/Worldwide?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Dieser URI ruft alle Endpunkte für die Instanz von Office 365 weltweit für alle Workloads ab. Das Beispielergebnis zeigt einen Auszug der Ausgabe:

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

Die vollständige Ausgabe der Anforderung in diesem Beispiel würde weitere Endpunktsätze enthalten.

Beispiel 2 anforderungs-URI: https://endpoints.office.com/endpoints/Worldwide?ServiceAreas=Exchange&ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

In diesem Beispiel werden nur Endpunkte für die Instanz von Office 365 weltweit für Exchange Online und Abhängigkeiten abgerufen.

Die Ausgabe, z. B. 2, ähnelt Beispiel 1, mit der Ausnahme, dass die Ergebnisse keine Endpunkte für SharePoint Online oder Skype for Business Online enthalten würden.

Änderungswebmethode

Die Änderungswebmethode gibt die neuesten Updates zurück, die veröffentlicht wurden, typischerweise die Änderungen des vorherigen Monats an IP-Adressbereichen und URLs.

Die wichtigsten Änderungen an Endpunktdaten sind neue URLs und IP-Adressen. Wenn eine IP-Adresse nicht zu einer Firewall-Zugriffssteuerungsliste oder eine URL nicht zu einer Proxyserver-Umgehungsliste hinzugefügt wird, kann dies zu einem Ausfall für Benutzer von Office 365 auf diesem Netzwerkgerät führen. Ungeachtet betrieblicher Anforderungen werden neue Endpunkte 30 Tage vor dem Datum, an dem die Endpunkte bereitgestellt werden, im Webdienst veröffentlicht, um Ihnen Zeit zum Aktualisieren von Zugriffssteuerungs- und Proxyserver-Umgehungslisten zu lassen.

Die nötigen Parameter für die Änderungswebmethode sind:

  • Version=< JJJJMMDDN –> Erforderlicher URL-Routenparameter. Dieser Wert steht für die Version, die derzeit implementiert ist. Der Webdienst wird die Änderungen seit dieser Version zurückgeben. Das Format ist JJJJMMTTNN, wobei NN eine natürliche Zahl ist, die erhöht wird, falls mehrere Versionen am gleichen Tag herausgegeben werden müssen. Dabei steht 00 für das erste Update an einen bestimmten Tag. Der Webdienst erfordert, dass der Versions-Parameter genau 10 Ziffern enthält.

Für die Änderungswebmethode sind die Gebühren auf dieselbe Art und Weise beschränkt wie bei der Endpunktwebmethode. Wenn Sie einen 429-HTTP-Antwortcode erhalten, warten Sie eine Stunde, bevor Sie Ihre Anforderung wiederholen, oder generieren Sie eine neue GUID für sie.

Das Ergebnis der Änderungswebmethode ist ein Array aus Datensätzen, in dem jeder Datensatz eine Änderung in einer bestimmten Version der Endpunkte darstellt. Die Elemente für jeden Datensatz sind:

  • id – die unveränderliche ID des Änderungsdatensatzes.
  • endpointSetId – die ID des Endpunktsatz-Datensatzes, der geändert wird.
  • disposition – beschreibt, was die Änderung am Endpunktsatz-Datensatz bewirkt hat. Die Werte sind change, add oder remove.
  • impact – nicht alle Änderungen sind für jede Umgebung gleichermaßen wichtig. Dieses Element beschreibt die erwartete Wirkung auf die Umgebung eines Unternehmensnetzwerkumkreises infolge dieser Änderung. Dieses Element wird nur in Änderungsdatensätze der Version 2018112800 und höher einbezogen. Die Optionen für die Wirkung sind: AddedIp – eine IP-Adresse wurde zu Office 365 hinzugefügt und ist in Kürze im Dienst online. Dies stellt eine Änderung dar, die Sie an einer Firewall oder einem anderem Netzwerkumkreisgerät der Schicht 3 vornehmen müssen. Wenn Sie dies nicht hinzufügen, bevor wir mit der Verwendung beginnen, kann es zu einem Ausfall kommen. – AddedUrl – ein URL wurde Office 365 hinzugefügt und ist in Kürze im Dienst live. Dies stellt eine Änderung dar, die Sie auf einem Netzwerkumkreisgerät für die Proxyserver- oder URL-Analyse vornehmen müssen. Wenn Sie diese URL nicht hinzufügen, bevor wir mit der Verwendung beginnen, kann es zu einem Ausfall kommen. – AddedIpAndUrl – Sowohl eine IP-Adresse als auch ein URL wurden hinzugefügt. Dies stellt eine Änderung dar, die Sie entweder auf einem Firewall-Gerät der Schicht 3 oder einem Gerät zur Proxyserver- oder URL-Analyse vornehmen müssen. Wenn Sie dieses IP/URL-Paar nicht hinzufügen, bevor wir es verwenden, kann es zu einem Ausfall kommen. – RemovedIpOrUrl: Mindestens eine IP-Adresse oder URL wurde aus Office 365 entfernt. Entfernen Sie die Netzwerkendpunkte von Ihren Umkreisgeräten, aber dafür gibt es keine Frist. – ChangedIsExpressRoute: Das Supportattribut „Express Route“ wurde geändert. Wenn Sie ExpressRoute verwenden, müssen Sie möglicherweise je nach Konfiguration Maßnahmen ergreifen. – MovedIpOrUrl: Eine IP-Adresse oder URL wurde zwischen diesem Endpunktsatz und einem anderen verschoben. Im Allgemeinen ist keine Aktion erforderlich. – RemovedDuplicateIpOrUrl – Wir haben eine doppelte IP-Adresse oder URL entfernt, aber sie wird immer noch für Office 365 veröffentlicht. Im Allgemeinen ist keine Aktion erforderlich. – OtherNonPriorityChanges: Es wurde etwas weniger wichtiges als alle anderen Optionen geändert, z. B. die Inhalte eines Notizfelds.
  • version – die Version des veröffentlichten Endpunktsatzes, in dem die Änderung eingeführt wurde. Versionsnummern besitzen das Format JJJJMMTTNN, wobei NN eine natürliche Zahl ist, die erhöht wird, falls mehrere Versionen am gleichen Tag herausgegeben werden sollen.
  • previous – eine Unterstruktur, die vorherige Werte von Änderungselementen im Endpunktsatz angibt. Dies ist bei neu hinzugefügten Endpunktsätzen nicht enthalten. Umfasst ExpressRoute, serviceArea, category, required, tcpPorts, udpPorts und notes.
  • current – eine Unterstruktur, die aktualisierte Werte von Änderungselementen im Endpunktsatz angibt. Umfasst ExpressRoute, serviceArea, category, required, tcpPorts, udpPorts und notes.
  • add – eine Unterstruktur, die Elemente angibt, die zu Endpunktsatzsammlungen hinzugefügt werden sollen. Wird weggelassen, wenn es keine Ergänzungen gibt. – effectiveDate – definiert das Datum, wann die Ergänzungen live im Dienst sind. – ips – Elemente, die dem Array ips hinzugefügt werden sollen. – urls: Elemente, die zum Array urls hinzugefügt werden sollen.
  • remove – eine Unterstruktur, die aus dem Endpunktsatz zu entfernende Elemente angibt. Wird weggelassen, wenn es keine Entfernungen gibt. – ips – Elemente, die aus dem Array ips entfernt werden sollen. – urls: Elemente, die aus dem Array urls entfernt werden sollen.

Beispiele für die Änderungswebmethode

Beispiel 1 – Anforderungs-URI: https://endpoints.office.com/changes/worldwide/0000000000?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Dadurch werden alle vorherigen Änderungen an der Office 365 weltweiten Dienstinstanz angefordert. Beispielergebnis:

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

Beispiel 2 – Anforderungs-URI: https://endpoints.office.com/changes/worldwide/2018062700?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Dadurch werden Änderungen seit der angegebenen Version an die Office 365 Worldwide-Instanz angefordert. In diesem Fall ist die angegebene Version die neueste. Beispielergebnis:

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

Beispiel für PowerShell-Skript

Sie können dieses PowerShell-Skript ausführen, um festzustellen, ob es Aktionen gibt, die Sie für aktualisierte Daten setzen müssen. Sie können dieses Skript als geplante Aufgabe ausführen, um nach einer Versionsaktualisierung zu suchen. Um zu vermeiden, dass der Webdienst überlastet ist, versuchen Sie, das Skript nicht mehr als einmal pro Stunde auszuführen.

Dieses Skript führt folgende Aktionen aus:

  • Überprüfen der Versionsnummer der aktuellen Office 365 weltweit-Instanzendpunkte durch Aufrufen der Webdienst-REST-API.

  • Suchen nach einer aktuellen Versionsdatei unter $Env:TEMP\O365_endpoints_latestversion.txt. Der Pfad der globalen Variablen $Env:TEMP lautet normalerweise C:\Users\<username>\AppData\Local\Temp.

  • Wenn dies das erste Mal ist, dass das Skript ausgeführt wurde, gibt es die aktuelle Version sowie alle aktuellen IP-Adressen und URLs zurück, schreibt die Endpunkt-Version in die Datei $Env:TEMP\O365_endpoints_latestversion.txt und die Endpunkt-Datenausgabe in die Datei $Env:TEMP\O365_endpoints_data.txt. Sie können den Pfad und/oder den Namen der Ausgabedatei ändern, indem Sie die folgenden Zeilen bearbeiten:

    $versionpath = $Env:TEMP + "\O365_endpoints_latestversion.txt"
    $datapath = $Env:TEMP + "\O365_endpoints_data.txt"
    
  • Wenn die neueste Webdienst-Version bei jeder nachfolgenden Ausführung des Skripts mit der Version in der Datei O365_endpoints_latestversion.txt identisch ist, wird das Skript beendet, ohne Änderungen vorzunehmen.

  • Wenn die neueste Webdienst-Version neuer als die Version in der Datei O365_endpoints_latestversion.txt ist, gibt das Skript die Endpunkte und Filter für die Endpunkte der Kategorien Allow und Optimize zurück, aktualisiert die Version in der Datei O365_endpoints_latestversion.txt und schreibt die aktualisierten Daten in die Datei O365_endpoints_data.txt.

Das Skript generiert eine eindeutige ClientRequestId für den Computer, auf dem es ausgeführt wird, und verwendet diese ID über mehrere Aufrufe hinweg. Diese ID wird in der Datei O365_endpoints_latestversion.txt gespeichert.

Ausführen des PowerShell-Skripts

  1. Kopieren Sie das Skript, und speichern Sie es auf der Festplatte oder am Speicherort des Skripts als Get-O365WebServiceUpdates.ps1.

  2. Führen Sie das Skript in Ihrem bevorzugten Skript-Editor, z. B. PowerShell ISE oder VS Code, oder auf einer PowerShell-Konsole mithilfe des folgenden Befehls aus:

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

    Es gibt keine Parameter, die an das Skript weiterzugeben sind.

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

DESCRIPTION
This script calls the REST API of the Office 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 Office 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 "Office 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 "Office 365 worldwide commercial service instance endpoints are up-to-date."
}

Python-Beispielskript

Im Folgenden finden Sie ein Python-Skript, das mit Python 3.6.3 auf Windows 10 getestet wurde, das Sie ausführen können, um festzustellen, ob Maßnahmen für aktualisierte Daten notwendig sind. Dieses Skript überprüft die Versionsnummer für die Office 365 weltweit Instanz-Endpunkte. Wenn eine Änderung vorhanden ist, lädt es die Endpunkte und Filter für die Endpunkte der Kategorie Zulassen und Optimieren herunter. Es verwendet auch eine eindeutige ClientRequestId für mehrere Aufrufe und speichert die neueste Version in einer temporären Datei. Rufen Sie dieses Skript einmal pro Stunde auf, um auf eine Versionsaktualisierung zu prüfen.

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 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', '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('Office 365 worldwide commercial service instance endpoints are up-to-date')

Versionsverwaltung der Webdienstschnittstelle

Möglicherweise sind Updates für die Parameter oder Ergebnisse für diese Webdienstmethoden zukünftig erforderlich. Nach der Veröffentlichung der allgemein verfügbaren Version dieser Webdienste wird Microsoft angemessene Anstrengungen unternehmen, um die Aktualisierung des Webdiensts im Voraus anzukündigen. Wenn Microsoft der Auffassung ist, dass für ein Update Änderungen an Clients nötig sind, die den Webdienst verwenden, wird Microsoft die vorherige Version (um eine Version älter) des Webdienstes für mindestens 12 Monate nach der Veröffentlichung der neuen Version verfügbar halten. Kunden, die während dieses Zeitraums kein Upgrade durchführen, können möglicherweise nicht auf den Webdienst und seine Methoden zugreifen. Kunden müssen sicherstellen, dass die Clients des Webdiensts fehlerfrei weiterarbeiten, wenn die folgenden Änderungen an der Signatur der Webdienstschnittstelle vorgenommen werden:

  • Hinzufügen eines neuen optionalen Parameters zu einer vorhandenen Webmethode, die nicht notwendigerweise von älteren Clients bereitgestellt werden muss und das Ergebnis nicht beeinträchtigt, das ein älterer Client erhält.
  • Hinzufügen eines neuen benannten Attributs zu einem der REST-Antwortelemente oder zu anderen Spalten zur Antwort-CSV.
  • Hinzufügen einer neuen Webmethode unter einem neuen Namen, die nicht von älteren Clients aufgerufen wird.

Updatebenachrichtigungen

Sie können einige unterschiedliche Methoden nutzen, um E-Mail-Benachrichtigungen zu erhalten, wenn Änderungen an den IP-Adressen und URLs im Webdienst veröffentlicht werden.

Exportieren einer Proxy-PAC-Datei

Get-PacFile ist ein PowerShell-Skript, das die neuesten Netzwerkendpunkte aus dem IP-Adress- und URL-Webdienst von Office 365 liest und eine PAC-Beispieldatei erstellt. Informationen zur Verwendung von Get-PacFile finden Sie unter Verwenden einer PAC-Datei für das direkte Routing wichtiger Microsoft 365-Datenverkehr.

URLs und IP-Adressbereiche für Office 365

Verwalten von Office 365-Endpunkten

Häufig gestellte Fragen zu Office 365-Endpunkten

Prinzipien von Office 365-Netzwerkverbindungen

Office 365-Netzwerk- und Leistungsoptimierung

Bewerten der Office 365-Netzwerkkonnektivität

Medienqualität und Netzwerkverbindungsleistung in Skype for Business Online

Optimieren Ihres Netzwerks für Skype for Business Online

Office 365-Leistungsoptimierung mit Basisplänen und Leistungsverlauf

Plan zur Problembehandlung für Office 365