четверг, 22 сентября 2016 г.

Windows Azure Pack. Настройка Site-To-Site VPN на примере LibreSwan.

В сети достаточно примеров по настройке Site-to-Site VPN между инсталяцией Windows Azure Pack и Microsoft Azure, но отсутствует внятный мануал по конфигурированию соединения с инфраструктурой клиена. В данной статье мы настроим ipsec тоннель на примере LibreSwan, установленного на сервере OS Linux Centos 6.8, с тенантом хостинг-провайдера.



Нам необходимо настроить соединение ipsec по протоколу IKEv2. Авторизация по ключу PSK.

На первом шаге надо выполнить установку LibreSwan:

# yum -y install libreswan

Далее сгенерируем PSK ключ:

# openssl rand -base64 48

avRo9KALoZyCaPvPxnY7CKzWij/XhkY+lcrAxOvIkx4CsuOuegRcbTgkuNeuF6ZZ

Хоть PSK ключ не является паролем, очень важно, чтобы он не попал в руки злоумышленников. Поэтому вы должны быть точно уверены, что никто не перехватит его в момент передачи администратору подписки Windows Azure Pack и не получит в дальнейшем.

Вы так же можете сгенерировать этот ключ любым другим удобным вам способом. Можно просто набрать рандомно на клавиатуре. Рекомендуемая длина - 64 символа.

Теперь приступим к созданию конфигурационных файлов. Наша схема выглядит так:




В терминологии libreswan под "Left" подразумевается локальная среда, а под "Right" - удаленная. В нашем случае это тенант клиента Windows Azure Pack.

IP адрес шлюза WAP (NVGRE) можно посмотреть в настройках сети, для которой активирован NAT:



Конфигурационные файлы LibreSwan находятся в папке "/etc/ipsec.d/". Это файлы настроек (*.conf) и файлы с ключами (*.secrets).

Начнем с создания файла, содержащего PSK ключ, который мы сгенерировали выше:

#vim /etc/ipsec.d/wap.secrets

185.32.224.77 185.65.139.36 : PSK "hZ1stKdkSEHQBFL3izmNbo2h2naNuWBkPZzYVjmE+qtyNVpiI9ViFjD3NrcLXnoc"

В строке мы указали IP адреса, которые будем использовать для создания тоннеля (есть на схеме выше). Теперь создадим сам файл для настроек:

#vim /etc/ipsec.d/wap.config

config setup
    protostack=netkey
    secretsfile=/etc/ipsec.d/wap.secrets


conn WAP
        authby=secret
        auto=start
        dpdaction=restart
        dpddelay=30
        dpdtimeout=120
        ike=aes256-sha1;modp1024
        ikelifetime=10800s
        ikev2=yes
        keyingtries=3
        left=185.32.224.77
        leftid=185.32.224.77
        leftsubnets=10.70.245.0/24
        pfs=yes
        phase2alg=aes256-sha1;modp2048
        right=185.65.139.36
        rightid=185.65.139.36
        rightsubnets=192.168.3.0/24
        salifetime=3600s
        type=tunnel

Теперь настало время сконфигурировать VPN в Windows Azure Pack. Для этого переходим в настройки сети, выбираем меню "SITE-TO-SITE VPN" и создаем новое подключение. На необходимо указать публичный  IP клиентского роутера ("Left") и все его подсети, для которых будет работать маршрутизация:

 



Далее будет предложено настроить ширину канала для исходящий и входящих соединений - это остается на ваше усмотрение. Проверяем:


На этом настройка Windows Azure Pack завершена. Возвращаемся на наш сервер с LibreSwan и выполняем команды:

/etc/init.d/ipsec restart

ipsec auto --add Azure

ipsec auto --up Azure

После выполнения последней команды мы должны получить приблизительно такой вывод:

000 initiating all conns with alias='Azure'
002 "Azure/1x1" #4: initiating v2 parent SA
133 "Azure/1x1" #4: STATE_PARENT_I1: initiate
133 "Azure/1x1" #4: STATE_PARENT_I1: sent v2I1, expected v2R1
134 "Azure/1x1" #5: STATE_PARENT_I2: sent v2I2, expected v2R2 {auth=IKEv2 cipher=aes_256 integ=sha1_96 prf=sha group=MODP1024}
002 "Azure/1x1" #5: IKEv2 mode peer ID is ID_IPV4_ADDR: '185.65.139.36'
002 "Azure/1x1" #5: negotiated tunnel [192.168.3.0,192.168.3.255:0-65535 0] -> [10.70.245.0,10.70.245.255:0-65535 0]
004 "Azure/1x1" #5: STATE_PARENT_I3: PARENT SA established tunnel mode {ESP=>0xc1b6dcda <0x65878d30 dpd="active}</font" natd="none" natoa="none" xfrm="AES_256-HMAC_SHA1">

Посмотреть состояние соединения можно выполнив команду:

ipsec auto status

Теперь проверим, что VPN работает корректно, выполнив ping любого адреса из сети, с которой мы настроили соединение. Это можно выполнить, например, с сервера LibreSwan:

# ping -n -c 3 -I eth1 192.168.3.20

PING 192.168.3.20 (192.168.3.20) from 10.70.245.39 eth1: 56(84) bytes of data.
64 bytes from 192.168.3.20: icmp_seq=1 ttl=126 time=20.8 ms
64 bytes from 192.168.3.20: icmp_seq=2 ttl=126 time=24.8 ms
64 bytes from 192.168.3.20: icmp_seq=3 ttl=126 time=20.8 ms

--- 192.168.3.20 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2024ms
rtt min/avg/max/mdev = 20.812/22.174/24.855/1.903 ms

eth1 - это имя локального адаптера, на котором настроена подсеть из пункта в конфиге "leftsubnets".

Пример настройки ipsec на StrongSwan


6 комментариев:

  1. День добрый. Вы такое подключение, случаем не к облаку DeNoovo пробовали ?

    ОтветитьУдалить
    Ответы
    1. Добрый день.

      Нет, activecloud.ru

      Удалить
    2. та вроде у DeNovo то-же Windows Azure pack , но при подключении к ним по этому алгоритму не подключается..
      # ipsec auto --up denovo
      000 initiating all conns with alias='denovo'
      002 "denovo/6x1" #23: initiating v2 parent SA
      133 "denovo/6x1" #23: STATE_PARENT_I1: initiate
      002 "denovo/5x1" #24: initiating v2 parent SA
      133 "denovo/5x1" #24: STATE_PARENT_I1: initiate
      002 "denovo/4x1" #25: initiating v2 parent SA
      133 "denovo/4x1" #25: STATE_PARENT_I1: initiate
      002 "denovo/3x1" #26: initiating v2 parent SA
      133 "denovo/3x1" #26: STATE_PARENT_I1: initiate
      002 "denovo/2x1" #27: initiating v2 parent SA
      133 "denovo/2x1" #27: STATE_PARENT_I1: initiate
      002 "denovo/1x1" #28: initiating v2 parent SA
      133 "denovo/1x1" #28: STATE_PARENT_I1: initiate
      133 "denovo/6x1" #23: STATE_PARENT_I1: sent v2I1, expected v2R1
      133 "denovo/5x1" #24: STATE_PARENT_I1: sent v2I1, expected v2R1
      133 "denovo/4x1" #25: STATE_PARENT_I1: sent v2I1, expected v2R1
      133 "denovo/3x1" #26: STATE_PARENT_I1: sent v2I1, expected v2R1
      133 "denovo/2x1" #27: STATE_PARENT_I1: sent v2I1, expected v2R1
      133 "denovo/1x1" #28: STATE_PARENT_I1: sent v2I1, expected v2R1
      134 "denovo/6x1" #29: STATE_PARENT_I2: sent v2I2, expected v2R2 {auth=IKEv2 cipher=aes_256 integ=sha1_96 prf=sha group=MODP1024}
      003 "denovo/6x1" #29: missing payload(s) (ISAKMP_NEXT_v2SA+ISAKMP_NEXT_v2IDr+ISAKMP_NEXT_v2AUTH+ISAKMP_NEXT_v2TSi+ISAKMP_NEXT_v2TSr). Message dropped.
      207 "denovo/6x1" #29: STATE_PARENT_I2: v2N_INVALID_SYNTAX
      134 "denovo/5x1" #30: STATE_PARENT_I2: sent v2I2, expected v2R2 {auth=IKEv2 cipher=aes_256 integ=sha1_96 prf=sha group=MODP1024}
      003 "denovo/5x1" #30: missing payload(s) (ISAKMP_NEXT_v2SA+ISAKMP_NEXT_v2IDr+ISAKMP_NEXT_v2AUTH+ISAKMP_NEXT_v2TSi+ISAKMP_NEXT_v2TSr). Message dropped.
      207 "denovo/5x1" #30: STATE_PARENT_I2: v2N_INVALID_SYNTAX
      134 "denovo/4x1" #31: STATE_PARENT_I2: sent v2I2, expected v2R2 {auth=IKEv2 cipher=aes_256 integ=sha1_96 prf=sha group=MODP1024}
      003 "denovo/4x1" #31: missing payload(s) (ISAKMP_NEXT_v2SA+ISAKMP_NEXT_v2IDr+ISAKMP_NEXT_v2AUTH+ISAKMP_NEXT_v2TSi+ISAKMP_NEXT_v2TSr). Message dropped.
      207 "denovo/4x1" #31: STATE_PARENT_I2: v2N_INVALID_SYNTAX
      134 "denovo/3x1" #32: STATE_PARENT_I2: sent v2I2, expected v2R2 {auth=IKEv2 cipher=aes_256 integ=sha1_96 prf=sha group=MODP1024}
      003 "denovo/3x1" #32: missing payload(s) (ISAKMP_NEXT_v2SA+ISAKMP_NEXT_v2IDr+ISAKMP_NEXT_v2AUTH+ISAKMP_NEXT_v2TSi+ISAKMP_NEXT_v2TSr). Message dropped.
      207 "denovo/3x1" #32: STATE_PARENT_I2: v2N_INVALID_SYNTAX
      134 "denovo/2x1" #33: STATE_PARENT_I2: sent v2I2, expected v2R2 {auth=IKEv2 cipher=aes_256 integ=sha1_96 prf=sha group=MODP1024}
      134 "denovo/1x1" #34: STATE_PARENT_I2: sent v2I2, expected v2R2 {auth=IKEv2 cipher=aes_256 integ=sha1_96 prf=sha group=MODP1024}
      003 "denovo/2x1" #33: missing payload(s) (ISAKMP_NEXT_v2SA+ISAKMP_NEXT_v2IDr+ISAKMP_NEXT_v2AUTH+ISAKMP_NEXT_v2TSi+ISAKMP_NEXT_v2TSr). Message dropped.
      207 "denovo/2x1" #33: STATE_PARENT_I2: v2N_INVALID_SYNTAX
      003 "denovo/1x1" #34: missing payload(s) (ISAKMP_NEXT_v2SA+ISAKMP_NEXT_v2IDr+ISAKMP_NEXT_v2AUTH+ISAKMP_NEXT_v2TSi+ISAKMP_NEXT_v2TSr). Message dropped.
      207 "denovo/1x1" #34: STATE_PARENT_I2: v2N_INVALID_SYNTAX
      010 "denovo/6x1" #29: STATE_PARENT_I2: retransmission; will wait 500ms for response
      010 "denovo/5x1" #30: STATE_PARENT_I2: retransmission; will wait 500ms for response
      010 "denovo/4x1" #31: STATE_PARENT_I2: retransmission; will wait 500ms for response
      010 "denovo/3x1" #32: STATE_PARENT_I2: retransmission; will wait 500ms for response
      010 "denovo/2x1" #33: STATE_PARENT_I2: retransmission; will wait 500ms for response
      010 "denovo/1x1" #34: STATE_PARENT_I2: retransmission; will wait 500ms for response

      Удалить
  2. Можете, чего посоветовать ? :)

    ОтветитьУдалить
    Ответы
    1. У вашего облака плохая техподдержка? Или ее вообще нет?

      Не видя логов с их стороны, очень сложно диагностировать проблему.

      Удалить
  3. сейчас ответили - будут у себя экспериментировать

    спаисбо, за ответы.
    ;)

    ОтветитьУдалить