本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 區域或
GLOBAL
。CLOUDFRONT
和ROUTE53
範圍為GLOBAL
。類型:String
有效值:
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"
- 服務
-
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
範例 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 ...
實作出口控制
若要允許執行個體只存取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
-dd
Thh
: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 位址範圍通知
在 https://console.aws.amazon.com/sns/v3/home
開啟 Amazon SNS 主控台。 -
如有必要,請在導覽列中將「區域」變更為美國東部 (維吉尼亞北部)。您必須選取此區域,因為您要訂閱的 SNS 通知已在本區域中建立完成。
-
在導覽窗格中,選擇 Subscriptions (訂閱)。
-
選擇 Create subscription (建立訂閱)。
-
在 Create subscription (建立訂閱) 對話方塊中,執行下列動作:
-
對於 Topic ARN (主題 ARN),請複製下列 Amazon Resource Name (ARN):
arn:aws:sns:us-east-1:806199016981:AmazonIpSpaceChanged
-
對於Protocol (通訊協定),請選擇要使用的通訊協定 (例如,
Email
)。 -
對於Endpoint (端點),請鍵入端點以接收通知 (例如,您的電子郵件地址)。
-
選擇 Create subscription (建立訂閱)。
-
-
我們將會聯絡您有關所指定的端點,並要求您確認訂閱。例如,如果您指定了電子郵件地址,將會收到一封電子郵件訊息,主旨行為
AWS Notification - Subscription Confirmation
。請依照指示來確認訂閱。
通知受制於端點的可用性。因此,您可能想要定期檢查 JSON 檔案,以確保取得最新的範圍。如需使用 Amazon SNS 可靠性的詳細資訊,請參閱http://aws.amazon.com/sns/faqs/#Reliability
如果您不想再接收這些通知,請使用下列程序來取消訂閱。
取消訂閱AWS IP 位址範圍通知
-
在 https://console.aws.amazon.com/sns/v3/home
開啟 Amazon SNS 主控台。 -
在導覽窗格中,選擇 Subscriptions (訂閱)。
-
勾選訂閱的核取方塊。
-
對於 Actions (動作),請選擇 Delete subscriptions (刪除訂閱)。
-
出現確認提示時,請選擇 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_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
— 全球加速器邊緣伺服器的位置和 IP 地址範圍 -
ROUTE53
— Amazon Route 53 伺服器的 IP 地址範圍 -
ROUTE53_HEALTHCHECKS
— Amazon Route 53 伺服器的 IP 地址範圍 -
ROUTE53_HEALTHCHECKS_PUBLISHING
— Amazon Route 53 伺服器的 IP 地址範圍 -
WORKSPACES_GATEWAYS
— PCoIP 閘道伺服器