Назад | Перейти на главную страницу

Как сделать свой веб-сервер доступным через IPv6 на платформе AWS?

Веб-сайт моей компании использует платформу 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 в девяти из этих регионов.

Джефф Барр, 25 января 2017 г.

Экземпляр 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