我公司的网站使用AWS平台。我希望网站的访问者能够使用IPv6协议访问我的内容。如何添加IPv6地址?
我公司的网站使用AWS平台。我希望网站的访问者能够使用IPv6协议访问我的内容。如何添加IPv6地址?
Answers:
尽管在撰写本文时,EC2实例尚不支持本地IPv6,但Amazon已为其美国东部(弗吉尼亚北部),欧盟(爱尔兰),亚太地区(东京)和亚太地区(新加坡)的弹性负载均衡器实施了IPv6。我将演示如何使用EC2实例和负载均衡器使IPv6内容可用。
弹性负载平衡器(ELB)设置
我假设您已经在使用负载平衡器。(如果要设置一个,请遵循《 Elastic Load Balancer开发人员指南》中的指示,网址为http://awsdocs.s3.amazonaws.com/ElasticLoadBalancing/latest/elb-dg.pdf)。
在ELB条目旁边打勾,以便详细信息出现在底部面板中。写下您的ELB的双堆栈名称。它将类似于Dualstack.new-balancer-751654286.us-east-1.elb.amazonaws.com之类的名称。
测试DNS
使用dig或nslookup来验证您是否使用双栈ELB DNS名称获得了A(IPv4)和AAAA(IPv6)记录。如果您对这些命令行工具不满意,请使用基于Web的dig,例如http://www.kloth.net/services/dig.php上的 dig 。
为您的域创建CNAME
我建议在一次性使用的域上进行测试,以避免潜在的生产中断。www.example.com的CNAME应该指向双栈ELB名称。
验证
从连接了IPv6的主机访问www.example.com。另外,您可以使用http://ipv6-test.com/validate.php测试与站点的IPv6连接。
对于EC2,IPv6不可用(截至2013年9月);但是它可用于ELB。因此,您可以将ELB用作一种IPv4网关,但还不能将IPv6地址分配给EC2实例。
有传言说这可能会在“不久的将来”发生改变(无论这意味着什么)。
您可以通过CloudFlare CDN代理您的站点,从而使该站点可以使用IPv6(以及其他一些好处)。
您可以从Tunnelbroker获得免费的IPv6隧道。它与EC2配合良好。我已经测试过了
IPv6现在普遍可用
在过去几年中,我们一直在努力为AWS的许多不同部分添加IPv6支持,从弹性负载平衡,AWS IoT,AWS Direct Connect,Amazon Route 53,Amazon CloudFront,AWS WAF和S3 Transfer Acceleration开始,所有这些都建立在上个月宣布的对虚拟私有云中的EC2实例的IPv6支持(最初可在美国东部(俄亥俄州)地区使用)的基础上。
今天,我很高兴地分享一个新闻,即VPC中对EC2实例的IPv6支持现已在总共15个地区中提供,其中9个地区对IPv6的Application Load Balancer支持也已可用。
AWS EC2实例仍接收RFC1918 IPv4地址空间,但是如果您在ELB后面有Web服务,则该ELB实例有前缀的主机名dualstack
和ipv6
主机名,它们提供双IPv4 / IPv6和仅IPv6访问。ELB和EC2实例之间的通信仍将保留为IPv4,但是通过IPv6连接的客户端将看不到任何不同,除非您所托管的Web应用程序专门寻找IPv6地址。
上一次我们的目标是将Python Django应用程序从Linode服务器迁移到Amazon EC2-VPC。最初,我在Internet上阅读了很多有关EC2实例的信息,并注意到EC2 VPC目前不支持IPv6。
是的,我们知道使用ELB和EC2-Classic可能可行,但是我们没有设置EC2-Classic的能力,因为我们的账户更新是Amazon EC2-Classic所需的。这是一个大问题,因为我们喜欢AWS基础结构和RDS数据库样式,但是我们需要在应用程序中获取IPv6。
经过一番思考,我们决定将已经具有IPv6支持的Linode服务器作为代理。在Linode上的nginx配置中,我们将所有流量代理到端口9099上的EC2-VPC Django应用程序,我们也从EC2-VPC获取静态:
location /static/ {
proxy_pass http://--AWS_IP--/s6/;
}
location /media/ {
proxy_pass http://--AWS_IP--/m6/;
}
location / {
proxy_pass http://--AWS_IP--:9099/;
proxy_set_header X-Real-IP $remote_addr;
proxy_read_timeout 4000;
}
在EC2-VPC中,我们在端口9099上创建Django应用程序,并使其可外部访问,在Amazon Console上,我们也允许对端口9099进行外部访问,因为我们需要Linode nginx能够在此处发送流量。同样不要忘了通过nginx将静态媒体和媒体从EC2-VPC发送到Linode:
location /s6/ {
alias /home/django/static/;
}
location /m6/ {
alias /home/django/media/;
}
最终,我们将AAAA DNS记录指向Linode服务器,并将DNS记录指向EC2-VPC,并且一切正常。所有流量都流向EC2-VPC,即存储在X-Real-IP标头中的Real IP。实际上,如果您没有其他应用程序,那么我认为Linode服务器作为代理服务器可能会很昂贵。因此,可以使用任何具有代理功能和IPv6支持的服务器。
我的原始文章:在Amazon Ec2 Vpc上接收Ipv6流量