Рубрики
Uncategorized

IPv6 на AWS — Flat Swith Connection между моей локальной компьютерной лабораторией и облаком

Упрощение сетевых подключений между локальной и облачной с помощью IPv6. Tagged с AWS, DevOps, Cloud, CLI.

Мне нравится играть и строить в облаке AWS, но также наслаждаюсь разработкой и прототипом в моей местной лаборатории, в основном из других встроенных устройств Raspberry Pi +.

Время от времени мне удавалось следовать общей модели. Развертывание балансировщика нагрузки либо в AWS, либо с моего публичного адреса IPv4 как способ раскрыть миру мои приложения, а также общаться между облаком и моей местной сетью.

Я всегда буду помнить, что Интернет был разработан как плоская сеть данных, предоставляя множество протоколов и услуг между равными однозначными [1].

Одним из преимуществ IPv6 не имеет NAT, это упрощает текущую модель клиентского сервера, наследуя от IPv4 и возвращает одноранговых одноранговых коммуникаций Что я ценил и использовал в своей локальной сети, и теперь я также могу сделать против облака AWS.

Это моя настройка :

Я начал с создания туннеля IPv6 (поскольку мой интернет -провайдер все еще не предоставляет адреса IPv6), я зарегистрировался с https://tunnelbroker.net/

И создал туннель против их ближайшего туннельного сервера:

Я также назначил префикс A/48 для туннеля, это важно для следующих шагов, так как я не просто получу туннель на одном сервере, но и маршрутизации и назначении адресов IPv6 в мою лабораторию Linux Devices.

Получение настройки туннеля проста как копирование своих инструкций для моей ОС.

(Обратите внимание, что локальный адрес его заменен от вашей публики Адрес IPv4 на локальный IPv4 вашей системы)

Чтобы получить адрес IPv6 из моих направленных префиксов (The/48 One) должен установить Радвд и настроить его следующим образом:

* После этого все настроено в моей сети, которая теперь готова IPv6. *

Сейчас настало время создать сеть в облаке AWS, для этого я использую следующий фрагмент кода TypeScript, чтобы AWS CDK создал VPC с 3 публичными подсетями. Это действительно хорошая абстракция и время спасения:

import * as cdk from '@aws-cdk/core';
import * as ec2 from '@aws-cdk/aws-ec2';


export class NetStack extends cdk.Stack {
  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // The code that defines your stack goes here
    const vpc = new ec2.Vpc(this, 'VPC', {
       subnetConfiguration: [
          {
            cidrMask: 24,
            name: 'public',
            subnetType: ec2.SubnetType.PUBLIC,
          }
       ]
    });  }
}

Поддержка IPv6 в CDK не готова, поэтому я включу IPv6 в моем VPC и подсетях, используя AWS CLI следующим образом:

Запрашивая IPv6 CIDR:

Сначала получить идентификатор VPC

aws cloudformation describe-stack-resources --stack-name YourNamedStack --region us-east-2 | grep -oP "vpc-\w+" 

Затем запросите IPv6 CIDR

aws ec2 associate-vpc-cidr-block --vpc-id vpc-00000000000000000 --amazon-provided-ipv6-cidr-block

И сохраните блок IPv6/56, это необходимо дальше.

aws ec2 describe-vpcs --vpc-id vpc-00000000000000000 --region us-east-2 | grep "Ipv6CidrBlock"

Блок/56 разделен на меньшие/64 префиксы, затем мы назначили два из них нашим подсети.

Нам нужно сначала получить идентификаторы подсетей:

aws cloudformation describe-stack-resources --stack-name NetStack --region us-east-2 | grep -oP "subnet-\w+"

Затем назначьте два блока IPv6/64 нашим предыдущим перечисленным подсети.

aws ec2 associate-subnet-cidr-block --subnet-id subnet-00000000000000000 --ipv6-cidr-block 2600:1f16:dd9:e100::/64 
aws ec2 associate-subnet-cidr-block --subnet-id subnet-00000000000000001 --ipv6-cidr-block 2600:1f16:dd9:e101::/64 

Включить автоматическую адресацию IPv6 (очень важно для потом)

aws ec2 modify-subnet-attribute --subnet-id subnet-00000000000000000 --assign-ipv6-address-on-creation
aws ec2 modify-subnet-attribute --subnet-id subnet-00000000000000001 --assign-ipv6-address-on-creation

Маршрутизация также необходима, и наш последний шаг перед началом использования IPv6 в экземпляре

Еще раз, нам просто нужен удостоверение личности ресурсов, таблицы маршрутов и интернет -шлюз:

aws cloudformation describe-stack-resources --stack-name NetStack --region us-east-2 | grep -oP "rtb-\w+"

Интернет -шлюз важен при изменении таблиц маршрутов.

aws cloudformation describe-stack-resources --stack-name NetStack --region us-east-2 | grep -oP "igw-\w+"

И затем добавление маршрута по умолчанию IPv6 (::/0), чтобы добраться до Интернета.

aws ec2 create-route --route-table-id rtb-00000000000000000 --destination-ipv6-cidr-block ::/0 --gateway-id igw-00000000000000000
aws ec2 create-route --route-table-id rtb-00000000000000001 --destination-ipv6-cidr-block ::/0 --gateway-id igw-00000000000000000 

Теперь, если я запускаю экземпляр EC2 либо из консоли, либо со следующим фрагментом:

aws ec2 run-instances --image-id ami-08e6b682a466887dd --count 1 --instance-type t4g.micro  --iam-instance-profile Name=AWSCloud9SSMInstanceProfile  --subnet-id subnet-00000000000000000

Получите сессию против этого, я могу подтвердить, что он действительно получил адрес IPv6.

Если я запускаю NetCat по обе стороны от моей сети (облачный и локальный), я могу общаться между обоими серверами, как если бы они были в одной сети, в некотором роде они сейчас: d.

Теперь я могу очень легко общаться со своими AWS, и я также на пути к переходу на IPv6.

Важно * Изменить группы безопасности * Чтобы разрешить подключения из моего/48 сегмента IPv6 сегмента или всего Интернета IPv6, если вы хотите просто разместить там некоторые веб-приложения с AAAA Records 😉

Я планирую использовать эту настройку, чтобы в ближайшее время играть с ECS.

Есть некоторые соображения, которые следует иметь в виду:

  • Задержка составляет около 200 мс, я мог бы быть из -за моего физического местоположения.
  • Группы безопасности должны быть скорректированы в экземпляре, который работает на стороне AWS
  • Просмотрите свой местный брандмауэр маршрутизатора IPv6 и по соображениям безопасности
  • Используйте TLS все время, это не VPN.
  • Я использую свою коробку Pi-Hole, чтобы размещать туннель и предоставить IPv4 для маршрутизации IPv6 в моей локальной лаборатории.

Надеюсь, вам понравится это читать.

[1] http://luca.ntop.org/n2n.pdf

Оригинал: «https://dev.to/kristianpaul/ipv6-on-aws-flat-network-connection-between-my-local-computer-lab-and-the-cloud-p85»