AWSIP 地址範圍 - AWS 一般參考

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWSIP 地址範圍

Amazon Web Services (AWS) 會以 JSON 格式發佈目前的 IP 地址範圍。若要檢視目前範圍,請下載 .json 檔案。為了保持歷史記錄,請在系統上儲存連續版本的 .json 檔案。若要判斷自上次儲存檔案之後是否有所變更,請查看目前檔案中的發佈時間,然後比較最後所儲存檔案的發佈時間。

AWS透過自有 IP 地址 (BYOIP) 使用自有 IP 地址 (BYOIP) 使用自有 IP 地址範圍。.json

下載

下載 ip-ranges.json

如果您以程式設計方式存取此檔案,您必須負責確保只有當伺服器提出的 TLS 憑證驗證成功之後,才讓應用程式下載檔案。

語法

ip-ranges.json 語法如下所示。

{ "syncToken": "0123456789", "createDate": "yyyy-mm-dd-hh-mm-ss", "prefixes": [ { "ip_prefix": "cidr", "region": "region", "network_border_group": "network_border_group", "service": "subset" } ], "ipv6_prefixes": [ { "ipv6_prefix": "cidr", "region": "region", "network_border_group": "network_border_group", "service": "subset" } ] }
syncToken

以 Unix epoch 時間格式表示的發佈時間。

類型:String

範例:"syncToken": "1416435608"

createDate

發佈日期和時間,以 UTC YY-MM-DD-hh-mm-ss 格式表示。

類型:String

範例:"createDate": "2014-11-19-23-29-02"

字首

IPv4 地址範圍的 IP 字首。

類型:陣列

ipv6_prefixes

IPv6 地址範圍的 IP 字首。

類型:陣列

ip_prefix

使用 CIDR 表示法的公有 IPv4 地址範圍。請注意,AWS 會在多個特定範圍中宣告字首。例如,檔案中的字首 96.127.0.0/17 可能會宣告為 96.127.0.0/21、96.127.8.0/21、96.127.32.0/19 及 96.127.64.0/18。

類型:String

範例:"ip_prefix": "198.51.100.2/24"

ipv6_prefix

使用 CIDR 表示法的公有 IPv6 地址範圍。請注意,AWS 會在多個特定範圍中宣告字首。

類型:String

範例:"ipv6_prefix": "2001:db8:1234::/64"

network_border_group

網路邊界群組的名稱,此群組是一組唯一的可用區域或 Local Zones 區域,此群組AWS通告為了透過 IP 地址。

類型:String

範例:"network_border_group": "us-west-2-lax-1"

region

節點的 AWS 區域或 GLOBALCLOUDFRONTROUTE53 範圍為 GLOBAL

類型:String

有效值:ap-east-1ap-northeast-1ap-northeast-2ap-northeast-3ap-south-1ap-southeast-1ap-southeast-2|ca-central-1cn-north-1 |cn-northwest-1eu-central-1 |eu-central-2eu-north-1 |eu-south-1eu-south-2 |eu-west-1eu-west-2 |eu-west-3me-central-1 |me-south-1 |sa-east-1|us-east-1 |us-east-2us-gov-east-1 |us-gov-west-1 |us-west-1 |us-west-2 |GLOBAL

範例:"region": "us-east-1"

服務

IP 地址範圍的子集。列出的 API_GATEWAY 位址僅為輸出。指定 AMAZON 取得所有 IP 位址範圍 (表示每個子集也位於 AMAZON 子網路中)。不過,某些 IP 位址範圍只在 AMAZON 子集中 (表示它們在另一個子集中也不可用)。

類型:String

有效值:AMAZON | AMAZON_APPFLOW | AMAZON_CONNECT | API_GATEWAY | CHIME_MEETINGS | CHIME_VOICECONNECTOR | CLOUD9 | CLOUDFRONT | CLOUDFRONT_ORIGIN_FACING | CODEBUILD | DYNAMODB | EBS | EC2 | EC2_INSTANCE_CONNECT | GLOBALACCELERATOR | KINESIS_VIDEO_STREAMS | ROUTE53 | ROUTE53_HEALTHCHECKS | ROUTE53_HEALTHCHECKS_PUBLISHING | ROUTE53_RESOLVER | S3 | WORKSPACES_GATEWAYS

範例:"service": "AMAZON"

篩選 JSON 檔案

您可以下載命令列工具,協助您篩選並顯示所要尋找的資訊。

Windows

AWS Tools for Windows PowerShell 包含的 Get-AWSPublicIpAddressRange 可剖析此 JSON 檔案。以下範例示範其用途。如需詳細資訊,請參閱查詢公用 IP 位址範圍AWS和 G et-AWSPublicIpAddressRange

範例 1. 取得建立日期
PS C:\> Get-AWSPublicIpAddressRange -OutputPublicationDate Wednesday, August 22, 2018 9:22:35 PM
範例 2. 取得特定區域的資訊
PS C:\> Get-AWSPublicIpAddressRange -Region us-east-1 IpPrefix Region NetworkBorderGroup Service -------- ------ ------- ------- 23.20.0.0/14 us-east-1 us-east-1 AMAZON 50.16.0.0/15 us-east-1 us-east-1 AMAZON 50.19.0.0/16 us-east-1 us-east-1 AMAZON ...
範例 3. 取得所有 IP 地址
PS C:\> (Get-AWSPublicIpAddressRange).IpPrefix 23.20.0.0/14 27.0.0.0/22 43.250.192.0/24 ... 2406:da00:ff00::/64 2600:1fff:6000::/40 2a01:578:3::/64 2600:9000::/28
範例 4. 取得所有 IPv4 地址
PS C:\> Get-AWSPublicIpAddressRange | where {$_.IpAddressFormat -eq "Ipv4"} | select IpPrefix IpPrefix -------- 23.20.0.0/14 27.0.0.0/22 43.250.192.0/24 ...
範例 5. 取得所有 IPv6 地址
PS C:\> Get-AWSPublicIpAddressRange | where {$_.IpAddressFormat -eq "Ipv6"} | select IpPrefix IpPrefix -------- 2a05:d07c:2000::/40 2a05:d000:8000::/40 2406:dafe:2000::/40 ...
範例 6. 取得適用於特定服務的所有 IP 地址
PS C:\> Get-AWSPublicIpAddressRange -ServiceKey CODEBUILD | select IpPrefix IpPrefix -------- 52.47.73.72/29 13.55.255.216/29 52.15.247.208/29 ...

Linux

以下命令範例使用 jq 工具來剖析 JSON 檔案的本機副本。

範例 1. 取得建立日期
$ jq .createDate < ip-ranges.json "2016-02-18-17-22-15"
範例 2. 取得特定區域的資訊
$ jq '.prefixes[] | select(.region=="us-east-1")' < ip-ranges.json { "ip_prefix": "23.20.0.0/14", "region": "us-east-1", "network_border_group": "us-east-1", "service": "AMAZON" }, { "ip_prefix": "50.16.0.0/15", "region": "us-east-1", "network_border_group": "us-east-1", "service": "AMAZON" }, { "ip_prefix": "50.19.0.0/16", "region": "us-east-1", "network_border_group": "us-east-1", "service": "AMAZON" }, ...
範例 3. 取得所有 IPv4 地址
$ jq -r '.prefixes | .[].ip_prefix' < ip-ranges.json 23.20.0.0/14 27.0.0.0/22 43.250.192.0/24 ...
範例 4. 取得所有 IPv6 地址
$ jq -r '.ipv6_prefixes | .[].ipv6_prefix' < ip-ranges.json 2a05:d07c:2000::/40 2a05:d000:8000::/40 2406:dafe:2000::/40 ...
範例 5. 取得適用於特定服務的所有 IPv4 地址
$ jq -r '.prefixes[] | select(.service=="CODEBUILD") | .ip_prefix' < ip-ranges.json 52.47.73.72/29 13.55.255.216/29 52.15.247.208/29 ...
範例 6. 取得特定區域中適用於特定服務的所有 IPv4 地址
$ jq -r '.prefixes[] | select(.region=="us-east-1") | select(.service=="CODEBUILD") | .ip_prefix' < ip-ranges.json 34.228.4.208/28
範例 7. 取得特定網路邊界群組的資訊
$ jq -r '.prefixes[] | select(.region=="us-west-2") | select(.network_border_group=="us-west-2-lax-1") | .ip_prefix' < ip-ranges.json 70.224.192.0/18 52.95.230.0/24 15.253.0.0/16 ...

實作出口控制

若要允許執行個體只存取AWS服務,請建立一個安全群組,其中包含允許輸出流量傳輸至AMAZON清單中 CIDR 區塊的規則,減去EC2清單中的 CIDR 區塊。IP addresses in the EC2 清單中的 IP 地址可以指派給 EC2 執行個體。

視窗 PowerShell

下列 PowerShell 範例說明如何取得清單中但不是AMAZON清單中的EC2 IP 位址。複製指令碼,並將它儲存至名為 Select_address.ps1 的檔案。

$amazon_addresses = Get-AWSPublicIpAddressRange -ServiceKey amazon $ec2_addresses = Get-AWSPublicIpAddressRange -ServiceKey ec2 ForEach ($address in $amazon_addresses) { if( $ec2_addresses.IpPrefix -notcontains $address.IpPrefix) { ($address).IpPrefix } }

您可以執行此指令碼,如下所示:

PS C:\> .\Select_address.ps1 13.32.0.0/15 13.35.0.0/16 13.248.0.0/20 13.248.16.0/21 13.248.24.0/22 13.248.28.0/22 27.0.0.0/22 43.250.192.0/24 43.250.193.0/24 ...

jq

以下範例顯示如何取得在 AMAZON 清單但不在 EC2 清單中的 IP 地址:

jq -r '[.prefixes[] | select(.service=="AMAZON").ip_prefix] - [.prefixes[] | select(.service=="EC2").ip_prefix] | .[]' < ip-ranges.json 52.94.22.0/24 52.94.17.0/24 52.95.154.0/23 52.95.212.0/22 54.239.0.240/28 54.239.54.0/23 52.119.224.0/21 ...

以下範例說明如何篩選結果為一個區域:

jq -r '[.prefixes[] | select(.region=="us-east-1" and .service=="AMAZON").ip_prefix] - [.prefixes[] | select(.region=="us-east-1" and .service=="EC2").ip_prefix] | .[]' < ip-ranges.json

Python

以下 python 指令碼顯示如何取得在 AMAZON 清單但不在 EC2 清單中的 IP 地址。複製指令碼,並將它儲存至名為 get_ips.py 的檔案。

#!/usr/bin/env python import requests ip_ranges = requests.get('https://ip-ranges.amazonaws.com/ip-ranges.json').json()['prefixes'] amazon_ips = [item['ip_prefix'] for item in ip_ranges if item["service"] == "AMAZON"] ec2_ips = [item['ip_prefix'] for item in ip_ranges if item["service"] == "EC2"] amazon_ips_less_ec2=[] for ip in amazon_ips: if ip not in ec2_ips: amazon_ips_less_ec2.append(ip) for ip in amazon_ips_less_ec2: print(str(ip))

您可以執行此指令碼,如下所示:

$ python ./get_ips.py 13.32.0.0/15 13.35.0.0/16 13.248.0.0/20 13.248.16.0/21 13.248.24.0/22 13.248.28.0/22 27.0.0.0/22 43.250.192.0/24 43.250.193.0/24 ...

AWSIP 地址範圍

每當AWS IP 位址範圍發生變更時,我們就會傳送通知給AmazonIpSpaceChanged主題的訂閱者。承載內容包含以下格式的資訊:

{ "create-time":"yyyy-mm-ddThh:mm:ss+00:00", "synctoken":"0123456789", "md5":"6a45316e8bc9463c9e926d5d37836d33", "url":"https://ip-ranges.amazonaws.com/ip-ranges.json" }
create-time

建立日期和時間。

通知可能不會按順序傳送。因此,建議您查看時間戳記,確保順序正確。

synctoken

以 Unix epoch 時間格式表示的發佈時間。

md5

ip-ranges.json 檔案的密碼編譯雜湊值。您可以使用此值來檢查下載檔因是否損毀。

url

ip-ranges.json 檔案的位置。

如果您希望在AWS IP 位址範圍發生變更時收到通知,可以按照以下方式訂閱以使用 Amazon SNS 接收通知。

訂閱AWS IP 位址範圍通知
  1. https://console.aws.amazon.com/sns/v3/home 開啟 Amazon SNS 主控台。

  2. 如有必要,請在導覽列中將「區域」變更為美國東部 (維吉尼亞北部)。您必須選取此區域,因為您要訂閱的 SNS 通知已在本區域中建立完成。

  3. 在導覽窗格中,選擇 Subscriptions (訂閱)。

  4. 選擇 Create subscription (建立訂閱)。

  5. Create subscription (建立訂閱) 對話方塊中,執行下列動作:

    1. 對於 Topic ARN (主題 ARN),請複製下列 Amazon Resource Name (ARN):

      arn:aws:sns:us-east-1:806199016981:AmazonIpSpaceChanged
    2. 對於Protocol (通訊協定),請選擇要使用的通訊協定 (例如,Email)。

    3. 對於Endpoint (端點),請鍵入端點以接收通知 (例如,您的電子郵件地址)。

    4. 選擇 Create subscription (建立訂閱)。

  6. 我們將會聯絡您有關所指定的端點,並要求您確認訂閱。例如,如果您指定了電子郵件地址,將會收到一封電子郵件訊息,主旨行為 AWS Notification - Subscription Confirmation。請依照指示來確認訂閱。

通知受制於端點的可用性。因此,您可能想要定期檢查 JSON 檔案,以確保取得最新的範圍。如需使用 Amazon SNS 可靠性的詳細資訊,請參閱http://aws.amazon.com/sns/faqs/#Reliability

如果您不想再接收這些通知,請使用下列程序來取消訂閱。

取消訂閱AWS IP 位址範圍通知
  1. https://console.aws.amazon.com/sns/v3/home 開啟 Amazon SNS 主控台。

  2. 在導覽窗格中,選擇 Subscriptions (訂閱)。

  3. 勾選訂閱的核取方塊。

  4. 對於 Actions (動作),請選擇 Delete subscriptions (刪除訂閱)。

  5. 出現確認提示時,請選擇 Delete (刪除)。

如需 Amazon SNS 的詳細資訊,請參閱 Amazon Simple Notification Service 開發人員指南

版本備註

下表說明的語法更新ip-ranges.json。我們也會在每個地區啟用時新增區域代碼。

描述 發行日期
新增 CLOUDFRONT_ORIGIN_FACING 服務代碼。 2021 年 10 月 12 日
新增 ROUTE53_RESOLVER 服務代碼。 2021 年 6 月 24 日
新增 EBS 服務代碼。 2021 年 5 月 12 日
新增 KINESIS_VIDEO_STREAMS 服務代碼。 2020 年 11 月 19 日
新增 CHIME_MEETINGSCHIME_VOICECONNECTOR 服務代碼。 2020 年 6 月 19 日
新增 AMAZON_APPFLOW 服務代碼。 2020 年 6 月 9 日
新增網路邊界群組的支援。 2020 年 4 月 7 日
新增 WORKSPACES_GATEWAYS 服務代碼。 2020 年 3 月 30 日
新增 ROUTE53_HEALTHCHECK_PUBLISHING 服務代碼。 2020 年 1 月 30 日
新增 API_GATEWAY 服務代碼。 2019 年 9 月 26 日
新增 EC2_INSTANCE_CONNECT 服務代碼。 2019 年 6 月 26 日
新增 DYNAMODB 服務代碼。 2019 年 4 月 25 日
新增 GLOBALACCELERATOR 服務代碼。 2018 年 12 月 20 日
新增 AMAZON_CONNECT 服務代碼。 2018 年 6 月 20 日
新增 CLOUD9 服務代碼。 2018 年 6 月 20 日
新增 CODEBUILD 服務代碼。 2018 年 4 月 19 日
新增 S3 服務代碼。 2017 年 2 月 28 日
新增 IPv6 地址範圍的支援。 2016 年 8 月 22 日
初始版本 2014 年 11 月 19 日

進一步了解