Amazon IP 地址范围
Amazon Web Services (Amazon) 以 JSON 格式发布其当前的 IP 地址范围。要查看当前范围,请下载 .json
文件。要维护历史记录,请将连续版本的 .json
文件保存在系统上。要确定自上次保存文件以来是否发生更改,请检查当前文件中的发布时间,并将其与上次保存文件中的发布时间进行比较。
通过自带 IP 地址(BYOIP)引入到 Amazon 的 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 纪元时间格式的发布时间。
类型:字符串
示例:
"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 地址范围。请注意,Amazon 可在更具体的范围内公布前缀。例如,文件中的前缀 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 地址范围。请注意,Amazon 可在更具体的范围内公布前缀。
类型:字符串
示例:
"ipv6_prefix": "2001:db8:1234::/64"
- network_border_group
-
网络边界组的名称,这是 Amazon 通告 IP 地址的可用区或 Local Zones 的唯一集合。
类型:字符串
示例:
"network_border_group": "us-west-2-lax-1"
- 区域
-
Amazon 区域或
GLOBAL
(针对边缘站点)。CLOUDFRONT
和ROUTE53
范围是GLOBAL
。类型:字符串
有效值:
ap-east-1
|ap-northeast-1
|ap-northeast-2
|ap-northeast-3
|ap-south-1
|ap-southeast-1
|ap-southeast-2
|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"
- service
-
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
|ROUTE53
|ROUTE53_HEALTHCHECKS
|ROUTE53_HEALTHCHECKS_PUBLISHING
|ROUTE53_RESOLVER
|S3
|WORKSPACES_GATEWAYS
示例:
"service": "AMAZON"
筛选 JSON 文件
您可以下载命令行工具以帮助您筛选出自己所要查找的信息。
Windows
Amazon Tools for Windows PowerShell 包含 cmdlet Get-AWSPublicIpAddressRange
以便分析此 JSON 文件。以下示例展示了其用法。有关更多信息,请参阅查询 Amazon 的公有 IP 地址范围
例 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 工具
例 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 ...
实施出口控制
要仅允许实例访问 Amazon 服务,可使用规则创建安全组,这些规则允许出站流量流向 AMAZON
列表中的 CIDR 块(排除也在 EC2
列表中的 CIDR 块)。EC2
列表中的 IP 地址可以分配给 EC2 实例。
Windows 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 ...
发布说明
下表介绍了 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_MEETINGS 和 CHIME_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 日 |
了解更多信息
-
AMAZON_APPFLOW
– IP 地址范围 -
AMAZON_CONNECT
– 设置您的网络 -
CLOUDFRONT
– CloudFront 边缘服务器的位置和 IP 地址范围 -
DYNAMODB
– IP 地址范围 -
EC2
– 公有 IPV4 地址 -
EC2_INSTANCE_CONNECT
– 设置 EC2 Instance Connect -
GLOBALACCELERATOR
– Global Accelerator 边缘服务器的位置和 IP 地址范围 -
ROUTE53
– Amazon Route 53 服务器的 IP 地址范围 -
ROUTE53_HEALTHCHECKS
– Amazon Route 53 服务器的 IP 地址范围 -
ROUTE53_HEALTHCHECKS_PUBLISHING
– Amazon Route 53 服务器的 IP 地址范围 -
WORKSPACES_GATEWAYS
–PCoIP 网关服务器