如何在AWS平台上通过IPv6使Web服务器可访问?


Answers:


12

尽管在撰写本文时,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连接。


8

对于EC2,IPv6不可用(截至2013年9月);但是它可用于ELB。因此,您可以将ELB用作一种IPv4网关,但还不能将IPv6地址分配给EC2实例。

有传言说这可能会在“不久的将来”发生改变(无论这意味着什么)。


2
不幸的是,仍然不能直接在EC2或VPC实例上使用。:(
Martijn Heemels 2013年

它仍然不可用!:(当您必须支持苹果设备时会感到痛苦
Keerthivasan

6

您可以通过CloudFlare CDN代理您的站点,从而使该站点可以使用IPv6(以及其他一些好处)。


有趣。我不知道Cloudflare具有自动IPv6网关。谢谢小费,马库斯。
Jeff Loughridge

1

您可以从Tunnelbroker获得免费的IPv6隧道。它与EC2配合良好。我已经测试过了


4
“运作良好”是一个非常主观的短语。
克里斯·S

它工作正常,通讯进出,快速,可靠。您还期望什么?
2012年

有关运行条件的详细信息,例如负载。对于某些人来说,“低端盒”风格的VPS可能“运作良好”,而对其他人则不然。地理位置可能也很重要。许多变量会影响对您有用或无效的变量。(我可以想象,如果“快速”表示延迟或带宽或两者兼而有之,则有些分歧。)
Cornelius

我已经创建了隧道,我获得了连接到代理的ec2的ipv6客户端地址。但是,我无法从Internet访问它。我不确定我是否做错了什么。但是,我可以在ec2中访问该应用程序。还有一件事,我看到网络适配器设置ipv6连接设置为无网络,IPv4单独连接到了互联网
Keerthivasan

1

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支持也已可用。

由Jeff Barr于2017年1月25日


0

AWS EC2实例仍接收RFC1918 IPv4地址空间,但是如果您在ELB后面有Web服务,则该ELB实例有前缀的主机名dualstackipv6主机名,它们提供双IPv4 / IPv6和仅IPv6访问。ELB和EC2实例之间的通信仍将保留为IPv4,但是通过IPv6连接的客户端将看不到任何不同,除非您所托管的Web应用程序专门寻找IPv6地址。


我要补充一点,您可能希望配置Web服务器以查看X-Forwarded-For值,以查看哪些访问者使用IPv6来访问您的站点。
Jeff Loughridge 2012年

1
是的,有几个模块(mod_rpaf和mod_extract_forwarded)可以帮助您完成此工作,同时还可以对Apache2最新版本(mod_remoteip)中的更改进行简化。不仅使用IPv6,而且通常使用AWS ELB。
杰里米·布斯

0

上一次我们的目标是将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流量


与仅将ELB放在服务器前面相比,这将具有很高的延迟,并且会非常复杂。
ceejayoz'8

1
@ceejayoz无法在EC2-VPC上仅从EC2-Classic上接收来自ELB的IPv6流量,但是现在EC2-Classic具有创建限制,许多人无法选择。
Anatolii Chmykhalo

谁在我的帖子上加减号的人可以解释您为什么这样做吗?如果这是可能的ELB,请附上证明
Anatolii Chmykhalo

依然没有人描述或将证明,我很这种行为感到失望..
Anatolii Chmykhalo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.