Microsoft 365のURL・IPアドレス一覧を確認・取得する方法

Powershell Powershell
この記事は約18分で読めます。

Microsoft 365では、Exchange Online、SharePoint Online、Teamsなどのサービスを利用するために、さまざまなURLやIPアドレスへの通信が発生します。

ファイアウォールやプロキシなどを利用している場合、通信先を制限している場合があるため、Microsoft 365で使用されるURLやIPアドレスを確認する必要があります。

Microsoftでは、Microsoft 365で利用されるURLやIPアドレスの情報を公開しています。

Microsoft 365 の URL と IP アドレスの範囲 - Microsoft 365 Enterprise
概要: Microsoft 365 にはインターネットへの接続が必要です。 この記事のエンドポイントは、Government Community Cloud (GCC) を含む Microsoft 365 プランを使用しているお客様には到達...

また、これらのURLやIPアドレス範囲の情報は以下の公式ドキュメント内でJSONファイルで公開されていますが、約1か月ごとに更新されることで知られています。

この記事では、Microsoft 365のURL・IPアドレス情報を確認する方法と、PowerShellを使って取得する方法を紹介します。

広告

1.Microsoft 365のURL・IPアドレス一覧を確認する方法

1-1. URLやIPアドレス範囲が掲載されている場所

上記、Microsoft公式ドキュメントのリンク先ページ内の「JSON形式」というリンクの先にJSON形式で情報が公開されています。

URLやIPの確認という意味ではこのページを確認すればよいのですが、Powershellを活用すると必要なサービスのURL/IPをピンポイントで確認ができるのでPowershellを利用して情報を取り出してみます。

「JSON形式」をクリックした後に開かれるページ

また、「JSON形式」をクリックした後に開かれるページは個別のURLになっており、今回はこのURLからpowershellで情報を取得していきます。

2.Microsoft 365のURL・IPアドレス情報をPowerShellで取得する

2-1. JSON形式のデータを取得する

Microsoft365のURL/IPアドレス範囲をPowershellで取得します。

$date = Get-Date -Format "yyyyMMdd"
$dir  = "C:\hogehoge"
$path = Join-Path $dir ("m365_" + $date + ".txt")

# ディレクトリが無ければ作成
if (-not (Test-Path $dir)) {
    New-Item -ItemType Directory -Path $dir | Out-Null
}

# 指定したディレクトリにMicrosoft365のURL/IPの情報をDL
Invoke-WebRequest "https://endpoints.office.com/endpoints/worldwide?clientrequestid=b10c5ed1-bad1-445f-b386-b919946339a7" -OutFile $path

2-1-1. コマンドの解説

1~3行目で、変数を定義します。

6行目以降で、指定したディレクトリがない場合にはディレクトリを作成します。

11行目で、[Invoke-WebRequest] を利用してURLを読み込み、その内容を [$path] に定義したファイルに書き込みます。

2-1-2. [参考] URLの変更も考慮したコマンド

更新履歴を見てみると、2022年からずっと同じURLが利用されているので問題はないかと思いますが、上記で紹介したURLが変更された場合にも対応できるように以下のコマンドも紹介しておきます。
 ※特にURL内の「clientrequestid」は変更の可能性がありそうと感じたためです。

$date = Get-Date -Format "yyyyMMdd"
$dir  = "C:\hogehoge"
$path = Join-Path $dir ("m365_" + $date + ".txt")

# ディレクトリが無ければ作成
if (-not (Test-Path $dir)) {
    New-Item -ItemType Directory -Path $dir | Out-Null
}

# JSON形式のURL/IP一覧のコンテンツのURLを確認してDL
$response =Invoke-WebRequest "https://docs.microsoft.com/ja-jp/microsoft-365/enterprise/urls-and-ip-address-ranges?view=o365-worldwide" -UseBasicParsing
$links = $response.Links | Where-Object {$_.href -like "*endpoints.office.com/endpoints/worldwide?clientrequestid*"} |Select-Object -ExpandProperty href
Invoke-WebRequest $links -OutFile $path

上記と異なる点だけ解説をしていきます。

  • 11行目で「Microsoft 365 の URL と IP アドレスの範囲」のページを読み込みます。
  • 12行目でその中にある「*endpoints.office.com/endpoints/worldwide?clientrequestid*」と一致するURLを取得します。
  • 13行目で、12行目で取得したURLの情報を取得しています。

しかし、このコマンドも「Microsoft 365 の URL と IP アドレスの範囲」のページ自体のURLが変わった場合には対応できなくなってしまうので、その部分は注意が必要です。

ただ、直接取得する URL が変わったときにはこういった手段もあるんだ という形で覚えておいてもらえればと思います。

2-2. 取得したJSONをPowerShellで読み込む

上記でJSON形式のテキストファイルに書き込んだので、次にそのファイルをPowershell で読み込みます。

$json = Get-Content $path | ConvertFrom-Json
$json

これで、ブラウザで確認した時と同じ内容がPowershell でも確認することができます。

また、Select-Object を利用して特定の項目だけを出力させることも可能です。

PS C:\> $json | Select-Object id, serviceArea, serviceAreaDisplayName

 id serviceArea serviceAreaDisplayName
 -- ----------- ----------------------
  1 Exchange    Exchange Online
  2 Exchange    Exchange Online
  8 Exchange    Exchange Online
  9 Exchange    Exchange Online
 10 Exchange    Exchange Online
 11 Skype       Microsoft Teams
 12 Skype       Microsoft Teams
 16 Skype       Microsoft Teams
 17 Skype       Microsoft Teams
 19 Skype       Microsoft Teams
 27 Skype       Microsoft Teams
 31 SharePoint  SharePoint Online and OneDrive for Business
 32 SharePoint  SharePoint Online and OneDrive for Business
 35 SharePoint  SharePoint Online and OneDrive for Business
 36 SharePoint  SharePoint Online and OneDrive for Business
 37 SharePoint  SharePoint Online and OneDrive for Business
 39 SharePoint  SharePoint Online and OneDrive for Business
 46 Common      Microsoft 365 Common and Office Online
 47 Common      Microsoft 365 Common and Office Online
 49 Common      Microsoft 365 Common and Office Online
 50 Common      Microsoft 365 Common and Office Online
 51 Common      Microsoft 365 Common and Office Online
 53 Common      Microsoft 365 Common and Office Online
 56 Common      Microsoft 365 Common and Office Online
 59 Common      Microsoft 365 Common and Office Online
 64 Common      Microsoft 365 Common and Office Online
 66 Common      Microsoft 365 Common and Office Online
 69 Common      Microsoft 365 Common and Office Online
 70 Common      Microsoft 365 Common and Office Online
 71 Common      Microsoft 365 Common and Office Online
 73 Common      Microsoft 365 Common and Office Online
 75 Common      Microsoft 365 Common and Office Online
 78 Common      Microsoft 365 Common and Office Online
 79 Common      Microsoft 365 Common and Office Online
 83 Common      Microsoft 365 Common and Office Online
 84 Common      Microsoft 365 Common and Office Online
 86 Common      Microsoft 365 Common and Office Online
 89 Common      Microsoft 365 Common and Office Online
 91 Common      Microsoft 365 Common and Office Online
 92 Common      Microsoft 365 Common and Office Online
 93 Common      Microsoft 365 Common and Office Online
 95 Common      Microsoft 365 Common and Office Online
 96 Common      Microsoft 365 Common and Office Online
 97 Common      Microsoft 365 Common and Office Online
114 Common      Microsoft 365 Common and Office Online
116 Common      Microsoft 365 Common and Office Online
117 Common      Microsoft 365 Common and Office Online
118 Common      Microsoft 365 Common and Office Online
121 Common      Microsoft 365 Common and Office Online
122 Common      Microsoft 365 Common and Office Online
124 Common      Microsoft 365 Common and Office Online
125 Common      Microsoft 365 Common and Office Online
126 Common      Microsoft 365 Common and Office Online
127 Skype       Microsoft Teams
147 Common      Microsoft 365 Common and Office Online
152 Common      Microsoft 365 Common and Office Online
153 Common      Microsoft 365 Common and Office Online
156 Common      Microsoft 365 Common and Office Online
158 Common      Microsoft 365 Common and Office Online
159 Common      Microsoft 365 Common and Office Online
160 Common      Microsoft 365 Common and Office Online
184 Common      Microsoft 365 Common and Office Online
193 Common      Microsoft 365 Common and Office Online

2-3. URLだけを取得する

以下でURLの情報だけ出力できます。

$json.urls

実行すると以下のようなURLの一覧が出力されます。

*.office.com
*.office365.com
*.microsoft.com

特定のサービスに関連するURLだけを確認したい場合は、serviceAreaidなどの情報を利用して絞り込むこともできます。

2-3. IPアドレスだけを取得する

同じようにIPアドレスの情報だけ出力することも可能です。

$json.ips

2-3-1.「80」「443」「80,443」に一致するIPを抜き出す

web系のポート(80、443、80と443)に関するIPのみを取得することも可能です。
ここではIPv4のみを出力します。

$json = Get-Content $path | ConvertFrom-Json
$url_web =  $json | where { $_.tcpPorts -eq "80" -or $_.tcpPorts -eq "443" -or $_.tcpPorts  -eq "80,443" }
$ipv4_web = @();
for ($j=0; $j -lt $url_web.ips.length; $j++){
    if( $url_web.ips[$j] -match "::" ){
        continue
    }
    $ipv4_web += $url_web.ips[$j]
}
$ipv4_web

・実行結果

PS C:\> $json = Get-Content $path | ConvertFrom-Json
PS C:\> $url_web =  $json | where { $_.tcpPorts -eq "80" -or $_.tcpPorts -eq "443" -or $_.tcpPorts  -eq "80,443" }
PS C:\> $ipv4_web = @();
PS C:\> for ($j=0; $j -lt $url_web.ips.length; $j++){
>>     if( $url_web.ips[$j] -match "::" ){
>>         continue
>>     }
>>     $ipv4_web += $url_web.ips[$j]
>> }
PS C:\> $ipv4_web
13.107.6.152/31
13.107.18.10/31
13.107.128.0/22
23.103.160.0/20
40.96.0.0/13
40.104.0.0/15
52.96.0.0/14
131.253.33.215/32
132.245.0.0/16
150.171.32.0/22
204.79.197.215/32
40.92.0.0/15
40.107.0.0/16
52.100.0.0/14
52.238.78.88/32
104.47.0.0/17
13.107.64.0/18
52.112.0.0/14
52.120.0.0/14
52.238.119.141/32
52.244.160.207/32
13.107.64.0/18
52.112.0.0/14
52.120.0.0/14
52.238.119.141/32
52.244.160.207/32
13.107.64.0/18
52.112.0.0/14
52.120.0.0/14
52.238.119.141/32
52.244.160.207/32
13.107.136.0/22
40.108.128.0/17
52.104.0.0/14
104.146.128.0/17
150.171.40.0/22
13.107.6.171/32
13.107.18.15/32
13.107.140.6/32
52.108.0.0/14
52.238.106.116/32
52.244.37.168/32
52.244.203.72/32
52.244.207.172/32
52.244.223.198/32
52.247.150.191/32
20.190.128.0/18
40.126.0.0/18
52.108.0.0/14
52.108.0.0/14
PS C:\>

2-3. IDごとの情報を取得する

Microsoft 365のURL・IPアドレス情報には、各エンドポイントを識別するためのidが設定されています。

取得したデータをそのまま表示すると情報量が多くなるため、id、サービス名、表示名などの必要な項目だけを指定して確認すると分かりやすくなります。

PS C:\> $json | Select-Object id, serviceArea, serviceAreaDisplayName

 id serviceArea serviceAreaDisplayName
 -- ----------- ----------------------
  1 Exchange    Exchange Online
  2 Exchange    Exchange Online
  8 Exchange    Exchange Online
  9 Exchange    Exchange Online
 10 Exchange    Exchange Online
 11 Skype       Microsoft Teams
 12 Skype       Microsoft Teams
   ・
   ・
   ・

idは、Microsoft 365のURL・IPアドレス情報がどのエンドポイントに属しているのかを識別するために利用できます。

例えば、特定のidの情報だけを確認したい場合は、Where-Objectを使用します。

PS C:\> $json | Where-Object {$_.id -eq 1}


id                     : 1
serviceArea            : Exchange
serviceAreaDisplayName : Exchange Online
urls                   : {outlook.cloud.microsoft, outlook.office.com, outlook.office365.com}
ips                    : {13.107.6.152/31, 13.107.18.10/31, 13.107.128.0/22, 23.103.160.0/20...}
tcpPorts               : 80,443
udpPorts               : 443
expressRoute           : True
category               : Optimize
required               : True

これによって、指定したidに該当するエンドポイントの情報を確認できます。

3.Microsoft 365のURL・IPアドレス情報は更新される

Microsoft 365のURL・IPアドレス情報は、一度取得したら終わりではありません。

Microsoft 365では新しいサービスの追加やサービス構成の変更などによって、必要なURLやIPアドレスが追加・変更・削除される場合があります。

上述した通り、だいたい約1か月ごとに更新されます。

そのため、ネットワーク機器の設定などでMicrosoft 365のURL・IPアドレスを利用している場合は、最新の情報を定期的に確認することが重要です。

例えば、過去に取得した情報と現在の情報を比較することで、

  • 新しく追加されたURL
  • 削除されたURL
  • 新しく追加されたIPアドレス
  • 削除されたIPアドレス
  • 変更されたエンドポイント

などを確認できます。

3-1. URL・IPアドレスの変更差分を確認する

Microsoft 365のURL・IPアドレスは更新されるため、単純に現在の一覧を確認するだけではなく、前回取得した情報から何が変更されたのかを確認したい場合があります。

例えば、以下の流れで確認できます。

前回取得した情報
        ↓
今回取得した情報
        ↓
比較
        ↓
追加されたURL/IP
削除されたURL/IP
変更されたエンドポイント

PowerShellのCompare-Objectなどを利用すると、前回取得したデータと今回取得したデータを比較できます。

特に、Microsoft 365の通信先をファイアウォールやプロキシなどで管理している場合、変更されたURLやIPアドレスだけを確認できると、設定変更が必要な箇所を把握しやすくなります。

実際にPowerShellを使って、Microsoft 365のURL・IPアドレスの追加・削除などの変更差分を確認する方法については、以下の記事で詳しく解説しています。

Microsoft365のURLやIPアドレスの更新差分を取得してみた
Microsoft365のURLやIPアドレス範囲は月に1度更新されることが知られていますが、その更新された箇所を差分としてPowerShellを利用して取得してみました。「更新されたこと」については、以下のリンク先の [変更ログのサブスクリプション] という部分から知ることができますが、具体的にどこが違うのかについては分からないので、PowerShellで簡単に表示できないか?と思ったのがきっかけです。

4.さいごに

Microsoft 365では、Exchange OnlineやSharePoint Online、Teamsなどのサービスを利用するために、さまざまなURLやIPアドレスが使用されています。

Microsoft 365のURL・IPアドレス情報は変更される可能性があるため、ネットワーク設定などで利用する場合は最新情報を確認することが重要です。

PowerShellを利用すると、Microsoft 365のエンドポイント情報を簡単に取得できます。

また、idserviceAreaなどの情報を確認することで、取得したURL・IPアドレスがどのMicrosoft 365サービスに関連するものなのかを確認できます。

Microsoft 365のURL・IPアドレスに変更があったか確認したい場合は、前回取得したデータと今回取得したデータを比較する方法が便利です。

Microsoft 365のURL・IPアドレスをPowerShellで取得する方法と、変更差分を確認する方法を組み合わせることで、ネットワーク設定のメンテナンスにも活用できます。