Веб-сайт моей компании использует платформу AWS. Я хочу, чтобы посетители сайта могли получать доступ к моему контенту по протоколу IPv6. Как я могу добавить IPv6-адрес?
Хотя на момент написания этой статьи инстансы EC2 не поддерживают IPv6, Amazon реализовала IPv6 для своих эластичных балансировщиков нагрузки в Востоке США (Северная Вирджиния), ЕС (Ирландия), Азиатско-Тихоокеанском регионе (Токио) и Азиатско-Тихоокеанском регионе (Сингапур). Я покажу, как сделать контент IPv6 доступным с помощью экземпляров EC2 и балансировщика нагрузки.
Настройка эластичного балансировщика нагрузки (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, чтобы убедиться, что вы получаете записи A (IPv4) и AAAA (IPv6) с использованием имени ELB DNS с двойным стеком. Если вам неудобно работать с этими инструментами командной строки, воспользуйтесь поиском в Интернете, например, на http://www.kloth.net/services/dig.php.
Создайте CNAME для своего домена
Я рекомендую протестировать одноразовый домен, чтобы избежать возможных сбоев в работе. CNAME для www.example.com должен указывать на имя ELB двойного стека.
Проверка
Посетите www.example.com с хоста, подключенного к IPv6. В качестве альтернативы вы можете использовать http://ipv6-test.com/validate.php чтобы проверить подключение IPv6 к вашему сайту.
IPv6 недоступен (по состоянию на сентябрь 2013 г.) для EC2; однако он доступен для ELB. Так что вы можете использовать ELB как своего рода шлюз IPv4, но вы пока не можете назначать IPv6-адреса экземплярам EC2.
Ходят слухи, что это может измениться в «ближайшем будущем» (что бы это ни значило).
Вы можете сделать сайт доступным с IPv6 (и некоторыми другими преимуществами), проксировав свой сайт через CloudFlare CDN.
Вы можете получить бесплатный туннель IPv6 от Туннельный маклер. Хорошо работает с EC2. Я это проверил.
IPv6 теперь общедоступен
За последние пару лет мы работали над добавлением поддержки IPv6 во многие различные части AWS, начиная с Elastic Load Balancing, AWS IoT, AWS Direct Connect, Amazon Route 53, Amazon CloudFront, AWS WAF и S3 Transfer Acceleration, все это было сделано до объявления в прошлом месяце о поддержке IPv6 для экземпляров EC2 в виртуальных частных облаках (изначально доступно для использования в регионе Восток США (Огайо)).
Сегодня я рад поделиться новостью о том, что поддержка IPv6 для экземпляров EC2 в VPC теперь доступна в общей сложности в пятнадцати регионах, наряду с поддержкой Application Load Balancer для IPv6 в девяти из этих регионов.
Экземпляр AWS EC2 по-прежнему получает адресное пространство IPv4 RFC1918, но если у вас есть веб-служба за ELB, то есть dualstack
и ipv6
префиксные имена хостов для экземпляра ELB, которые обеспечивают двойной доступ IPv4 / IPv6 и только доступ IPv6. Связь между ELB и экземпляром EC2 будет по-прежнему оставаться как IPv4, но клиент, подключающийся через IPv6, не увидит ничего другого, если только веб-приложение, которое вы размещаете, специально не ищет IPv6-адрес.
В прошлый раз нашей целью было перенести приложение Python Django с сервера Linode на Amazon EC2-VPC. Сначала я прочитал много информации об инстансах EC2 в Интернете и заметил, что EC2 VPC не поддерживает IPv6 в настоящее время.
Да, мы знаем, что это возможно с ELB и EC2-Classic, но у нас нет возможности настроить EC2-Classic, потому что наши учетные записи новее, чем требуется Amazon для EC2-Classic. Это была большая проблема, потому что нам нравится инфраструктура AWS и стиль базы данных RDS, но нам нужно включить IPv6 в наше приложение.
Поразмыслив, мы решили сделать сервер Linode, который уже поддерживает IPv6, в качестве прокси. В нашей конфигурации nginx на Linode мы проксируем весь трафик в приложение EC2-VPC Django на порт 9099, также мы получаем статические данные от 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 мы делаем наше приложение Django на порту 9099 и делаем его доступным для внешнего доступа, также в Amazon Console мы разрешаем порт 9099 также доступным для внешнего, потому что нам нужно, чтобы наш Linode nginx мог отправлять сюда трафик. Также не забудьте отправить статические данные и мультимедиа из EC2-VPC в Linode с помощью nginx:
location /s6/ {
alias /home/django/static/;
}
location /m6/ {
alias /home/django/media/;
}
Наконец, мы указываем DNS-запись AAAA на сервер Linode и запись A DNS на EC2-VPC, и все работает хорошо. Весь трафик поступает в EC2-VPC, реальный IP-адрес хранится в заголовке X-Real-IP. На самом деле я думаю, что сервер Linode может быть дорогим, чтобы сделать его таким же прокси, если у вас нет других приложений на нем. Так что, конечно, можно использовать любой сервер с функцией прокси и поддержкой IPv6.
Мой исходный пост: Получайте трафик Ipv6 на Amazon Ec2 Vpc