IPv6验证 - I

场景1 - 浏览器访问应用

在本部分中,我们将验证从 IPv4客户端 到IPv6 EKS 集群上的应用程序的连接。

ALB启用了dual stack模式,它允许 IPv4 和 IPv6 客户端进行连接。

获取上一步的ALB DNS地址,在浏览器中访问:

image-20240319104255214

验证ALB是否可以解析为 A 和 AAAA DNS 记录:

$ dig k8s-game2048-ingress2-xxxxxxxxx-yyyyyyyyyy.us-west-2.elb.amazonaws.com +short
$ dig k8s-game2048-ingress2-xxxxxxxxx-yyyyyyyyyy.us-west-2.elb.amazonaws.com AAAA +short

image-20240319104421262

场景2 - EKS Pod访问公网

在本部分中,我们将验证从 EKS Pod 到 Internet 上的 IPv4 / IPv6 的连接。

运行以下命令创建一个新的 pod,该 pod 允许执行 curl 命令并打开 pod 的 shell 终端。

kubectl run mycurlpod --image=curlimages/curl -i --tty -- sh

测试访问外界IPv4

在 Pod 终端上,运行以下命令来测试与 Internet 上的 IPv4 公共端点的连接:

curl 'https://api.ipify.org?format=json'

预期回应:

kongpingfan:~/environment/eksctl $ kubectl run mycurlpod --image=curlimages/curl -i --tty -- sh
If you don't see a command prompt, try pressing enter.
~ $ curl 'https://api.ipify.org?format=json'
{"ip":"54.202.37.175"}~ $ 

通过Pod所在实例的NAT,IPv6 Pod可以与IPv4的地址进行访问

这个返回的IP实际上是Pod所在EC2的IP:

image-20240319105734145

测试访问外界IPv6

image-20240319105308927

Pod与外界公网交流时,用的是自己的IPv6地址,它是走IGW或EIGW(egress only)出去的


上面两个url:

api.ipify.org
ip.gs

一个走ipv4,另一个走ipv6, 这是因为两个URL对IPv6的支持不一样:

image-20240319110144030