Amazon-Ec2
如何驗證 AWS VPC (S3) 終端節點是否有效?
我使用 CloudFormation 向我的 VPC 添加了一個 VPC 終端節點,並允許使用 s3。路由在 AWS 控制台中可見,但在 EC2 實例的本地路由表中不可見:
$ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.29.4.129 0.0.0.0 UG 0 0 0 eth0 169.254.169.254 0.0.0.0 255.255.255.255 UH 0 0 0 eth0 172.29.4.128 0.0.0.0 255.255.255.128 U 0 0 0 eth0
如何驗證 VPC 中的 EC2 實例實際使用 S3 的 VPC 終端節點,而不是可用的網際網路連接?
我找到了一種驗證 VPC 終端節點使用情況的方法。
- 登錄 VPC 中的 AWS EC2 實例
- 配置 aws cli 客戶端
- 執行
aws ec2 describe-prefix-lists
;對於Windows PowerShell,Get-EC2PrefixList
結果應在屬性中包含 VPC 終端節點前綴列表 ID
PrefixListId
。如需進一步驗證,您可以將以下策略應用於 S3 儲存桶:
{ "Version": "2008-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::mybucket" ], "Condition": { "StringNotEquals": { "aws:sourceVpc": [ "vpc-121212" ] } } } ] }
使用您的 vpc ID 而不是 vpc-121212。然後,您應該只能從給定的 VPC 訪問 S3 儲存桶
我想直接的方法是實際探測這些路線。
您可以跟踪路由到 s3 並查看 NAT 網關的內部 IP 是否在輸出中的任何位置(例如第一跳)。
首先,在控制台中檢查 NAT 網關內部 IP 。
帶有端點集的範例輸出 - 未顯示網關 IP。這是你想看到的。
$ traceroute -n -T -p 443 s3.amazonaws.com traceroute to s3.amazonaws.com (52.216.204.93), 30 hops max, 60 byte packets 1 * * * 2 * * * 3 * * * 4 * * * 5 * * * 6 * * * 7 52.216.204.93 0.662 ms 0.668 ms 0.637 ms
不同目的地的範例輸出,通過 NAT(見第一跳)
$ traceroute -n -T -p 443 serverfault.com traceroute to serverfault.com (151.101.129.69), 30 hops max, 60 byte packets 1 172.20.10.188 0.206 ms 0.147 ms 0.145 ms 2 * * * 3 * * * 4 * * * 5 * * * 6 * * * 7 100.65.13.49 0.956 ms 100.65.13.113 1.253 ms * 8 52.93.28.209 1.083 ms 52.93.28.231 1.213 ms 52.93.28.235 1.151 ms 9 100.100.4.38 1.770 ms 100.100.4.46 2.089 ms 100.100.4.36 1.723 ms 10 103.244.50.242 1.136 ms 100.100.4.44 1.702 ms 2.738 ms 11 151.101.129.69 1.013 ms 103.244.50.244 1.745 ms 151.101.129.69 1.142 ms