Compartir vía


Servicio web de dirección IP y dirección URL de Microsoft 365

El servicio web dirección IP y dirección URL de Microsoft 365 le ayuda a identificar y diferenciar mejor el tráfico de red de Microsoft 365, lo que le facilita evaluar, configurar y mantenerse al día con los cambios. Este servicio web basado en REST reemplaza los archivos XML anteriores descargables, que se han retirado el 2 de octubre de 2018.

Como cliente o proveedor de dispositivos perimetrales de red, puede compilar en el servicio web para las entradas de DIRECCIÓN IP y FQDN de Microsoft 365. Puede obtener acceso a los datos directamente en un explorador web con estas direcciones URL:

Como cliente, puede usar este servicio web para:

  • Actualice los scripts de PowerShell para obtener datos de punto de conexión de Microsoft 365 y modificar cualquier formato para los dispositivos de red.
  • Usar esta información para actualizar los archivos PAC implementados en los equipos cliente.

Como proveedor de dispositivos de red perimetral, puede usar este servicio web para:

  • Crear y probar software de dispositivos para descargar la lista de configuración automatizada.
  • Comprobar la versión actual.
  • Obtener los cambios actuales.

Nota:

Si usa Azure ExpressRoute para conectarse a Microsoft 365, revise Azure ExpressRoute para Microsoft 365 para familiarizarse con los servicios de Microsoft 365 compatibles con Azure ExpressRoute. Revise también el artículo Direcciones URL y intervalos de direcciones IP de Microsoft 365 para comprender qué solicitudes de red para aplicaciones de Microsoft 365 requieren conectividad a Internet. Esto le ayudará a configurar mejor los dispositivos de seguridad de perimetral.

Para obtener más información, vea:

Parámetros comunes

Estos parámetros son comunes a todos los métodos de servicio web:

  • format=<JSON | CSV> : de forma predeterminada, el formato de datos devuelto es JSON. Use este parámetro opcional para devolver los datos en formato de valores separados por comas (CSV).

  • ClientRequestId=<guid> : GUID necesario que se genera para la asociación de clientes. Genere un GUID único para cada equipo que llama al servicio web (los scripts que se incluyen en esta página generan un GUID por usted). No use los GUID que se muestran en los ejemplos siguientes porque podrían estar bloqueados por el servicio web en el futuro. El formato GUID es xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, donde x representa un número hexadecimal.

    Para generar un GUID, puede usar el comando de PowerShell New-GUID o usar un servicio en línea como el Generador GUID en línea.

Método web de versión

Microsoft actualiza la dirección IP de Microsoft 365 y las entradas de FQDN al principio de cada mes. En ocasiones, las actualizaciones fuera de banda se publican debido a incidencias de soporte técnico, actualizaciones de seguridad u otros requisitos operativos.

A los datos de cada instancia publicada se les asigna un número de versión y el método web de versión le permite comprobar la versión más reciente de cada instancia de servicio de Microsoft 365. Le recomendamos que compruebe la versión no más de una vez cada hora.

Los parámetros del método web de versión son:

  • AllVersions=<true | false> — De forma predeterminada, la versión devuelta es la más reciente. Incluya este parámetro opcional para solicitar todas las versiones publicadas desde la primera publicación del servicio web.
  • Format=<JSON | CSV | RSS> : además de los formatos JSON y CSV, el método web de versión también admite RSS. Puede usar este parámetro opcional con el parámetro AllVersions=true para solicitar una fuente RSS que pueda usarse con Outlook u otros lectores de RSS.
  • Instance=<En todo el mundo | China | USGovDoD | USGovGCCHigh> : este parámetro opcional especifica la instancia para la que se va a devolver la versión. Si se omite, se devuelven todas las instancias. Las instancias válidas son: Worldwide, China, USGovDoD, USGovGCCHigh.

El método web de versión no tiene una tasa limitada y nunca devuelve códigos de respuesta HTTP 429. La respuesta al método web de versión incluye un encabezado Cache-Control que recomienda almacenar los datos durante 1 hora. El resultado del método web de versión puede ser un registro único o una matriz de registros. Los elementos de cada registro son:

  • instance: nombre corto de la instancia de servicio de Microsoft 365.
  • latest: la versión más reciente de los puntos de conexión de la instancia especificada.
  • versions: una lista de todas las versiones anteriores de la instancia especificada. Este elemento solo se incluye si el parámetro AllVersions es verdadero.

Ejemplos de método web de versión

Ejemplo 1 de URI de solicitud: https://endpoints.office.com/version?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Este URI devuelve la versión más reciente de cada instancia de servicio de Microsoft 365. Resultado de ejemplo:

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

Importante

El GUID del parámetro ClientRequestID en estos URI es solo un ejemplo. Para probar los URI del servicio web, genere su propio GUID. El servicio web puede bloquear los GUID que se muestran en estos ejemplos en el futuro.

Ejemplo 2 de URI de solicitud: https://endpoints.office.com/version/Worldwide?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Este URI devuelve la versión más reciente de la instancia de servicio de Microsoft 365 especificada. Resultado de ejemplo:

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

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

Este URI muestra la salida en formato CSV. Resultado de ejemplo:

instance,latest
Worldwide,2018063000

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

Este URI muestra todas las versiones anteriores que se han publicado para la instancia de servicio mundial de Microsoft 365. Resultado de ejemplo:

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

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

Este URI muestra una fuente RSS de las versiones publicadas que incluyen vínculos a la lista de cambios de cada versión. Resultado de ejemplo:

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

Método web de puntos de conexión

El método web endpoints devuelve todos los registros de intervalos de direcciones IP y direcciones URL que componen el servicio Microsoft 365. Los datos más recientes del método web de los puntos de conexión se deben usar siempre para la configuración del dispositivo de red. Microsoft avisa con 30 días de antelación de publicar nuevas adiciones, para darle tiempo de actualizar las listas de control de acceso y las listas de omisión del servidor proxy. Recomendamos llamar de nuevo al método web de puntos de conexión solo cuando la versión del método web indica que hay disponible una nueva versión de los datos.

Los parámetros del método web de puntos de conexión son:

  • ServiceAreas=<Común | Exchange | SharePoint | >Skype —Una lista separada por comas de áreas de servicio. Los elementos válidos son Common, Exchange, SharePoint y Skype. Como los elementos del área de servicio Common son un requisito previo de todas las demás áreas de servicio, el servicio web siempre los incluye. Si no incluye este parámetro, se devuelven todas las áreas de servicio.
  • TenantName=<tenant_name> : nombre del inquilino de Microsoft 365. El servicio web toma el nombre que usted proporciona y lo inserta en las partes de URL que incluyen el nombre de inquilino. Si no proporciona un nombre de inquilino, esas partes de direcciones URL tienen el carácter comodín (*).
  • NoIPv6=<true | false> —Establezca el valor en true para excluir las direcciones IPv6 de la salida si no usa IPv6 en la red.
  • Instance=<En todo el mundo | China | USGovDoD | USGovGCCHigh> : este parámetro obligatorio especifica la instancia desde la que se van a devolver los puntos de conexión. Las instancias válidas son: Worldwide, China, USGovDoD y USGovGCCHigh.

Si llama al método web de puntos de conexión demasiadas veces desde la misma dirección IP de cliente, es posible que reciba el código de respuesta HTTP 429 (Demasiadas solicitudes). Si recibe este código de respuesta, espere 1 hora antes de repetir la solicitud o genere un nuevo GUID. Como recomendación general, solo debe llamar al método web de puntos de conexión cuando el método web de versión indica que hay una nueva versión disponible.

El resultado del método web de puntos de conexión es una matriz de registros en la que cada registro representa un conjunto específico de puntos de conexión. Los elementos de cada registro son:

  • id: el número de identificador inmutable del conjunto de puntos de conexión.
  • serviceArea: el área de servicio que forma parte de: Common, Exchange, SharePoint o Skype.
  • urls: las direcciones URL del conjunto de puntos de conexión. Una matriz JSON de registros DNS. Se omite si está en blanco.
  • tcpPorts: los puertos TCP para el conjunto de puntos de conexión. El formato de todos los elementos de los puertos es una lista separada por coma de puertos o intervalos de puertos separados por un carácter de guión (-). Los puertos se aplican a todas las direcciones IP y URL en el conjunto de puntos de conexión de una categoría determinada. Se omite si está en blanco.
  • udpPorts: los puertos UDP para los intervalos de direcciones IP en el conjunto de puntos de conexión. Se omite si está en blanco.
  • ips: los intervalos de direcciones IP asociados al punto de conexión, a su vez, asociado a los puertos TCP o UDP enumerados. Una matriz JSON de intervalos de direcciones IP. Se omite si está en blanco.
  • category: la categoría de conectividad para el conjunto de puntos de conexión. Los valores válidos son Optimize, Allow y Default. Si busca en la salida del método web de puntos de conexión la categoría de una dirección IP o dirección URL específica, es posible que la consulta devuelva varias categorías. En ese caso, siga la recomendación de la categoría de prioridad más alta. Por ejemplo, si el punto de conexión se muestra tanto en Optimize como en Allow, debe seguir los requisitos de Optimize. Obligatorio.
  • expressRoute: True si este conjunto de puntos de conexión se enruta a través de ExpressRoute; False en caso contrario.
  • obligatorio: true si este conjunto de puntos de conexión es necesario para que se admita la conectividad de Microsoft 365. False si este conjunto de puntos de conexión es opcional.
  • notas: en el caso de los puntos de conexión opcionales, este texto describe la funcionalidad de Microsoft 365 que no estaría disponible si no se puede acceder a direcciones IP o direcciones URL de este conjunto de puntos de conexión en la capa de red. Se omite si está en blanco.

Ejemplos de método web de puntos de conexión

Ejemplo 1 de URI de solicitud: https://endpoints.office.com/endpoints/Worldwide?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Este URI obtiene todos los puntos de conexión de la instancia mundial de Microsoft 365 para todas las cargas de trabajo. Ejemplo de resultado en el que se muestra un extracto del resultado:

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

El resultado completo de la solicitud en este ejemplo contendrá otros conjuntos de puntos de conexión.

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

En este ejemplo se obtienen puntos de conexión para la instancia de Microsoft 365 Worldwide solo para Exchange Online y las dependencias.

La salida, por ejemplo, 2 es similar al ejemplo 1, salvo que los resultados no incluirían puntos de conexión para SharePoint o Skype para Business Online.

Método web de cambios

El método web de cambios devuelve las actualizaciones más recientes que se han publicado y, por lo general, los cambios en los intervalos de direcciones IP y URL del mes anterior.

Los cambios a datos de los puntos de conexión más críticos son las direcciones IP y URL nuevas. Si no se agrega una dirección IP a una lista de control de acceso de firewall o una dirección URL a una lista de omisión del servidor proxy, se puede producir una interrupción para los usuarios de Microsoft 365 detrás de ese dispositivo de red. Independientemente de los requisitos operativos, los nuevos puntos de conexión se publican en el servicio web 30 días antes de la fecha en la que se aprovisionan los puntos de conexión, para darle tiempo de actualizar las listas de control de acceso y las listas de omisión del servidor proxy.

El parámetro obligatorio del método web de cambios es:

  • Version=<AAAAMMDDNN> : parámetro de ruta url requerida. Este valor es la versión que ha implementado actualmente. El servicio web devolverá los cambios desde esa versión. El formato es AAAAMMDDNN, donde NN es un número natural incrementado si hay varias versiones que deben publicarse en un solo día, con 00 representando la primera actualización para un día determinado. El servicio web requiere que el parámetro versión contenga exactamente 10 dígitos.

El método de web de cambios tiene una tasa limitada al igual que el método web de puntos de conexión. Si recibe un código de respuesta HTTP 429, espere 1 hora antes de repetir la solicitud o genere un nuevo GUID.

El resultado del método web de cambios es una matriz de registros en la que cada uno representa un cambio de una versión específica de los puntos de conexión. Los elementos de cada registro son:

  • id: el identificador inmutable del registro de cambios.
  • endpointSetId: el identificador del registro del conjunto de puntos de conexión que se ha modificado.
  • disposition: describe el resultado del cambio en el registro de conjuntos de puntos de conexión. Los valores change, add oremove.
  • impact: no todos los cambios tendrán la misma importancia para todos los entornos. Este elemento describe el impacto previsto en un entorno perimetral de red de empresa como resultado de este cambio. Este elemento solo se incluye en los registros de cambio de la versión 2018112800 y posteriores. Las opciones para el impacto son:
    • AddedIp: se agregó una dirección IP a Microsoft 365 y pronto estará activa en el servicio. Este es un cambio que debe realizar en un firewall u otro dispositivo de red perimetral de nivel 3. Si no agrega esto antes de empezar a usarlo, puede experimentar una interrupción.
    • AddedUrl: se agregó una dirección URL a Microsoft 365 y estará activa en el servicio pronto. Esto representa un cambio que debe realizar en un servidor proxy u otro dispositivo de red perimetral de análisis de URL. Si no agrega esta dirección URL antes de empezar a usarla, puede experimentar una interrupción.
    • AddedIpAndUrl: se agregaron una dirección IP y una dirección URL. Este es un cambio que necesita llevar a cabo en un dispositivo de nivel 3 de firewall, en un servidor proxy o un dispositivo de análisis de URL. Si no agrega este par ip/dirección URL antes de empezar a usarlo, puede experimentar una interrupción.
    • AddedSubstituteUrl: ahora se publica un FQDN que no se publicó anteriormente debido a un carácter comodín porque se quitó la dirección URL del carácter comodín. Este cambio es efectivo inmediatamente.
    • RemovedIpOrUrl: se quitó al menos una dirección IP o dirección URL de Microsoft 365. Quite los puntos de conexión de red de los dispositivos perimetrales, pero no hay ninguna fecha límite para hacerlo.
    • ChangedIsExpressRoute: se cambió el atributo de compatibilidad de ExpressRoute. Si usa ExpressRoute, es posible que deba realizar una acción en función de la configuración.
    • MovedIpOrUrl: hemos movido una dirección IP o una dirección URL entre este conjunto de puntos de conexión y otro. Por lo general, no es necesario realizar ninguna acción.
    • RemovedDuplicateIpOrUrl: hemos quitado una dirección IP o una dirección URL duplicadas, pero todavía está publicada para Microsoft 365. Por lo general, no es necesario realizar ninguna acción.
    • OtherNonPriorityChanges: hemos cambiado algo menos crítico que todas las demás opciones, como el contenido de un campo de nota.
  • version: la versión del conjunto de puntos de conexión publicado en la que se ha hecho el cambio. Los números de versión tienen el formato YYYYMMDDNN, donde NN es un número natural incrementado si hay varias versiones que deben publicarse en un solo día.
  • previous: una subestructura en la que se detallan los valores anteriores de los elementos que se modificaron en el conjunto de puntos de conexión. Esto no se incluirá en los conjuntos de puntos de conexión recién agregados. Incluye ExpressRoute, serviceArea, category,, required, tcpPorts, udpPorts y notes.
  • current: una subestructura en la que se detallan los valores actualizados de los elementos de los cambios en el conjunto de puntos de conexión. Incluye ExpressRoute, serviceArea, category,, required, tcpPorts, udpPorts y notes.
  • add: una subestructura en la que se detallan los elementos que se agregarán a colecciones de conjuntos de puntos de conexión. Se omite si no hay adiciones. effectiveDate: define la fecha en que las adiciones estarán disponibles en el servicio. ips: los elementos que se agregarán a la matriz ips. urls: los elementos que se agregarán a la matriz urls.
  • remove: una subestructura en la que se detallan los elementos que se eliminarán del conjunto de puntos de conexión. Se omite si no hay eliminaciones. ips: los elementos que se eliminarán de la matriz ips. urls: los elementos que se eliminarán de la matriz urls.

Ejemplos de método web de cambios

Ejemplo 1 de URI de solicitud: https://endpoints.office.com/changes/worldwide/0000000000?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Esto solicita todos los cambios anteriores a la instancia de servicio mundial de Microsoft 365. Resultado de ejemplo:

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

Ejemplo 2 de URI de solicitud: https://endpoints.office.com/changes/worldwide/2018062700?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Esto solicita cambios desde la versión especificada a la instancia de Microsoft 365 Worldwide. En este caso, la versión especificada es la más reciente. Resultado de ejemplo:

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

Ejemplo de script de PowerShell

Este es un script de PowerShell que puede ejecutar para ver si hay acciones que debe realizar para los datos actualizados. Puede ejecutar este script como tarea programada para comprobar si hay una actualización de la versión. Para evitar una carga excesiva en el servicio web, intente no ejecutar el script más de una vez cada hora.

Este script hace lo siguiente:

  • Comprueba el número de versión de los puntos de conexión de instancia de Microsoft 365 Worldwide actuales llamando a la API REST del servicio web.

  • Comprueba si hay un archivo de versión actual en $env:TEMP\O365_endpoints_latestversion.txt. La ruta de acceso de la variable global $Env:TEMP suele ser C:\Users\<username>\AppData\Local\Temp.

  • Si esta es la primera vez que se ejecuta el script, este devuelve la versión actual y todas las direcciones IP y URL actuales, escribe la versión de los puntos de conexión en el archivo $env:TEMP\O365_endpoints_latestversion.txt y el resultado de los datos de los puntos de conexión en el archivo $env:TEMP\O365_endpoints_data.txt. Puede modificar la ruta de acceso y/o el nombre del archivo de salida editando las líneas siguientes:

    $versionpath = $Env:TEMP + "\O365_endpoints_latestversion.txt"
    $datapath = $Env:TEMP + "\O365_endpoints_data.txt"
    
  • En cada ejecución subsiguiente del script, si la versión más reciente del servicio web es la misma que la versión del archivo O365_endpoints_latestversion.txt, el script saldrá sin realizar cambios.

  • Si la versión más reciente del servicio web es más reciente que la versión del archivo O365_endpoints_latestversion.txt, el script devuelve los puntos de conexión y los filtros de los puntos de conexión de las categorías Allow y Optimize, actualiza la versión en el archivo O365_endpoints_latestversion.txt y escribe los datos actualizados en el archivo O365_endpoints_data.txt.

El script genera un ClientRequestId único para el equipo en el que se ejecuta y reutiliza este identificador en varias llamadas. Este ID se almacena en el archivo O365_endpoints_latestversion.txt.

Ejecución del script de PowerShell

  1. Copie el script y guárdelo en su unidad de disco duro local o en la ubicación de scripts como Get-O365WebServiceUpdates.ps1.

  2. Ejecute el script en el editor de scripts que prefiera, como PowerShell ISE o VS Code, o desde una consola de PowerShell con el comando siguiente:

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

    No hay ningún parámetro para pasar al script.

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

Ejemplo de script de Python

Este es un script de Python, probado con Python 3.6.3 en Windows 10, que puede ejecutar para ver si hay acciones que necesita realizar para los datos actualizados. Este script comprueba el número de versión de los puntos de conexión de instancia de Microsoft 365 Worldwide. Cuando se produce un cambio, descarga los puntos de conexión y los filtros de los puntos de conexión de la categoría Permitir y Optimizar . También usa un único ClientRequestId en múltiples llamadas y guarda la versión más reciente que se encuentra en un archivo temporal. Llama a este script una vez por hora para comprobar si hay una actualización de versión.

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

Control de versiones de la interfaz de servicio web

En el futuro, es posible que se necesiten actualizaciones de los parámetros o resultados de estos métodos de servicio web. Después de que se publique la versión de disponibilidad general de estos servicios web, Microsoft hará lo posible para avisar con antelación sobre actualizaciones de material en el servicio web. Cuando Microsoft cree que una actualización necesitará realizar cambios en los clientes que usan el servicio web, mantendrá la versión previa (una versión anterior) del servicio web disponible durante al menos 12 meses después de la publicación de la nueva versión. Es posible que los clientes que no actualicen durante ese tiempo no puedan acceder al servicio web y a sus métodos. Los clientes deben asegurarse de que los clientes del servicio web sigan funcionando sin errores si se llevan a cabo los siguientes cambios en la firma de la interfaz de servicio web:

  • Agregar un nuevo parámetro opcional a un método web existente que no tenga que facilitarse mediante clientes antiguos y que no afecte al resultado que recibe un cliente anterior.
  • Agregar un nuevo atributo con nombre en uno de los elementos REST de respuesta u otras columnas al CSV de respuesta.
  • Agregar un nuevo método web con un nuevo nombre al que no llaman los clientes anteriores.

Notificaciones de actualización

Puede usar algunos métodos diferentes para recibir notificaciones de correo electrónico cuando se publiquen cambios en las direcciones IP y URL en el servicio web.

Exportar un archivo proxy PAC

Get-PacFile es un script de PowerShell que lee los puntos de conexión de red más recientes del servicio web dirección IP y dirección URL de Microsoft 365 y crea un archivo PAC de ejemplo. Para obtener información sobre el uso de Get-PacFile, consulte Uso de un archivo PAC para el enrutamiento directo del tráfico vital de Microsoft 365.

Intervalos de direcciones IP y URL de Microsoft 365

Administración de puntos de conexión de Microsoft 365

Principios de conectividad de red de Microsoft 365

Optimización de rendimiento y red de Microsoft 365

Evaluar la conectividad de red de Microsoft 365

Calidad de medios y rendimiento de conectividad de red en Skype Empresarial Online

Optimización de la red para Skype Empresarial Online

Optimización del rendimiento de Microsoft 365 mediante líneas base e historial de rendimiento

Plan de solución de problemas de rendimiento para Microsoft 365