AWS IP 地址范围 - Amazon Virtual Private Cloud

AWS IP 地址范围

AWS 以 JSON 格式发布其当前的 IP 地址范围。利用这些信息,您可以识别来自 AWS 的流量。还可以使用此信息允许或拒绝发往或来自某些 AWS 服务的流量。

注意

要查看当前范围,请下载 .json 文件。要维护历史记录,请将连续版本的 .json 文件保存在系统上。要确定自上次保存文件以来是否发生更改,请检查当前文件中的发布时间,并将其与上次保存文件中的发布时间进行比较。

通过自带 IP 地址(BYOIP)引入到 AWS 的 IP 地址范围不包含在 .json 文件内。

或者,某些服务使用 AWS 托管式前缀列表发布其地址范围。有关更多信息,请参阅 可用的 AWS 托管前缀列表

下载

下载 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 纪元时间格式的发布时间。

类型:字符串

例如:"syncToken": "1416435608"

createDate

发布日期和时间,采用 UTC YY-MM-DD-hh-mm-ss 格式。

类型:字符串

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

prefixes

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。

类型:字符串

例如:"ip_prefix": "198.51.100.2/24"

ipv6_prefix

用 CIDR 表示法指定的公有 IPv6 地址范围。请注意,AWS 可在更具体的范围内公布前缀。

类型:字符串

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

network_border_group

网络边界组的名称,这是 AWS 通告 IP 地址或 GLOBAL 的可用区或本地区域的唯一集合。GLOBAL 服务流量可以被吸引到或来自 AWS 从中通告 IP 地址的多个(最多全部)可用区或本地区域。

类型:字符串

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

region

AWS 区域或 GLOBALGLOBAL 服务流量可以被吸引到或来自多个(最多全部)AWS 区域。

类型:字符串

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

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

服务

IP 地址范围的子集。为 API_GATEWAY 列出的地址仅为出口 IP 地址。指定 AMAZON 可获得所有 IP 地址范围(这意味着每个子集也在 AMAZON 子集中)。但是,某些 IP 地址范围仅在 AMAZON 子集中(这意味着它们不会再包含在其他子集中)。

类型:字符串

有效值: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 | MEDIA_PACKAGE_V2 | ROUTE53 | ROUTE53_HEALTHCHECKS | ROUTE53_HEALTHCHECKS_PUBLISHING | ROUTE53_RESOLVER | S3 | WORKSPACES_GATEWAYS

例如:"service": "AMAZON"

范围重叠

任何服务代码返回的 IP 地址范围也由 AMAZON 服务代码返回。例如,由 S3 服务代码返回的所有 IP 地址范围也由 AMAZON 服务代码返回。

当服务 A 使用来自服务 B 的资源时,存在由服务 A 和服务 B 的服务代码返回的 IP 地址范围。然而,这些 IP 地址范围仅由服务 A 使用,而不能由服务 B 使用。例如,AmazonS3 使用来自 AmazonEC2 的资源,因此存在由 S3EC2 服务代码返回的 IP 位置范围。但是,这些 IP 地址范围仅由 Amazon S3 使用。因此,S3 服务代码会返回 Amazon S3 专门使用的所有 IP 地址范围。要识别 Amazon EC2 专门使用的 IP 地址范围,请查找 EC2 服务代码(而不是 S3 服务代码)返回的 IP 地址范围。

筛选 JSON 文件

您可以下载命令行工具以帮助您筛选出自己所要查找的信息。

Windows

AWS Tools for Windows PowerShell 包含 cmdlet Get-AWSPublicIpAddressRange 以便分析此 JSON 文件。以下示例展示了其用法。有关更多信息,请参阅查询 AWS 的公有 IP 地址范围Get-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 服务创建的资源仅访问其他 AWS 服务,可以使用 ip-ranges.json 文件中的 IP 地址范围信息来执行出口筛选。确保安全组规则允许出站流量流向 AMAZON 列表中的 CIDR 块。安全组存在限额。根据每个区域中 IP 地址范围的数量,每个区域可能需要使用多个安全组。

注意

有些 AWS 服务基于 EC2 构建并使用 EC2 IP 地址空间。如果您屏蔽流向 EC2 IP 地址空间的流量,则也将阻止这些非 EC2 服务的流量。

AWS IP 地址范围通知

只要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 纪元时间格式的发布时间。

md5

ip-ranges.json 文件的加密哈希值。可以使用此值来检查下载的文件是否已损坏。

url

ip-ranges.json 文件的位置。

如果您希望只要AWS IP 地址范围发生更改就收到通知,可以按以下所示进行订阅,以便使用 Amazon SNS 接收通知。

订阅AWS IP 地址范围通知
  1. 通过以下网址打开 Amazon SNS 控制台:https://console.aws.amazon.com/sns/v3/home

  2. 如果需要,可在导航栏中将区域更改为美国东部(弗吉尼亚北部)。您必须选择此区域,因为您订阅的 SNS 通知是在此区域中创建的。

  3. 在导航窗格中,选择 Subscriptions

  4. 选择 Create subscription

  5. Create subscription 对话框中,执行以下操作:

    1. 对于 Topic ARN,复制以下 Amazon Resource Name(ARN):

      arn:aws:sns:us-east-1:806199016981:AmazonIpSpaceChanged
    2. 对于 Protocol,选择要使用的协议 (例如 Email)。

    3. 对于 Endpoint,键入用于接收通知的终端节点 (例如,您的电子邮件地址)。

    4. 选择创建订阅

  6. 将通过您指定的终端节点与您联系并要求您确认订阅。例如,如果指定了电子邮件地址,您会收到一封主题行为 AWS Notification - Subscription Confirmation 的电子邮件。请按照说明确认订阅。

通知受到终端节点可用性约束。因此,应定期检查 JSON 文件以确保您在最新范围内。有关 Amazon SNS 可靠性的更多信息,请参阅https://aws.amazon.com/sns/faqs/#Reliability

如果您不希望再收到这些通知,请通过以下步骤取消订阅。

取消订阅AWS IP 地址范围通知
  1. 通过以下网址打开 Amazon SNS 控制台:https://console.aws.amazon.com/sns/v3/home

  2. 在导航窗格中,选择 Subscriptions

  3. 选中订阅对应的复选框。

  4. 选择 ActionsDelete subscriptions

  5. 当系统提示进行确认时,选择 Delete(删除)

有关 Amazon SNS 的更多信息,请参阅《Amazon Simple Notification Service 开发人员指南

发布说明

下表介绍了 ip-ranges.json 语法的更新。我们还会在推出每个区域时添加新的区域代码。

描述 发行日期
添加了 MEDIA_PACKAGE_V2 服务代码。 2023 年 5 月 9 日
添加了 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 日

了解更多信息