Объединяя облака – создаем site-to-site соединение между Amazon Web Services и Windows Azure

В этой статье демонстрируется применение виртуальных сетей Windows Azure (Windows Azure Virtual Network, VNET) для создания IPsec-туннеля для соединения с окружением Virtual Private Cloud (VPC) расположенным в Amazon Web Services (AWS). используя это руководство вы сможете буквально содержать рабочие среды в каждом из облаков с полным сетевым сообщением между содержащимися в них виртуальными машинами посредством безопасного IPsec-туннеля. Этот подход может легко применяться для реализации сценария обеспечения отказоустойчивости, резервного копирования или даже миграции между облачными провайдерами. Программный VPN, который используется в этой статье для тестирования – это Open Swan.

Создание VPC в Amazon AWS

Для начала, на стороне Amazon создайте частное виртуальное облако (virtual private cloud, VPC), которое эквивалентно виртуальной сети в Windows Azure.

VPC Creation Wizard – Single Public Subnet with Internet Gateway

create-vpc-wizard-rs

Я выбрал адресное пространство 10.0.0.0/16 для сети Amazon VPC.

create-vpc-wizard-complete

Создайте экземпляр EC2, который будет использоваться для размещения Open Swan и будет входной точкой туннеля со стороны Amazon.

Запуск Ubuntu 13.04 в подсети VPC

launch-ubuntu-instance-1

Укажите подсеть и я рекомендую увеличить размер экземпляра с Micro до Small.

launch-ubuntu-instance-2

Как только экземпляр будет создан, переключитесь в представление EC2 и выделите новый Elastic IP. Это будет ваш внешний IP-адрес, который вы будете использовать для подключения через SSH и при подключении вашей виртуальной сети Windows Azure.

Нажмите Yes Allocate в окне диалога выделения нового IP-адреса.

allocate-elastic-ip

Выберите экземпляр из ниспадающего меню и нажмите Yes Associate.

associate-elastic-ip-instance

Создание виртуальной сети в Windows Azure

Перед конфигурированием сервиса Open Swan нам необходимо создать обратную сторону сети в Windows Azure. Для создания IPsec-туннеля сервису Open Swan требуется IP-адрес шлюза и ключ аутентификации, которые необходимо получить от виртуальной сети в Windows Azure.

Создайте виртуальную сеть в Windows Azure

create-vnet

Укажите параметры Data Center Location и VNET/Affinity Group Name

create-vnet-1

Выберите параметр site-to-site VPN

create-vnet-2

Определите сетевые свойства, которые в нашем случае являются параметрами Amazon VPC Address Space и Elastic IP сервера Open Swan Server

create-vnet-3

Определите адресное пространство Windows Azure Address Space. Убедитесь, что вы добавили подсеть шлюза (Gateway Subnet).

create-vnet-4

Создание шлюза Windows Azure Virtual Network Gateway

После создания виртуальной сети, откройте ее и щелкните “create gateway” –> выберите “static routing”.

azure-create-gateway

После создания шлюза вы сможете получить IP-адрес и ключ аутентификации и настроить Open Swan на стороне Amazon.

azure-gateway-created

Настройка Open Swan в Amazon Web Services

Подключение к Open Swan VM

Переключитесь на просмотр экземпляров и выберите ваш экземпляр, в меню Actions нажмите Connect.

Выберите Connect with a standalone SSH client.

connect-to-instance

Скопируйте команду для SSH (или используйте PuTTY) для подключения через SSH.

connect-via-ssh

Подключившись установите и настройте решение Open Swan for the VPN на стороне Amazon.

Установка Open Swan

   sudo apt-get install openswan

Выберите NO для установки сертификата так как мы будем использовать аутентификацию на базе ключа.

open-swan-install-1

Следующие шаги потребуют от вас использование текстового редактора для изменения некоторые файлов конфигурации.

Отредактируйте файл ipsec.conf

    cd /etc
   sudo vi ipsec.conf

После открытия, перейдите в режим редактирования: *i

Замените существующую конфигурацию следующими настройками:

 config setup
      protostack=netkey
      nat_traversal=yes
      virtual_private=%v4:10.0.0.0/16
      oe=off   include /etc/ipsec.d/*.conf

Выйдите и сохраните настройки: : x

Измените директорию ipsec.d и создайте новый файл amznazure.conf.

   cd ipsec.d
  sudo vi amznazure.conf

Содержимое amznazure.conf

 conn amznazure
   authby=secret
   auto=start
   type=tunnel
   left=10.0.0.28
   leftsubnet=10.0.0.0/16
   leftnexthop=%defaultroute
   right=[WINDOWS AZURE GATEWAY IP]
   rightsubnet=172.16.0.0/16
   ike=aes128-sha1-modp1024
   esp=aes128-sha1
   pfs=no

Примечания к этим параметрам:

  • left= локальный IP-address сервера Open Swan Server
  • leftsubnet= локальной адресное пространство серверов в VPC
  • right= IP-адрес шлюза Windows Azure VNET Gateway (замените на ваш)
  • rightsubnet= адресное пространство Windows Azure Virtual Network

После указания параметров настройки вы можете указать ключ аутентификации.

   cd /etc  
  sudo vi ipec.secrets

Добавьте сточку к файлу в следующем формате (не добавляйте []):

 10.0.0.28 [WINDOWS AZURE GATEWAY IP] : PSK "[WINDOWS AZURE GATEWAY KEY]"

Далее, включите IP forwarding в Open Swan VM:

 sudo vi /etc/sysctl.conf

Раскомментируйте строчку:

 net.ipv4.ip_forward=1

Примените новые настройки:

 sudo sysctl -p /etc/sysctl.conf

Далее, запретите проверку source / destination checking в сервере Open Swan.

change-source-dest-check

disable-source-dest-check

Настройте группы Security Groups для доступа траффика из Windows Azure

В консоли управления Amazon выберите Security Groups и -> amzn-azure-group.

Добавьте два дополнительных правила UDP inbound rules – одно для 500 и одно для 4500 с помощью Windows Azure GW IP с /32 CIDR.

amzn-security-group

  sudo service ipsec restart

Подключение виртуальной сети Windows Azure к Amazon AWS Virtual Private Cloud

amzn-azvnet-connected

Настройка маршрутизации

Причина использования программного решения VPN на стороне Amazon AWS состоит в том, что сетевой стек AWS поддерживает конфигурирование таблиц маршрутизации, тогда как Windows Azure этого (пока) не позволяет.

В панели управления Amazon вернитесь обратно к представлению VPC и выберите таблицы маршрутов. Выберите таблицу маршрута ассоциированную с вашим VPC и добавьте новый маршрут к 172.16.0.0/16 (Windows Azure Network) и это позволит маршрутизировать траффик через ID экземпляра сервера Open Swan.

Обновление информации о маршрутах

update-route-table

Создание экземпляров для тестирования связи

Создайте экземпляр AWS в подсети VPC.

launch-into-subnet

Запустите экземпляр в Windows Azure в созданной ранее виртуальной сети.

launch-into-vnet

В каждых экземплярах вам будет необходимо разрешить ICMP-правила для каждой VM, чтобы протестировать связь с помощью PING.

Пингуем Azure VM из Amazon VM через IPsec-туннель

ping-from-amzn

Пингуем Amazon VM из Azure VM через IPsec-туннель

ping-from-azure

Это все!

Теперь вы можете размещать приложения в Amazon AWS и Windows Azure и обеспечивать их связь между собой посредством безопасного IPsec-туннеля через интернет.

Это перевод оригинальной статьи Connecting Clouds – Creating a site-to-site Network with Amazon Web Services and Windows Azure