VPN везде и всюду: IPsec без L2TP со strongSwan

    image
    достаточно сильный лебедь

    Если вы когда-либо искали VPN, который будет работать на десктопах, мобильных устройствах и роутерах без установки дополнительного ПО и перепрошивки роутера, вы, вероятно, выбирали между PPTP и L2TP+IPsec. У протокола PPTP имеются проблемы с безопасностью и прохождением через брандмауеры и NAT, так что в 2015 году его уже использовать не стоит, а использование L2TP излишне, т.к. L2 VPN, по моему мнению, для обычного удаленного доступа не нужен практически никогда.

    Удивительно, что в интернете не так-то просто можно найти информацию о настройке чего-то помимо L2TP+IPsec в транспортном режиме, учитывая, что это обширный стек протоколов, который можно конфигурировать буквально как душе угодно, поэтому я попытаюсь устранить такое несовершенство мира.

    Небольшое введение в мир IPsec

    Вообще говоря, не совсем правильно называть IPsec VPN. IPsec не предназначен для построения «виртуальных частных сетей», а создан для шифрования или защиты от подмены передаваемых по IP данных. Это специальный слой поверх IP, который, в зависимости от режима и настроек, работает по-разному. В отличие от привычного VPN, который создает новый интерфейс в системе, на который вы, как это чаще всего бывает, назначаете IP-подсеть из диапазона частных адресов (т.е. создаете новый сетевой сегмент), и через который маршрутизируется трафик в зашифрованном виде, IPsec просто шифрует трафик магическим образом между «внешними» интерфейсами сервера и клиента.

    В современном IPsec используются:
    • Authentication Header (AH) — протокол, обеспечивающий аутентификацию отправителя и целостность данных. Подписывает не только данные пакета, но и все заголовки, кроме изменяемых полей (ToS, TTL, чексумма).
    • Encapsulating Security Payload (ESP) — протокол, обеспечивающий аутентификацию, целостность и конфиденциальность
    • Security Association (SA) — параметр с настройками шифрования канала
    • Internet Key Exchange (IKE и IKEv2) — протокол обмена параметрами, настройками и согласования SA

    AH и ESP — транспортные протоколы, инкапсулируемые прямо в IP, имеющие собственные значение для поля Protocol в IP-заголовке. В современном мире, где NAT стоит за NAT у NAT с NAT'ом, следует использовать что-то более привычное, поэтому сейчас повсеместно используется инкапсуляция ESP-пакетов в UDP. AH не поддерживает работу через NAT.

    Сам IPsec поддерживает работу в двух режимах:
    • Транспортный режим. Подписывает заголовки и данные (если AH) или подписывает и шифрует данные (если ESP) пакета. Не скрывает IP-адрес получателя пакета, если он маршрутизируется. Этот режим используется для связки L2TP+IPsec.
    • Туннельный режим. Подписывает (если AH) и еще шифрует (если ESP) весь пакет.

    Протокол IKE позволяет проводить аутентификацию клиента с использованием X.509-сертификатов, Pre-Shared Key и Extensible Authentication Protocol (EAP). Поддерживается двухэтапная аутентификация.

    Все современные десктопные ОС (Windows Vista/7/8/8.1, OS X, Linux), мобильные устройства (Android, iOS, Windows Phone, Blackberry) и некоторые роутеры поддерживают VPN с использованием IPsec ESP в туннельном режиме и его настройкой через протокол Internet Key Exchange (IKE) версии 1 или 2, а значит IPsec мы именно так и будем настраивать.

    Кстати, писать правильно IPsec, но Cisco IPSec.

    IPsec в Linux

    Сам IPsec (AH/ESP, SA) работает в ядре, поэтому нам нужен IKE-демон для передачи настроек подключающимся клиентам. Их довольно много, но полноценных и активных на данный момент всего два: strongSwan и libreswan. Вторым я не пользовался, ничего сказать о нем не могу, зато первый — прекрасный и удивительный, к тому же, это единственный демон, у которого есть своя userspace-реализация IPsec, поэтому его можно использовать в контейнерах OpenVZ со старым, как динозавры, ядром 2.6.32 с поломанной поддержкой маршрутизации IPsec.
    Немного об IPsec в OpenVZ
    В OpenVZ есть поддержка IPsec, и она вполне себе годна для запуска L2TP+IPsec, но там что-то явно не так с маршрутизацией на не-локальные интерфейсы. Вероятно, это можно починить добавлением пары правил на хостовую машину, но это довольно проблематично, если у вас нет доступа к ней, как бывает во подавляющем большинстве случаев. Поэтому для OpenVZ необходимо использовать userspace IPsec, который можно собрать параметром --enable-kernel-libipsec

    Упоминания о баге:
    lists.strongswan.org/pipermail/users/2014-February/005822.html
    bugzilla.redhat.com/show_bug.cgi?id=1081804
    forum.openvz.org/index.php?t=tree&goto=39937
    lowendtalk.com/discussion/33226/need-someone-to-test-ipsec-on-their-boxes

    Нам потребуется strongSwan версии минимум 5.0.0. Я рекомендую использовать версию не ниже 5.2.0, т.к. именно в этой версии появилась утилита «swanctl», которая заметно удобней старой «ipsec». Утилита потребуется, по большому счету, только для вывода какой-то информации или статистики, она не обязательна для настройки и можно обойтись только ipsec, но в статье будет использоваться только она.
    Скрытый текст
    Жизнь со swanctl:
    image

    Жизнь без swanctl:
    image

    Нам могут потребоваться некоторые модули, которых может не быть в стандартной поставке:
    • xauth-noauth — поддельный аутентификатор, позволяет вводить любой логин и пароль. Нужен для iPhone и iPad при аутентификации только по ключам, т.к. там нет возможности отключить аутентификацию по логину и паролю.
    • vici — интерфейс для swanctl.
    • libipsec — для userspace IPsec (для OpenVZ и, возможно, других контейнеров).

    Если вас не смущает необходимость вводить логин и пароль на iPhone, вам не нужен swanctl и вы не собираетесь запускать это все в OpenVZ-контейнере, то и пересобирать ничего не нужно.
    К большому сожалению, мейнтейнеры strongSwan в Debian не запаковали ничего из этого (на февраль 2015), поэтому я сделал патчик, который вы можете использовать.

    Переходим к настройке

    Будем настраивать подключение через IKEv2 (Windows, Linux, Blackberry), IKEv1+XAUTH (iOS, OS X, Android) и IKEv2+EAP-TLS (Windows Phone). Используем ключи, никаких PSK!
    Разработчики strongSwan предлагают нам использовать команду «ipsec pki» для генерации ключей, но она настолько же неудобная, насколько и обычный openssl, поэтому я адаптировал Easy-RSA v3 из OpenVPN для генерации как OpenVPN, так и IPsec-совместимых ключей. С ним вы можете использовать одну связку ключей для двух протоколов!
    github.com/ValdikSS/easy-rsa-ipsec
    Easy-RSA чрезвычайно простой, поддерживать PKI-инфраструктуру с ним одно удовольствие!

    Итак, инициализируем PKI и создаем CA, серверный и клиентский ключи. Важно, чтобы название серверного ключа совпадало с FQDN (доменом, проще говоря) вашего сервера!
    $ git clone https://github.com/ValdikSS/easy-rsa-ipsec.git
    $ cd easy-rsa-ipsec/easyrsa3
    $ ./easyrsa init-pki
    
    init-pki complete; you may now create a CA or requests.
    
    $ ./easyrsa build-ca nopass
    Generating a 2048 bit RSA private key
    …
    Common Name (eg: your user, host, or server name) [Easy-RSA CA]:IPsec CA
    …
    
    $ ./easyrsa build-server-full uk1.pvpn.pw nopass
    Generating a 2048 bit RSA private key
    …
    Write out database with 1 new entries
    Data Base Updated
    
    $ ./easyrsa build-client-full client1 nopass    
    Generating a 2048 bit RSA private key
    …
    Write out database with 1 new entries
    Data Base Updated
    
    $ ./easyrsa export-p12 client1 nopass
    Successful export of p12 file. Your exported file is at the following
    location…

    Ключи сгенерированы. Я добавлял параметр nopass на каждом шагу, чтобы ключи не были защищены паролем (его можно установить позже в любое время).

    Теперь нам необходимо скопировать их в нужные директории внутри /etc/ipsec.d/, чтобы strongSwan нашел их:
    # cp pki/ca.crt /etc/ipsec.d/cacerts/
    # cp pki/issued/uk1.pvpn.pw.crt /etc/ipsec.d/certs/
    # cp pki/private/uk1.pvpn.pw.key /etc/ipsec.d/private/

    Переходим к настройке strongSwan!
    Первым делом, указываем наш приватный ключ в /etc/ipsec.secrets
    # This file holds shared secrets or RSA private keys for authentication.
    
    # RSA private key for this host, authenticating it to any other host
    # which knows the public part.
    
    # this file is managed with debconf and will contain the automatically created private key
    include /var/lib/strongswan/ipsec.secrets.inc
    
    : RSA uk1.pvpn.pw.key

    Редактируем конфигурационный файл /etc/ipsec.conf
    # ipsec.conf - strongSwan IPsec configuration file
    
    # basic configuration
    
    config setup
    	# strictcrlpolicy=yes
    	# uniqueids = no
    
    include /var/lib/strongswan/ipsec.conf.inc
    
    conn %default
    	dpdaction=clear
    	dpddelay=35s
    	dpdtimeout=300s
    
    	fragmentation=yes
    	rekey=no
    
    	ike=aes256gcm16-aes256gcm12-aes128gcm16-aes128gcm12-sha256-sha1-modp2048-modp4096-modp1024,aes256-aes128-sha256-sha1-modp2048-modp4096-modp1024,3des-sha1-modp1024!
    
    	esp=aes128gcm12-aes128gcm16-aes256gcm12-aes256gcm16-modp2048-modp4096-modp1024,aes128-aes256-sha1-sha256-modp2048-modp4096-modp1024,aes128-sha1-modp2048,aes128-sha1-modp1024,3des-sha1-modp1024,aes128-aes256-sha1-sha256,aes128-sha1,3des-sha1!
    
    	# left - local (server) side
    	left=%any
    	leftauth=pubkey
    	leftcert=uk1.pvpn.pw.crt
    	leftsendcert=always
    	leftsubnet=0.0.0.0/0,::/0
    
    	# right - remote (client) side
    	right=%any
    	rightauth=pubkey
    	rightsourceip=192.168.103.0/24,2002:25f7:7489:3::/112
    	rightdns=8.8.8.8,2001:4860:4860::8888
    
    conn ikev2-pubkey
    	keyexchange=ikev2
    	auto=add
    
    conn ikev2-pubkey-osx
    	also="ikev2-pubkey"
    	leftid=uk1.pvpn.pw
    
    conn ikev1-fakexauth
    	keyexchange=ikev1
    	rightauth2=xauth-noauth
    	auto=add
    
    conn ikev2-eap-tls
    	also="ikev2-pubkey"
    	rightauth=eap-tls
    	eap_identity=%identity

    Как видите, конфигурационный файл состоит из нескольких секций. В секции config setup два закомментированных параметра: strictcrlpolicy = yes будет требовать неистекший лист отзывов для проведения аутентификации клиента, а uniqueids = no позволяет подключаться нескольким клиентам с одним сертификатом одновременно.
    Далее идут секции с описаниями подключений. Секция с названием %default описывает подключение по умолчанию, от которого будут наследоваться другие подключения. Здесь устанавливаются следующие параметры:
    • dpdaction=clear включает механизм Dead Peer Detection (DPD) и указывает, что нужно забывать о клиенте, если он не отзывался дольше таймаута
    • dpddelay=35s — задержка до включения DPD
    • dpdtimeout=300s — таймаут для DPD
    • fragmentation=yes — включение внутренней фрагментации пакетов. Позволяет использовать IPsec с провайдерами, у которых сломана IP-фрагментация пакетов (привет, мобильный МТС!)
    • rekey=no — выключение инициации смены ключей со стороны сервера. Windows это не любит.
    • ike — перечень ciphersuites для использования с IKE (т.е. во время установки шифрованного соединения для передачи конфигурационных параметров, в том числе и ключей для установки SA)
    • esp — перечень ciphersuites для шифрования трафика
    • left и right — случаем все интерфейсы и принимаем всех клиентов
    • leftid — указываем наш FQDN. Нужно для сломанного IKEv2 в OS X El Capitan
    • leftauth/rightauth=pubkey — используем аутентификацию по ключам
    • leftsubnet — подсети, которые мы отправляем клиенту для маршрутизации (весь IPv4 и IPv6-интернет). Уберите IPv6, если не используете его.
    • rightsourceip — пул IP-адресов, из которого выдаем адрес клиенту. Уберите IPv6, если не используете его.
    • rightdns — IP-адреса DNS-серверов

    Давайте разберемся с ciphersuites в ike и esp. Здесь перечислены методы шифрования в порядке убывания приоритета, и их так много из-за того, что некоторые из них могут быть недоступны на каких-то устройствах, например, мобильных. Первым делом идут так называемые AEAD-алгоритмы, т.е. такие шифры, которые не требуют отдельного алгоритма для аутентификации, с убывающей группой Диффи-Хеллмана для реализации Perfect Forward Secrecy (PFS). Это самые быстрые шифры, которые доступны в IPsec. Хоть это и AEAD-режим, в ike должны быть алгоритмы хеширования для процесса хендшейка. Затем идет привычный AES-CBC с группами Диффи-Хеллмана. Клиентам, которые не поддерживают PFS, мы не позволим подключиться.

    Если у вас нет модуля xauth-noauth для соединения ikev1-fakexauth, то вы можете заменить его просто на xauth и создать пользователя в /etc/ipsec.secrets, например, с логином и паролем client1:
    client1 : XAUTH "client1"

    Теперь у нас есть три подключения: ikev2-pubkey для IKEv2, ikev1-fakexauth для IKEv1 с фейковой проверкой логина и пароля и ikev2-eap-tls — IKEv2+EAP-TLS для Windows Phone. Перезапускаем strongSwan.

    Если все верно, вы увидите следующий вывод команды swanctl -L
    $ swanctl -L
    ikev2-pubkey: IKEv2
      local:  %any
      remote: %any
      local public key authentication:
        id: CN=uk1.pvpn.pw
        certs: CN=uk1.pvpn.pw
      remote public key authentication:
      ikev2-pubkey: TUNNEL
        local:  0.0.0.0/0 2000::/3
        remote: dynamic
    ikev1-fakexauth: IKEv1
      local:  %any
      remote: %any
      local public key authentication:
        id: CN=uk1.pvpn.pw
        certs: CN=uk1.pvpn.pw
      remote public key authentication:
      remote XAuth authentication:
      ikev1-fakexauth: TUNNEL
        local:  0.0.0.0/0 2000::/3
        remote: dynamic
    ikev2-eap-tls: IKEv2
      local:  %any
      remote: %any
      local public key authentication:
        id: CN=uk1.pvpn.pw
        certs: CN=uk1.pvpn.pw
      remote EAP authentication:
      ikev2-eap-tls: TUNNEL
        local:  0.0.0.0/0 2000::/3
        remote: dynamic

    Проблемы MTU

    Из-за особенностей и ошибок в реализации разных IPsec-клиентов, MTU внутри туннеля нельзя угадать заранее, а на Android вообще устанавливается MTU 1500, из-за чего большие пакеты не передаются и вообще ничего не работает. Чтобы нивелировать этот недостаток, достаточно изменять параметр TCP MSS в момент установки TCP-соединения на стороне сервера. Будем использовать значение 1360 для IPv4 и 1340 для IPv6, чтобы размер пакета не превышал 1400 байт внутри туннеля:
    # iptables -t mangle -I FORWARD -p tcp -m policy --pol ipsec --dir in --syn -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
    # iptables -t mangle -I FORWARD -p tcp -m policy --pol ipsec --dir out --syn -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
    # ip6tables -t mangle -I FORWARD -p tcp -m policy --pol ipsec --dir in --syn -m tcpmss --mss 1341:1536 -j TCPMSS --set-mss 1340
    # ip6tables -t mangle -I FORWARD -p tcp -m policy --pol ipsec --dir out --syn -m tcpmss --mss 1341:1536 -j TCPMSS --set-mss 1340

    На этом настройка сервера закончена. Не забудьте настроить NAT, если вам он нужен!

    Настройка клиентов

    Алгоритм настройки клиентов в общих чертах заключается в импорте сертификатов из файла *.p12, создании нового подключения с типом IPsec PKI, IPsec XAUTH RSA или IKEv2 (в зависимости от устройства), указания клиентского сертификата и адреса сервера.
    Внимание! Нужно вводить именно тот адрес сервера, который вы вводили при создании серверного ключа. Подключиться по другому домену или просто по IP-адресу, если сертификат был сгенерирован на домен, не получится!

    Windows

    Windows 7, 8, 8.1 (IKEv2)
    Установка сертификатов
    Создание соединения
    Подключение

    Windows Vista (IKE)
    IKE на Windows Vista

    OS X и iOS

    Настройка подключения на iOS и OS X

    Android

    Вы можете использовать как IPsec-клиент Android и подключаться по протоколу IKE, так и клиент strongSwan и использовать IKEv2. Клиент strongSwan работает стабильнее и надежно переподключает в случае потери соединения.

    Импортируйте сертификат либо через файловый менеджер, либо используя пункт «Установка с SD-карты» в разделе «Безопасность». Перейдите в настройки VPN, создайте новое подключение с типом «IPSec Xauth RSA», в поле «Адрес сервера» впишите, собственно, адрес сервера, в поле «Сертификат пользователя IPSec» и «Сертификат ЦС IPSec» укажите сертификат «client1». Нажмите на соединение, введите любые логин и пароль и попробуйте подключиться.

    Заключение

    IPsec, по моему мнению, является замечательной альтернативой OpenVPN, который любят многие администраторы. Почему большинство VPN-провайдеров все еще используют L2TP+IPsec для меня остается загадкой, т.к. strongSwan предоставляет всю необходимую функциональность для такого рода серивисов (полная поддержка Radius, море плагинов). Я использую strongSwan на своем сервисе уже около полугода в режиме закрытого тестирования и он оставил о себе исключительно положительные впечатления.
    IPsec, как я уже говорил, очень гибкий и поддерживает уйму аутентификаторов, поэтому вы можете делать даже такие сумасшедшие вещи, как аутентификация по SIM-карте в мобильном устройстве и хранение публичных ключей в IPSECKEY-записи домена, защищенной DNSSEC.
    Если вы боитесь использовать IPsec из-за документов NSA, которые опубликовывал Эдвард Сноуден, пожалуйста, прочитайте статью Don’t stop using IPsec just yet, чтобы развеять сомнения.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 156
    • 0
      Было бы здорово, если бы кто-то написал инструкцию по настройке подключения на современных Blackberry.

      cast bougakov
      • 0
        Спасибо. К сожалению, вы ошиблись — я любитель WP, а инструкциями для blackberry приходилось пользоваться за неимением других. Но я знаю, где найти подопытного кролика, stay tuned.
        • 0
          Я опоздал на 2 года и BlackBerry 10 уже при смерти, но вот :D
          Инструкция в одном скриншоте

      • +1
        А чем так плохо использовать PSK? Лениво мне файлы какие-то раздавать, намного проще выдать логин, пароль,PSK.
        • 0
          Все равно придется установить CA в устройство, чтобы защититься от MITM, ну или публичный ключ засовывать в IPSECKEY, но это малое количество клиентов поддерживают. Да и логины-пароли мне никогда не нравились, ключ в качестве средства аутентификации, я считаю, много лучше.
          • 0
            Все равно придется установить CA в устройство

            Зачем? Иначе не избежать mitm?

            Я-то как раз люблю ipsec за то что настройках на Android/ios/macos занимает пару секунд. Нет ничего проще для ios, вбил четыре значения и готово:

            image

            А сертификаты генерировать, расшаривать, устанавливать.

            • 0
              Зачем? Иначе не избежать mitm?
              Нет, прошу прощения, я был неправ. CA устанавливать не нужно, т.к. никаких ключей-то нет. Но в случае PSK, злоумышленник, перехватив ваш трафик, может поймать процесс хендшейка и побрутить ваш PSK (см. Don’t stop using IPsec just yet), чего он сделать с использованием ключей не сможет. Ну и, конечно же, это совершенно не подходит для защиты публичных сервисов, т.к. здесь, как раз, можно сделать MITM (если PSK известный и один на всех).

              Кстати, можно использовать не только RSA, но и ECDSA-ключи.
              • 0
                Только в OS X не работает split-dns и не поддерживает IKEv2, который защищён от MitM благодаря серверному сертификату.
                • +1
                  Уже почти поддерживает
                  www.ietf.org/mail-archive/web/ipsec/current/msg09931.html
                  • 0
                    Круто, спасибо за информацию!
                    • 0
                      В homebrew всегда актуальный strongswan, правда он крашится при попытке создать ipv6 интерфейс, но с ipv4 работает не плохо.
                    • 0
                      Главное чтобы в этот раз они нормально сделали split-tunnel, а то после Lion он перестал работать. Вы случайно не в курсе, стандарт эту штуку предусматривает?
              • 0
                Может кто подскажет, как завести родной IKEv2 клиент Windows 7> вообще без ключей?
                Клиент без проблем авторизируется с
                rightauth=eap-mschapv2

                А вот сервер только с
                leftauth=pubkey

                Попытки вписать туда чего-то другое приводят к ошибкам (о не поддерживаемости такого типа авторизации), а с psk соединение в винде зависает на моменте проверки имени/пароля, не отменяется, лечится перезагрузкой!
              • 0
                Влад, спасибо. Как раз на днях раздумывал чем же поудобнее и поуниверсальнее реализовать впн для личных нужд. По традиции я буду это делать именно под OpenVZ на 2.6.32 :)
                Пара вопросов:
                — насколько IPSec критичен к качеству канала?
                — насколько большой оверхэд относительно других методов?
                • +2
                  — насколько IPSec критичен к качеству канала?
                  Я бы не сказал, что критичен. В IKEv2 есть механизм MOBIKE, который реализует мультихоминг и роуминг, так что переподключения вообще практически незаметны.
                  — насколько большой оверхэд относительно других методов?
                  Приблизительно такой же, как у OpenVPN, т.е. 8+20+20+16+2+12=78, ну и еще padding, получается где-то 80-90 байт.
                  • 0
                    Посмотрел подробнее — на маке все очень печально. Из коробки только IKEv1. У strongSwan есть приложение на мак, но у меня оно не запускается, возможно потому, что в требованиях указаны OS X 10.7 и 10.8, а актуальные сейчас 10.9 и 10.10. Остается только вариант ставить strongSwan из портов и настраивать все вручную, что на клиенте бы не очень хотелось. Да и даже в этом случае MOBIKE не поддерживается полностью из-за ограничений ядра.
              • 0
                А вы не использовали SoftEther VPN?
                Интересно сравнение производительности.
                • +1
                  Использовал, он мне не нравится. Как проект он классный, но CLI-утилиты для управления неудобные, конфигурационные файлы непонятные, приходится GUI использовать. К тому же, он не поддерживает сертификаты нигде, кроме своего собственного протокола, и не поддерживает IKEv2.
                • 0
                  альтернативой OpenVPN, который любят многие администраторы
                  Я люблю OpenVPN за то, что он ходит через прокси, включая HTTP-прокси, это его самое-самое большое преимущество, IMHO.
                  • 0
                    О да, эта фича нереально крута. Помню в универе юзал OpenVPN через прокси, на котором были разрешены только порты 80 и 443.
                    В итоге имел полноценный доступ в инет без необходимости прописывать везде прокси.
                  • 0
                    ValdikSS а приходилось ли делать ipsec failover? Если приходилось не прошу запилить пост об ipsec HA.
                    На железках типо Juniper SRX или Cisco это делается достаточно просто. А вот на Linux так до конца и не раскурил… Может чего посоветуете.
                    Интересует следующий случай:
                    с одной стороны стоит Juniper с двумя независимыми интернетами с другой стороны Linux. Между ними ipsec туннель, не могу понять как сделать так что если один ISP не работал со стороны Juniper туннель поднимался через другой ISP.
                    • 0
                      поднять два тоннеля, выбирать нужный посредством динамической маршрутизации?
                      • 0
                        Мне не приходилось, но вот здесь есть подробная инструкция, правда, не только для failover, но и для бондинга каналов: wiki.strongswan.org/projects/strongswan/wiki/HighAvailability
                        Вообще, должно заработать без всяких настроек, если включен MOBIKE и используется IKEv2.
                      • +1
                        Дома за натом 4 устройства (два ноутбука и два мобильных телефона). IPSec настраивал, работает только для одного устройства. OpenVPN заработал без проблем.
                        • 0
                          Их довольно много, но полноценных и активных на данный момент всего два: strongSwan и libreswan. Вторым я не пользовался, ничего сказать о нем не могу, зато первый — прекрасный и удивительный,
                          Второй конечно менее функциональный, и хуже документирован, но в некоторых случая работает лучше. Например, стабильное и непадающее соединение к Dell SonicWALL у меня получилось поднять только на нём. Дальше, недавно словил багу в strongSwan, когда в процессе rekey-инга соединение падает. Как оказалось, открытый, и очень редкий баг. Race condition. Лечится отключением оного.
                          • 0
                            А в чём преимущество перед OpenVPN? Я так понимаю, основное теоретически в том, что IPsec поддерживается «из коробки», но, судя по комментариям, теория и практика опять сильно отличаются… и тогда становится совсем не понятно, чего ради связываться с IPsec.
                            • 0
                              Есть устройства, например, Blackberry и Windows Phone, для которых нет клиента OpenVPN. Ну и роутеры.
                              • 0
                                Клиент OpenVPN для Windows Phone вроде бы есть.

                                Что касается роутеров — для OpenWRT есть пакет openvpn (только что посмотрел), для цисковских роутеров тоже есть поддержка (не факт, конечно, что для всех моделей), а для основной массы домашних «коробочек» владельцы которых не настолько сильно волнуются о безопасности чтобы ставить openwrt — сойдёт и pptp, потому что и ключ и сертификат для ipsec у них при желании всё-равно украдут прямо с роутера.
                                • 0
                                  Это Windows Mobile, а не Phone. Старая ОС, которая еще до Android была. Я этим клиентом на HTC Herald пользовался, да и сейчас иногда.

                                  Зачем использовать PPTP, когда есть IPsec?
                                  • 0
                                    А можно ссылку про OpenVPN на Cisco?
                              • 0
                                Как и хабраюзер vsb, я ушёл со StrongSWAN на OpenVPN (вот сегодня как раз закончил миграцию). StrongSWAN у меня прожил добрых два года и вот месяц назад я принял волевое решение поиска альтернативы.

                                Какие уроки я выучил:
                                1. StrongSWAN очень гибок — просто масса вариантов выстрелить себе в ногу.
                                2. Клиенты для StrongSWAN есть большие и разные и у каждого свои тараканы
                                  • iOS поддерживает только IKEv1
                                  • Android и iOS не поддерживают ECDSA и прочие радости жизни (только RSA), поэтому уже было настроив всё я был вынужден пересоздавать PKI ибо у меня даже CA был на ECDSA
                                  • iOS поддерживает только SHA1 в качестве хеш-функции (и снова я пересоздавал PKI...)
                                  • для iOS пришлось всё равно пересобрать сервер StrongSWAN с патчем xauth-noauth (как описано в статье)
                                  • и снова iOS — несмотря на то, что я собрал CA сертификат, сертификат пользователя и ключ пользователя в .p12 — сертификат СА пришлось импортировать отдельно...
                                3. Дальше я нашёл себе другую проблему — чтобы была возможность подключиться нескольким клиентам за одним NAT нужно сделать локальную ноду, к которой будут подключаться клиенты локальной сети, или станцевать вокруг роутера, а именно, отключить VPN passthrough (этот способ я не испытал на себе). По большому счёту — это не вина StrongSWAN или протокола, просто у него другие задачи.
                                4. И последнее — 500 UDP, 4500 UDP — эти два порта нельзя (можно, но с перекомпиляцией) сконфигурировать и как-то у меня так по жизни сожилось, что я попадал в сети, где по каким-либо причинам, но хотябы один порт, да был закрыт. И тут я тоже не обошёл грабли — сначала я пересобрал StrongSWAN с другими портами, а потом понял, что для Android прийдётся клиента тоже пересобирать… (а для iOS и вообще ничего позитивного не обещили в этом плане).


                                Я не хочу сказать, что StrongSWAN хуже OpenVPN! Просто он под другие задачи и высказывание:
                                IPsec, по моему мнению, является замечательной альтернативой OpenVPN, который любят многие администраторы. Почему большинство VPN-провайдеров все еще используют L2TP+IPsec для меня остается загадкой, т.к. strongSwan предоставляет всю необходимую функциональность для такого рода серивисов

                                не есть корректным из-за проблемности NAT. Я не слышал о VPN-провайдерах, которые бы использовали IPsec, думаю из-за вышеизложенных проблем.

                                Для чего нужен StrongSWAN? Для построения инфраструктуры, когда у вас есть чётко выраженные шлюзы. Например, соединить N датацентров.

                                Я бы не рекомендовал использовать StrongSWAN на конечных устройствах — это доставляет очень много боли.
                                • +1
                                  iOS поддерживает только IKEv1
                                  iOS 8 поддерживает IKEv2, но только через провизинг, через интерфейс нельзя настроить.
                                  Android и iOS не поддерживают ECDSA и прочие радости жизни (только RSA), поэтому уже было настроив всё я был вынужден пересоздавать PKI ибо у меня даже CA был на ECDSA
                                  Но, ведь, и актуальная версия OpenVPN тоже не поддерживает ECDSA.
                                  iOS поддерживает только SHA1 в качестве хеш-функции (и снова я пересоздавал PKI...)
                                  Точно не уверен, нужно уточнить. Тестировали, вроде, на iOS 8, работал сертификат с SHA256.
                                  для iOS пришлось всё равно пересобрать сервер StrongSWAN с патчем xauth-noauth (как описано в статье)
                                  Вот это действительно неудобство, согласен
                                  и снова iOS — несмотря на то, что я собрал CA сертификат, сертификат пользователя и ключ пользователя в .p12 — сертификат СА пришлось импортировать отдельно...
                                  Известный баг, к сожалению. Об этом написано в wiki strongSwan.

                                  По поводу пункта 3 ничего сказать не могу, я использую IPsec исключительно через UDP-инкапсуляцию, и не сталкивался с проблемами, описанными вами в пункте 4. Быть может, проблема из-за фрагментации была?

                                  Я не призываю использовать исключительно IPsec. Действительно, почти везде практичней использовать OpenVPN, т.к. у него больше шансов заработать в зафильтрованных сетях, но для многих является плюсом то, что соединение можно настроить через стандартные средства ОС.

                                  К слову, VPN-сервисов с L2TP+IPsec полно.
                                  • 0
                                    iOS 8 поддерживает IKEv2, но только через провизинг, через интерфейс нельзя настроить.

                                    «Очень удобно»…

                                    Точно не уверен, нужно уточнить. Тестировали, вроде, на iOS 8, работал сертификат с SHA256.

                                    Я на iOS 8.0 тогда настраивал, так что если и добавили, то в 8.1+

                                    По поводу пункта 3 ничего сказать не могу, я использую IPsec исключительно через UDP-инкапсуляцию, и не сталкивался с проблемами, описанными вами в пункте 4. Быть может, проблема из-за фрагментации была?

                                    Да, я тоже использую UDP и грабли разложены в двух местах:
                                    1. фрагментация
                                    2. Некоторые роутеры настроены по умолчанию для VPN пакетов заменять только source IP, таким образом от двух клиентов за NAT приходят «неотличимые» запросы и когда приходит ответ NAT отвечает только одному клиенту
                                    3. А ещё в 5.1.0 исправили политики для IKEv1, что привело работающие решения в неработающие.
                                    • 0
                                      Некоторые роутеры настроены по умолчанию для VPN пакетов заменять только source IP, таким образом от двух клиентов за NAT приходят «неотличимые» запросы и когда приходит ответ NAT отвечает только одному клиенту
                                      В рассылке говорится о L2TP+IPsec, а он работает в транспортном режиме, а не туннельном, но раз вы говорите, что отказались от IPsec из-за этой проблемы, то она, вероятно, частая, хоть я с ней (пока) не сталкивался.
                                      • 0
                                        В iOS ≥ 9 сделали нормальный ikev2.
                                  • 0
                                    Спасибо огромное за статью, давно ждал именно этой темы. Какое-то время назад для себя настраивал туннель по wiki проекта в связи с тем, что Windows Phone в первую очередь появилась поддержка только IKEv2. В процессе чего обнаружил несколько важных моментов, применимых к windows-клиентам (настраивал PSK авторизацию):
                                    1. Серверный сертификат должен обладать x509 v3 extension IKE-посредника(1.3.6.1.5.5.8.2.2).
                                    2. CA сертификат от серверного должен присутствовать на клиенте. Self-signed, насколько я помню, не подходил.

                                    Вдруг это кому-нибудь поможет.
                                    А еще хотелось бы попросить, показать или указать на материалы, как правильно дать доступ из тоннеля во внешнюю сеть, и еще разрешить клиентам обмениваться данными между собой. Потому что использовать следующее, как вариант решения первой проблемы, вроде бы абсолютно неправильно:
                                    iptables -t nat -A POSTROUTING -j MASQUERADE

                                    Спасибо!
                                    • +1
                                      Серверный сертификат должен обладать x509 v3 extension IKE-посредника(1.3.6.1.5.5.8.2.2).
                                      Это очень, очень старый EKU. Мы с разработчиком Easy-RSA и ребятами из #strongswan@freenode, после чтения RFC, сошлись во мнении, что нужно использовать 1.3.6.1.5.5.7.3.17. Работает, вроде бы, везде, кроме старых OS X. Я вот не помню, проверял ли я на Windows Phone, но на iOS, Windows, Linux и Android работает точно. easy-rsa-ipsec генерирует именно такие сертификаты.

                                      CA сертификат от серверного должен присутствовать на клиенте. Self-signed, насколько я помню, не подходил.
                                      Мы тестировали на Windows Phone 8, все замечательно работало с Self-Signed CA, естественно, предварительно импортированным. Забавно то, что в Windows Phone удалить импортированные сертификаты нельзя, там их теперь буквально куча.

                                      А еще хотелось бы попросить, показать или указать на материалы, как правильно дать доступ из тоннеля во внешнюю сеть, и еще разрешить клиентам обмениваться данными между собой.
                                      iptables -m policy --pol ipsec выбирает трафик уже после расшифровывания, поэтому рекомендую использовать что-то вроде:
                                      # iptables -t nat -I POSTROUTING -m policy --pol ipsec --dir out -j MASQUERADE
                                      Можете еще дополнительно фильтровать по интерфейсам или диапазонам.

                                      Потому что использовать следующее, как вариант решения первой проблемы, вроде бы абсолютно неправильно
                                      Я рассказывал об этом в статье «Как IPv6 помогает роутеры ломать»
                                    • +1
                                      Эх, нету счастья.

                                      Во-первых, версия 5.2, которую вы обсуждаете, отсуствует в репозиториях (например, для Ubuntu 14 LTS, которой я пользуюсь на Amazon AWS).

                                      Во-вторых, у вас в /etc/ipsec.conf ошибка с отступами в районе строки №16, которая не даёт запустить сервис.

                                      В третьих, вы экспортируете ключ в формате p12, который не кушает Windows Phone (ему cer подавай).

                                      В четвёртых, на Windows 8.1 при попытке подключения выдаёт

                                      Error Code: 13801

                                      Error Description: 13801: IKE authentication credentials are unacceptable.

                                      Possible Causes: This error usually comes in one of the following cases:

                                      1.The machine certificate used for IKEv2 validation on RAS Server does not have 'Server Authentication' as the EKU (Enhanced Key Usage). 
                                      2.The machine certificate on RAS server has expired. 
                                      3.The root certificate to validate the RAS server certificate is not present on the client. 
                                      4.VPN Server Name as given on client doesn’t match with the subjectName of the server certificate. 


                                      Если запустить ipsec с ключом --nofork, получаем на экране

                                      05[CFG] selected peer config 'ikev2-pubkey'
                                      05[CFG]   using certificate "CN=client1"
                                      05[CFG]   using trusted ca certificate "CN=IPSec CA"
                                      05[CFG] checking certificate status of "CN=client1"
                                      05[CFG] certificate status is not available
                                      05[CFG]   reached self-signed root ca with a path length of 0
                                      05[IKE] authentication of 'CN=client1' with RSA signature successful
                                      05[IKE] peer supports MOBIKE
                                      05[IKE] no private key found for 'CN=aws.bougakov.com'
                                      05[ENC] generating IKE_AUTH response 1 [ N(AUTH_FAILED) ]
                                      05[NET] sending packet: from 172.31.28.135[4500] to 5.228.173.181[4500] (76 bytes)

                                      • 0
                                        И ещё вопрос — не надо ли менять настройку ip_forward, как описано в конце этого вот руководства? www.zeitgeist.se/2013/11/22/strongswan-howto-create-your-own-vpn/
                                        • 0
                                          Надо, если вам нужна маршрутизация, как и при обычной настройке NAT.
                                        • 0
                                          Во-вторых, у вас в /etc/ipsec.conf ошибка с отступами в районе строки №16, которая не даёт запустить сервис.
                                          Хм, только что проверил — все отлично. Может, скопировали что-то не так?
                                          05[IKE] no private key found for 'CN=aws.bougakov.com'
                                          Приватный ключ сервера положите в /etc/ipsec.d/private/
                                          В третьих, вы экспортируете ключ в формате p12, который не кушает Windows Phone (ему cer подавай).
                                          Тестировали на Windows Phone 8, p12 замечально импортируется.
                                          • 0
                                            Скопировал и вставил в PuTTY как есть, получив
                                            /etc/ipsec.conf:16: syntax error, unexpected FIRST_SPACES [ ]
                                            Впрочем, удаление пустых строк и комментариев решило проблему.

                                            Ключ в /etc/ipsec.d/private/ лежит.

                                            Скрытый текст
                                            root@ip-172-31-28-135:/etc/ipsec.d/private# ls -la
                                            total 12
                                            drwx------ 2 root root 4096 Feb 19 20:12.
                                            drwxr-xr-x 11 root root 4096 Dec 6 23:04…
                                            -rw------- 1 root root 1704 Feb 19 20:12 aws.bougakov.com.key
                                            root@ip-172-31-28-135:/etc/ipsec.d/private# cat aws.bougakov.com.key
                                            -----BEGIN PRIVATE KEY-----
                                            ...


                                            Ключик в формате p12 положил в корень вебсервера на машине, где установлен strongswan, при открытии его браузером получаю «крокозябры» вместо предложения установить сертификат, как это происходит с cer-файлами.
                                            • 0
                                              Ну а в /etc/ipsec.secrets он добавлен?
                                              : RSA aws.bougakov.com.key
                                              • +1
                                                Вы правы, у меня в имени файла с ключом ошибка, вместо key было расширение pem.

                                                Сертификат в формате p12 удалось импортировать, выслав его на почту — таким манером он установился сразу.
                                                • 0
                                                  К сожалению, Windows Phone отвечает до боли знакомым «Attention required» при попытке поднять соединение:

                                                  Скрытый текст
                                                  root@ip-172-31-28-135:/etc/ipsec.d/private# ipsec start --nofork
                                                  Starting strongSwan 5.1.2 IPsec [starter]...
                                                  00[DMN] Starting IKE charon daemon (strongSwan 5.1.2, Linux 3.13.0-44-generic, x86_64)
                                                  00[CFG] loading ca certificates from '/etc/ipsec.d/cacerts'
                                                  00[CFG]   loaded ca certificate "CN=IPSec CA" from '/etc/ipsec.d/cacerts/ca.crt'
                                                  00[CFG] loading aa certificates from '/etc/ipsec.d/aacerts'
                                                  00[CFG] loading ocsp signer certificates from '/etc/ipsec.d/ocspcerts'
                                                  00[CFG] loading attribute certificates from '/etc/ipsec.d/acerts'
                                                  00[CFG] loading crls from '/etc/ipsec.d/crls'
                                                  00[CFG] loading secrets from '/etc/ipsec.secrets'
                                                  00[CFG] expanding file expression '/var/lib/strongswan/ipsec.secrets.inc' failed
                                                  00[CFG]   loaded RSA private key from '/etc/ipsec.d/private/aws.bougakov.com.key'
                                                  00[LIB] loaded plugins: charon test-vectors aes rc2 sha1 sha2 md4 md5 rdrand random nonce x509 revocation constraints pkcs1 pkcs7 pkcs8 pkcs12 pem openssl xcbc cmac hmac ctr ccm gcm attr kernel-netlink resolve socket-default stroke updown eap-identity eap-mschapv2 addrblock
                                                  00[LIB] unable to load 5 plugin features (5 due to unmet dependencies)
                                                  00[LIB] dropped capabilities, running as uid 0, gid 0
                                                  00[JOB] spawning 16 worker threads
                                                  charon (2462) started after 20 ms
                                                  11[CFG] received stroke: add connection 'ikev2-pubkey'
                                                  11[CFG] left nor right host is our side, assuming left=local
                                                  11[CFG] adding virtual IP address pool 192.168.103.0/24
                                                  11[CFG] adding virtual IP address pool 2002:25f7:7489:3::/112
                                                  11[CFG]   loaded certificate "CN=aws.bougakov.com" from 'aws.bougakov.com.crt'
                                                  11[CFG]   id '%any' not confirmed by certificate, defaulting to 'CN=aws.bougakov.com'
                                                  11[CFG] added configuration 'ikev2-pubkey'
                                                  13[CFG] received stroke: add connection 'ikev1-fakexauth'
                                                  13[CFG] left nor right host is our side, assuming left=local
                                                  13[CFG] reusing virtual IP address pool 192.168.103.0/24
                                                  13[CFG] reusing virtual IP address pool 2002:25f7:7489:3::/112
                                                  13[CFG]   loaded certificate "CN=aws.bougakov.com" from 'aws.bougakov.com.crt'
                                                  13[CFG]   id '%any' not confirmed by certificate, defaulting to 'CN=aws.bougakov.com'
                                                  13[CFG] added configuration 'ikev1-fakexauth'
                                                  15[CFG] received stroke: add connection 'ikev2-eap-tls'
                                                  15[CFG] left nor right host is our side, assuming left=local
                                                  15[CFG] reusing virtual IP address pool 192.168.103.0/24
                                                  15[CFG] reusing virtual IP address pool 2002:25f7:7489:3::/112
                                                  15[CFG]   loaded certificate "CN=aws.bougakov.com" from 'aws.bougakov.com.crt'
                                                  15[CFG]   id '%any' not confirmed by certificate, defaulting to 'CN=aws.bougakov.com'
                                                  15[CFG] added configuration 'ikev2-eap-tls'
                                                  06[NET] received packet: from 5.228.173.181[500] to 172.31.28.135[500] (616 bytes)
                                                  06[ENC] parsed IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) V V V V ]
                                                  06[ENC] received unknown vendor ID: 1e:2b:51:69:05:99:1c:7d:7c:96:fc:bf:b5:87:e4:61:00:00:00:09
                                                  06[ENC] received unknown vendor ID: fb:1d:e3:cd:f3:41:b7:ea:16:b7:e5:be:08:55:f1:20
                                                  06[ENC] received unknown vendor ID: 26:24:4d:38:ed:db:61:b3:17:2a:36:e3:d0:cf:b8:19
                                                  06[ENC] received unknown vendor ID: 01:52:8b:bb:c0:06:96:12:18:49:ab:9a:1c:5b:2a:51:00:00:00:02
                                                  06[IKE] 5.228.173.181 is initiating an IKE_SA
                                                  06[IKE] local host is behind NAT, sending keep alives
                                                  06[IKE] remote host is behind NAT
                                                  06[IKE] sending cert request for "CN=IPSec CA"
                                                  06[ENC] generating IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) CERTREQ N(MULT_AUTH) ]
                                                  06[NET] sending packet: from 172.31.28.135[500] to 5.228.173.181[500] (337 bytes)
                                                  05[NET] received packet: from 5.228.173.181[4500] to 172.31.28.135[4500] (1116 bytes)
                                                  05[ENC] parsed IKE_AUTH request 1 [ IDi CERTREQ N(MOBIKE_SUP) CPRQ(ADDR DNS NBNS SRV ADDR6 DNS6 SRV6) SA TSi TSr ]
                                                  05[IKE] received cert request for "CN=IPSec CA"
                                                  05[IKE] received 38 cert requests for an unknown ca
                                                  05[CFG] looking for peer configs matching 172.31.28.135[%any]...5.228.173.181[192.168.10.6]
                                                  05[CFG] selected peer config 'ikev2-pubkey'
                                                  05[IKE] peer requested EAP, config inacceptable
                                                  05[CFG] switching to peer config 'ikev2-eap-tls'
                                                  05[IKE] loading EAP_TLS method failed
                                                  05[IKE] peer supports MOBIKE
                                                  05[ENC] generating IKE_AUTH response 1 [ IDr EAP/FAIL ]
                                                  05[NET] sending packet: from 172.31.28.135[4500] to 5.228.173.181[4500] (108 bytes)
                                                  02[NET] received packet: from 195.16.111.170[24006] to 172.31.28.135[500] (616 bytes)
                                                  02[ENC] parsed IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) V V V V ]
                                                  02[ENC] received unknown vendor ID: 1e:2b:51:69:05:99:1c:7d:7c:96:fc:bf:b5:87:e4:61:00:00:00:09
                                                  02[ENC] received unknown vendor ID: fb:1d:e3:cd:f3:41:b7:ea:16:b7:e5:be:08:55:f1:20
                                                  02[ENC] received unknown vendor ID: 26:24:4d:38:ed:db:61:b3:17:2a:36:e3:d0:cf:b8:19
                                                  02[ENC] received unknown vendor ID: 01:52:8b:bb:c0:06:96:12:18:49:ab:9a:1c:5b:2a:51:00:00:00:02
                                                  02[IKE] 195.16.111.170 is initiating an IKE_SA
                                                  02[IKE] local host is behind NAT, sending keep alives
                                                  02[IKE] remote host is behind NAT
                                                  02[IKE] sending cert request for "CN=IPSec CA"
                                                  02[ENC] generating IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) CERTREQ N(MULT_AUTH) ]
                                                  02[NET] sending packet: from 172.31.28.135[500] to 195.16.111.170[24006] (337 bytes)
                                                  01[NET] received packet: from 195.16.111.170[24006] to 172.31.28.135[500] (616 bytes)
                                                  01[ENC] parsed IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) V V V V ]
                                                  01[IKE] received retransmit of request with ID 0, retransmitting response
                                                  01[NET] sending packet: from 172.31.28.135[500] to 195.16.111.170[24006] (337 bytes)
                                                  12[NET] received packet: from 195.16.111.170[24006] to 172.31.28.135[500] (616 bytes)
                                                  12[ENC] parsed IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) V V V V ]
                                                  12[IKE] received retransmit of request with ID 0, retransmitting response
                                                  12[NET] sending packet: from 172.31.28.135[500] to 195.16.111.170[24006] (337 bytes)
                                                  


                                                  VPN-соединение в десктопной Windows устанавливается, выдаётся IP-адрес 192.168.103.1, но интернет при этом становится недоступным.

                                                  Скрытый текст
                                                  root@ip-172-31-28-135:/home/ubuntu/easy-rsa-ipsec/easyrsa3# ipsec start  --nofork
                                                  Starting strongSwan 5.1.2 IPsec [starter]...
                                                  00[DMN] Starting IKE charon daemon (strongSwan 5.1.2, Linux 3.13.0-44-generic, x86_64)
                                                  00[CFG] loading ca certificates from '/etc/ipsec.d/cacerts'
                                                  00[CFG]   loaded ca certificate "CN=IPSec CA" from '/etc/ipsec.d/cacerts/ca.crt'
                                                  00[CFG] loading aa certificates from '/etc/ipsec.d/aacerts'
                                                  00[CFG] loading ocsp signer certificates from '/etc/ipsec.d/ocspcerts'
                                                  00[CFG] loading attribute certificates from '/etc/ipsec.d/acerts'
                                                  00[CFG] loading crls from '/etc/ipsec.d/crls'
                                                  00[CFG] loading secrets from '/etc/ipsec.secrets'
                                                  00[CFG] expanding file expression '/var/lib/strongswan/ipsec.secrets.inc' failed
                                                  00[CFG]   loaded RSA private key from '/etc/ipsec.d/private/aws.bougakov.com.key'
                                                  00[LIB] loaded plugins: charon test-vectors aes rc2 sha1 sha2 md4 md5 rdrand random nonce x509 revocation constraints pkcs1 pkcs7 pkcs8 pkcs12 pem openssl xcbc cmac hmac ctr ccm gcm attr kernel-netlink resolve socket-default stroke updown eap-identity eap-mschapv2 addrblock
                                                  00[LIB] unable to load 5 plugin features (5 due to unmet dependencies)
                                                  00[LIB] dropped capabilities, running as uid 0, gid 0
                                                  00[JOB] spawning 16 worker threads
                                                  charon (2514) started after 20 ms
                                                  11[CFG] received stroke: add connection 'ikev2-pubkey'
                                                  11[CFG] left nor right host is our side, assuming left=local
                                                  11[CFG] adding virtual IP address pool 192.168.103.0/24
                                                  11[CFG] adding virtual IP address pool 2002:25f7:7489:3::/112
                                                  11[CFG]   loaded certificate "CN=aws.bougakov.com" from 'aws.bougakov.com.crt'
                                                  11[CFG]   id '%any' not confirmed by certificate, defaulting to 'CN=aws.bougakov.com'
                                                  11[CFG] added configuration 'ikev2-pubkey'
                                                  13[CFG] received stroke: add connection 'ikev1-fakexauth'
                                                  13[CFG] left nor right host is our side, assuming left=local
                                                  13[CFG] reusing virtual IP address pool 192.168.103.0/24
                                                  13[CFG] reusing virtual IP address pool 2002:25f7:7489:3::/112
                                                  13[CFG]   loaded certificate "CN=aws.bougakov.com" from 'aws.bougakov.com.crt'
                                                  13[CFG]   id '%any' not confirmed by certificate, defaulting to 'CN=aws.bougakov.com'
                                                  13[CFG] added configuration 'ikev1-fakexauth'
                                                  15[CFG] received stroke: add connection 'ikev2-eap-tls'
                                                  15[CFG] left nor right host is our side, assuming left=local
                                                  15[CFG] reusing virtual IP address pool 192.168.103.0/24
                                                  15[CFG] reusing virtual IP address pool 2002:25f7:7489:3::/112
                                                  15[CFG]   loaded certificate "CN=aws.bougakov.com" from 'aws.bougakov.com.crt'
                                                  15[CFG]   id '%any' not confirmed by certificate, defaulting to 'CN=aws.bougakov.com'
                                                  15[CFG] added configuration 'ikev2-eap-tls'
                                                  06[NET] received packet: from 5.228.173.181[500] to 172.31.28.135[500] (880 bytes)
                                                  06[ENC] parsed IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) V V V V ]
                                                  06[ENC] received unknown vendor ID: 1e:2b:51:69:05:99:1c:7d:7c:96:fc:bf:b5:87:e4:61:00:00:00:09
                                                  06[ENC] received unknown vendor ID: fb:1d:e3:cd:f3:41:b7:ea:16:b7:e5:be:08:55:f1:20
                                                  06[ENC] received unknown vendor ID: 26:24:4d:38:ed:db:61:b3:17:2a:36:e3:d0:cf:b8:19
                                                  06[ENC] received unknown vendor ID: 01:52:8b:bb:c0:06:96:12:18:49:ab:9a:1c:5b:2a:51:00:00:00:02
                                                  06[IKE] 5.228.173.181 is initiating an IKE_SA
                                                  06[IKE] local host is behind NAT, sending keep alives
                                                  06[IKE] remote host is behind NAT
                                                  06[IKE] sending cert request for "CN=IPSec CA"
                                                  06[ENC] generating IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) CERTREQ N(MULT_AUTH) ]
                                                  06[NET] sending packet: from 172.31.28.135[500] to 5.228.173.181[500] (337 bytes)
                                                  05[NET] received packet: from 5.228.173.181[4500] to 172.31.28.135[4500] (2684 bytes)
                                                  05[ENC] parsed IKE_AUTH request 1 [ IDi CERT CERTREQ AUTH N(MOBIKE_SUP) CPRQ(ADDR DNS NBNS SRV) SA TSi TSr ]
                                                  05[IKE] received cert request for "CN=IPSec CA"
                                                  05[IKE] received 58 cert requests for an unknown ca
                                                  05[IKE] received end entity cert "CN=client1"
                                                  05[CFG] looking for peer configs matching 172.31.28.135[%any]...5.228.173.181[CN=client1]
                                                  05[CFG] selected peer config 'ikev2-pubkey'
                                                  05[CFG]   using certificate "CN=client1"
                                                  05[CFG]   using trusted ca certificate "CN=IPSec CA"
                                                  05[CFG] checking certificate status of "CN=client1"
                                                  05[CFG] certificate status is not available
                                                  05[CFG]   reached self-signed root ca with a path length of 0
                                                  05[IKE] authentication of 'CN=client1' with RSA signature successful
                                                  05[IKE] peer supports MOBIKE
                                                  05[IKE] authentication of 'CN=aws.bougakov.com' (myself) with RSA signature successful
                                                  05[IKE] IKE_SA ikev2-pubkey[1] established between 172.31.28.135[CN=aws.bougakov.com]...5.228.173.181[CN=client1]
                                                  05[IKE] scheduling reauthentication in 10186s
                                                  05[IKE] maximum IKE_SA lifetime 10726s
                                                  05[IKE] sending end entity cert "CN=aws.bougakov.com"
                                                  05[IKE] peer requested virtual IP %any
                                                  05[CFG] assigning new lease to 'CN=client1'
                                                  05[IKE] assigning virtual IP 192.168.103.1 to peer 'CN=client1'
                                                  05[IKE] CHILD_SA ikev2-pubkey{1} established with SPIs c90a27be_i a48883c6_o and TS 0.0.0.0/0 === 192.168.103.1/32
                                                  05[ENC] generating IKE_AUTH response 1 [ IDr CERT AUTH CPRP(ADDR DNS DNS6) SA TSi TSr N(AUTH_LFT) N(MOBIKE_SUP) N(NO_ADD_ADDR) ]
                                                  05[NET] sending packet: from 172.31.28.135[4500] to 5.228.173.181[4500] (1404 bytes)
                                                  03[IKE] sending keep alive to 5.228.173.181[4500]
                                                  • 0
                                                    05[IKE] loading EAP_TLS method failed

                                                    Терпеть не могу чрезмерную модульность в Ubuntu.
                                                    apt-get install strongswan-plugin-eap-tls

                                                    но интернет при этом становится недоступным
                                                    Вы настроили NAT? В статье описывается только настройка IPsec, подразумевая, что читатель умеет настраивать NAT.
                                                    iptables -t nat -I POSTROUTING -m policy --pol ipsec --dir out -j MASQUERADE
                                                    sysctl net.ipv4.ip_forward=1
                                                    • 0
                                                      Могу покляться, что ставил plugin-eap-tls. Впрочем, и с переустановкой — «Attention required», ошибка #860:

                                                      Скрытый текст
                                                      root@ip-172-31-28-135:/home/ubuntu/easy-rsa-ipsec/easyrsa3# ipsec start  --nofork
                                                      Starting strongSwan 5.1.2 IPsec [starter]...
                                                      00[DMN] Starting IKE charon daemon (strongSwan 5.1.2, Linux 3.13.0-44-generic, x86_64)
                                                      00[CFG] loading ca certificates from '/etc/ipsec.d/cacerts'
                                                      00[CFG]   loaded ca certificate "CN=IPSec CA" from '/etc/ipsec.d/cacerts/ca.crt'
                                                      00[CFG] loading aa certificates from '/etc/ipsec.d/aacerts'
                                                      00[CFG] loading ocsp signer certificates from '/etc/ipsec.d/ocspcerts'
                                                      00[CFG] loading attribute certificates from '/etc/ipsec.d/acerts'
                                                      00[CFG] loading crls from '/etc/ipsec.d/crls'
                                                      00[CFG] loading secrets from '/etc/ipsec.secrets'
                                                      00[CFG] expanding file expression '/var/lib/strongswan/ipsec.secrets.inc' failed
                                                      00[CFG]   loaded RSA private key from '/etc/ipsec.d/private/aws.bougakov.com.key'
                                                      00[LIB] loaded plugins: charon test-vectors aes rc2 sha1 sha2 md4 md5 rdrand random nonce x509 revocation constraints pkcs1 pkcs7 pkcs8 pkcs12 pem openssl xcbc cmac hmac ctr ccm gcm attr kernel-netlink resolve socket-default stroke updown eap-identity eap-mschapv2 eap-tls addrblock
                                                      00[LIB] unable to load 5 plugin features (5 due to unmet dependencies)
                                                      00[LIB] dropped capabilities, running as uid 0, gid 0
                                                      00[JOB] spawning 16 worker threads
                                                      charon (2656) started after 20 ms
                                                      11[CFG] received stroke: add connection 'ikev2-pubkey'
                                                      11[CFG] left nor right host is our side, assuming left=local
                                                      11[CFG] adding virtual IP address pool 192.168.103.0/24
                                                      11[CFG] adding virtual IP address pool 2002:25f7:7489:3::/112
                                                      11[CFG]   loaded certificate "CN=aws.bougakov.com" from 'aws.bougakov.com.crt'
                                                      11[CFG]   id '%any' not confirmed by certificate, defaulting to 'CN=aws.bougakov.com'
                                                      11[CFG] added configuration 'ikev2-pubkey'
                                                      13[CFG] received stroke: add connection 'ikev1-fakexauth'
                                                      13[CFG] left nor right host is our side, assuming left=local
                                                      13[CFG] reusing virtual IP address pool 192.168.103.0/24
                                                      13[CFG] reusing virtual IP address pool 2002:25f7:7489:3::/112
                                                      13[CFG]   loaded certificate "CN=aws.bougakov.com" from 'aws.bougakov.com.crt'
                                                      13[CFG]   id '%any' not confirmed by certificate, defaulting to 'CN=aws.bougakov.com'
                                                      13[CFG] added configuration 'ikev1-fakexauth'
                                                      06[CFG] received stroke: add connection 'ikev2-eap-tls'
                                                      06[CFG] left nor right host is our side, assuming left=local
                                                      06[CFG] reusing virtual IP address pool 192.168.103.0/24
                                                      06[CFG] reusing virtual IP address pool 2002:25f7:7489:3::/112
                                                      06[CFG]   loaded certificate "CN=aws.bougakov.com" from 'aws.bougakov.com.crt'
                                                      06[CFG]   id '%any' not confirmed by certificate, defaulting to 'CN=aws.bougakov.com'
                                                      06[CFG] added configuration 'ikev2-eap-tls'
                                                      16[NET] received packet: from 5.228.173.181[500] to 172.31.28.135[500] (616 bytes)
                                                      16[ENC] parsed IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) V V V V ]
                                                      16[ENC] received unknown vendor ID: 1e:2b:51:69:05:99:1c:7d:7c:96:fc:bf:b5:87:e4:61:00:00:00:09
                                                      16[ENC] received unknown vendor ID: fb:1d:e3:cd:f3:41:b7:ea:16:b7:e5:be:08:55:f1:20
                                                      16[ENC] received unknown vendor ID: 26:24:4d:38:ed:db:61:b3:17:2a:36:e3:d0:cf:b8:19
                                                      16[ENC] received unknown vendor ID: 01:52:8b:bb:c0:06:96:12:18:49:ab:9a:1c:5b:2a:51:00:00:00:02
                                                      16[IKE] 5.228.173.181 is initiating an IKE_SA
                                                      16[IKE] local host is behind NAT, sending keep alives
                                                      16[IKE] remote host is behind NAT
                                                      16[IKE] sending cert request for "CN=IPSec CA"
                                                      16[ENC] generating IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) CERTREQ N(MULT_AUTH) ]
                                                      16[NET] sending packet: from 172.31.28.135[500] to 5.228.173.181[500] (337 bytes)
                                                      05[NET] received packet: from 5.228.173.181[4500] to 172.31.28.135[4500] (1116 bytes)
                                                      05[ENC] parsed IKE_AUTH request 1 [ IDi CERTREQ N(MOBIKE_SUP) CPRQ(ADDR DNS NBNS SRV ADDR6 DNS6 SRV6) SA TSi TSr ]
                                                      05[IKE] received cert request for "CN=IPSec CA"
                                                      05[IKE] received 38 cert requests for an unknown ca
                                                      05[CFG] looking for peer configs matching 172.31.28.135[%any]...5.228.173.181[192.168.10.6]
                                                      05[CFG] selected peer config 'ikev2-pubkey'
                                                      05[IKE] peer requested EAP, config inacceptable
                                                      05[CFG] switching to peer config 'ikev2-eap-tls'
                                                      05[IKE] initiating EAP_TLS method (id 0xE4)
                                                      05[IKE] peer supports MOBIKE
                                                      05[IKE] authentication of 'CN=aws.bougakov.com' (myself) with RSA signature successful
                                                      05[IKE] sending end entity cert "CN=aws.bougakov.com"
                                                      05[ENC] generating IKE_AUTH response 1 [ IDr CERT AUTH EAP/REQ/TLS ]
                                                      05[NET] sending packet: from 172.31.28.135[4500] to 5.228.173.181[4500] (1260 bytes)
                                                      04[NET] received packet: from 5.228.173.181[4500] to 172.31.28.135[4500] (188 bytes)
                                                      04[ENC] parsed IKE_AUTH request 2 [ EAP/RES/TLS ]
                                                      04[TLS] negotiated TLS 1.0 using suite TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
                                                      04[TLS] sending TLS server certificate 'CN=aws.bougakov.com'
                                                      04[TLS] sending TLS cert request for 'CN=IPSec CA'
                                                      04[ENC] generating IKE_AUTH response 2 [ EAP/REQ/TLS ]
                                                      04[NET] sending packet: from 172.31.28.135[4500] to 5.228.173.181[4500] (1100 bytes)
                                                      03[NET] received packet: from 5.228.173.181[4500] to 172.31.28.135[4500] (76 bytes)
                                                      03[ENC] parsed IKE_AUTH request 3 [ EAP/RES/TLS ]
                                                      03[ENC] generating IKE_AUTH response 3 [ EAP/REQ/TLS ]
                                                      03[NET] sending packet: from 172.31.28.135[4500] to 5.228.173.181[4500] (380 bytes)
                                                      02[NET] received packet: from 5.228.173.181[4500] to 172.31.28.135[4500] (1340 bytes)
                                                      02[ENC] parsed IKE_AUTH request 4 [ EAP/RES/TLS ]
                                                      02[TLS] received TLS peer certificate 'CN=client1'
                                                      02[TLS] no trusted certificate found for '192.168.10.6' to verify TLS peer
                                                      02[TLS] sending fatal TLS alert 'certificate unknown'
                                                      02[ENC] generating IKE_AUTH response 4 [ EAP/REQ/TLS ]
                                                      02[NET] sending packet: from 172.31.28.135[4500] to 5.228.173.181[4500] (92 bytes)
                                                      01[NET] received packet: from 5.228.173.181[4500] to 172.31.28.135[4500] (76 bytes)
                                                      01[ENC] parsed IKE_AUTH request 5 [ EAP/RES/TLS ]
                                                      01[IKE] EAP method EAP_TLS failed for peer 192.168.10.6
                                                      01[ENC] generating IKE_AUTH response 5 [ EAP/FAIL ]
                                                      01[NET] sending packet: from 172.31.28.135[4500] to 5.228.173.181[4500] (76 bytes)
                                                      12[NET] received packet: from 5.228.173.181[500] to 172.31.28.135[500] (616 bytes)
                                                      12[ENC] parsed IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) V V V V ]
                                                      12[ENC] received unknown vendor ID: 1e:2b:51:69:05:99:1c:7d:7c:96:fc:bf:b5:87:e4:61:00:00:00:09
                                                      12[ENC] received unknown vendor ID: fb:1d:e3:cd:f3:41:b7:ea:16:b7:e5:be:08:55:f1:20
                                                      12[ENC] received unknown vendor ID: 26:24:4d:38:ed:db:61:b3:17:2a:36:e3:d0:cf:b8:19
                                                      12[ENC] received unknown vendor ID: 01:52:8b:bb:c0:06:96:12:18:49:ab:9a:1c:5b:2a:51:00:00:00:02
                                                      12[IKE] 5.228.173.181 is initiating an IKE_SA
                                                      12[IKE] local host is behind NAT, sending keep alives
                                                      12[IKE] remote host is behind NAT
                                                      12[IKE] sending cert request for "CN=IPSec CA"
                                                      12[ENC] generating IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) CERTREQ N(MULT_AUTH) ]
                                                      12[NET] sending packet: from 172.31.28.135[500] to 5.228.173.181[500] (337 bytes)
                                                      14[NET] received packet: from 5.228.173.181[4500] to 172.31.28.135[4500] (1116 bytes)
                                                      14[ENC] parsed IKE_AUTH request 1 [ IDi CERTREQ N(MOBIKE_SUP) CPRQ(ADDR DNS NBNS SRV ADDR6 DNS6 SRV6) SA TSi TSr ]
                                                      14[IKE] received cert request for "CN=IPSec CA"
                                                      14[IKE] received 38 cert requests for an unknown ca
                                                      14[CFG] looking for peer configs matching 172.31.28.135[%any]...5.228.173.181[192.168.10.6]
                                                      14[CFG] selected peer config 'ikev2-pubkey'
                                                      14[IKE] peer requested EAP, config inacceptable
                                                      14[CFG] switching to peer config 'ikev2-eap-tls'
                                                      14[IKE] initiating EAP_TLS method (id 0xD1)
                                                      14[IKE] peer supports MOBIKE
                                                      14[IKE] authentication of 'CN=aws.bougakov.com' (myself) with RSA signature successful
                                                      14[IKE] sending end entity cert "CN=aws.bougakov.com"
                                                      14[ENC] generating IKE_AUTH response 1 [ IDr CERT AUTH EAP/REQ/TLS ]
                                                      14[NET] sending packet: from 172.31.28.135[4500] to 5.228.173.181[4500] (1260 bytes)
                                                      15[NET] received packet: from 5.228.173.181[4500] to 172.31.28.135[4500] (188 bytes)
                                                      15[ENC] parsed IKE_AUTH request 2 [ EAP/RES/TLS ]
                                                      15[TLS] negotiated TLS 1.0 using suite TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
                                                      15[TLS] sending TLS server certificate 'CN=aws.bougakov.com'
                                                      15[TLS] sending TLS cert request for 'CN=IPSec CA'
                                                      15[ENC] generating IKE_AUTH response 2 [ EAP/REQ/TLS ]
                                                      15[NET] sending packet: from 172.31.28.135[4500] to 5.228.173.181[4500] (1100 bytes)
                                                      13[NET] received packet: from 5.228.173.181[4500] to 172.31.28.135[4500] (76 bytes)
                                                      13[ENC] parsed IKE_AUTH request 3 [ EAP/RES/TLS ]
                                                      13[ENC] generating IKE_AUTH response 3 [ EAP/REQ/TLS ]
                                                      13[NET] sending packet: from 172.31.28.135[4500] to 5.228.173.181[4500] (380 bytes)
                                                      06[NET] received packet: from 5.228.173.181[4500] to 172.31.28.135[4500] (1340 bytes)
                                                      06[ENC] parsed IKE_AUTH request 4 [ EAP/RES/TLS ]
                                                      06[TLS] received TLS peer certificate 'CN=client1'
                                                      06[TLS] no trusted certificate found for '192.168.10.6' to verify TLS peer
                                                      06[TLS] sending fatal TLS alert 'certificate unknown'
                                                      06[ENC] generating IKE_AUTH response 4 [ EAP/REQ/TLS ]
                                                      06[NET] sending packet: from 172.31.28.135[4500] to 5.228.173.181[4500] (92 bytes)
                                                      11[NET] received packet: from 5.228.173.181[4500] to 172.31.28.135[4500] (76 bytes)
                                                      11[ENC] parsed IKE_AUTH request 5 [ EAP/RES/TLS ]
                                                      11[IKE] EAP method EAP_TLS failed for peer 192.168.10.6
                                                      11[ENC] generating IKE_AUTH response 5 [ EAP/FAIL ]
                                                      11[NET] sending packet: from 172.31.28.135[4500] to 5.228.173.181[4500] (76 bytes)
                                                      16[NET] received packet: from 5.228.173.181[500] to 172.31.28.135[500] (616 bytes)
                                                      16[ENC] parsed IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) V V V V ]
                                                      16[ENC] received unknown vendor ID: 1e:2b:51:69:05:99:1c:7d:7c:96:fc:bf:b5:87:e4:61:00:00:00:09
                                                      16[ENC] received unknown vendor ID: fb:1d:e3:cd:f3:41:b7:ea:16:b7:e5:be:08:55:f1:20
                                                      16[ENC] received unknown vendor ID: 26:24:4d:38:ed:db:61:b3:17:2a:36:e3:d0:cf:b8:19
                                                      16[ENC] received unknown vendor ID: 01:52:8b:bb:c0:06:96:12:18:49:ab:9a:1c:5b:2a:51:00:00:00:02
                                                      16[IKE] 5.228.173.181 is initiating an IKE_SA
                                                      16[IKE] local host is behind NAT, sending keep alives
                                                      16[IKE] remote host is behind NAT
                                                      16[IKE] sending cert request for "CN=IPSec CA"
                                                      16[ENC] generating IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) CERTREQ N(MULT_AUTH) ]
                                                      16[NET] sending packet: from 172.31.28.135[500] to 5.228.173.181[500] (337 bytes)
                                                      05[NET] received packet: from 5.228.173.181[4500] to 172.31.28.135[4500] (1116 bytes)
                                                      05[ENC] parsed IKE_AUTH request 1 [ IDi CERTREQ N(MOBIKE_SUP) CPRQ(ADDR DNS NBNS SRV ADDR6 DNS6 SRV6) SA TSi TSr ]
                                                      05[IKE] received cert request for "CN=IPSec CA"
                                                      05[IKE] received 38 cert requests for an unknown ca
                                                      05[CFG] looking for peer configs matching 172.31.28.135[%any]...5.228.173.181[192.168.10.6]
                                                      05[CFG] selected peer config 'ikev2-pubkey'
                                                      05[IKE] peer requested EAP, config inacceptable
                                                      05[CFG] switching to peer config 'ikev2-eap-tls'
                                                      05[IKE] initiating EAP_TLS method (id 0xA4)
                                                      05[IKE] peer supports MOBIKE
                                                      05[IKE] authentication of 'CN=aws.bougakov.com' (myself) with RSA signature successful
                                                      05[IKE] sending end entity cert "CN=aws.bougakov.com"
                                                      05[ENC] generating IKE_AUTH response 1 [ IDr CERT AUTH EAP/REQ/TLS ]
                                                      05[NET] sending packet: from 172.31.28.135[4500] to 5.228.173.181[4500] (1260 bytes)
                                                      04[NET] received packet: from 5.228.173.181[4500] to 172.31.28.135[4500] (188 bytes)
                                                      04[ENC] parsed IKE_AUTH request 2 [ EAP/RES/TLS ]
                                                      04[TLS] negotiated TLS 1.0 using suite TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
                                                      04[TLS] sending TLS server certificate 'CN=aws.bougakov.com'
                                                      04[TLS] sending TLS cert request for 'CN=IPSec CA'
                                                      04[ENC] generating IKE_AUTH response 2 [ EAP/REQ/TLS ]
                                                      04[NET] sending packet: from 172.31.28.135[4500] to 5.228.173.181[4500] (1100 bytes)
                                                      03[NET] received packet: from 5.228.173.181[4500] to 172.31.28.135[4500] (76 bytes)
                                                      03[ENC] parsed IKE_AUTH request 3 [ EAP/RES/TLS ]
                                                      03[ENC] generating IKE_AUTH response 3 [ EAP/REQ/TLS ]
                                                      03[NET] sending packet: from 172.31.28.135[4500] to 5.228.173.181[4500] (380 bytes)
                                                      02[NET] received packet: from 5.228.173.181[4500] to 172.31.28.135[4500] (1340 bytes)
                                                      02[ENC] parsed IKE_AUTH request 4 [ EAP/RES/TLS ]
                                                      02[TLS] received TLS peer certificate 'CN=client1'
                                                      02[TLS] no trusted certificate found for '192.168.10.6' to verify TLS peer
                                                      02[TLS] sending fatal TLS alert 'certificate unknown'
                                                      02[ENC] generating IKE_AUTH response 4 [ EAP/REQ/TLS ]
                                                      02[NET] sending packet: from 172.31.28.135[4500] to 5.228.173.181[4500] (92 bytes)
                                                      01[NET] received packet: from 5.228.173.181[4500] to 172.31.28.135[4500] (76 bytes)
                                                      01[ENC] parsed IKE_AUTH request 5 [ EAP/RES/TLS ]
                                                      01[IKE] EAP method EAP_TLS failed for peer 192.168.10.6
                                                      01[ENC] generating IKE_AUTH response 5 [ EAP/FAIL ]
                                                      01[NET] sending packet: from 172.31.28.135[4500] to 5.228.173.181[4500] (76 bytes)
                                                      подразумевая, что читатель умеет настраивать NAT.
                                                      Вы слишком льстите читателям…
                                                      • 0
                                                        Так, похоже, я забыл про:
                                                        eap_identity в ikev2-eap-tls:
                                                        conn ikev2-eap-tls
                                                            also="ikev2-pubkey"
                                                            rightauth=eap-tls
                                                            eap_identity=%identity

                                                        Попробуйте, пожалуйста. Если не сработает, поставьте eap_identity=%any и попробуйте снова.
                                                        • 0
                                                          Теперь получилось [в варианте с %identity], спасибо. Но NAT победить так и не удалось, у меня есть ощущение, что приведённая вами команда игнорируется — когда я набираю iptables -L, я не вижу, чтобы что-то добавилось.
                                                          • 0
                                                            Нужно iptables -t nat -nL
                                                            А если просто iptables -t nat -I POSTROUTING -j MASQUERADE, работает? Если нет, что в tcpdump?
                                                            • 0
                                                              Замена rightdns на Google DNS и использование второй команды решило проблему. VPN поднимается, whatismyip.com открывается и радостно сообщает, что я в Портленде. Спасибо за терпение!
                                                              • 0
                                                                Вы там не забудьте лишние записи удалить в iptables, особенно последнюю, если выполняли ее. Рад, что заработало.
                                                                • 0
                                                                  Я рано радовался. Видимо, я упёрся в ту проблему, что из-за одного NAT не получается подключиться разным клиентам (или тому же самому клиенту, но попозже). Windows выдаёт ошибку 809, хотя в консоли всё прилично:

                                                                  Скрытый текст
                                                                  ubuntu@ip-172-31-28-135:~$ sudo ipsec start --nofork
                                                                  Starting strongSwan 5.1.2 IPsec [starter]...
                                                                  00[DMN] Starting IKE charon daemon (strongSwan 5.1.2, Linux 3.13.0-44-generic, x86_64)
                                                                  00[CFG] loading ca certificates from '/etc/ipsec.d/cacerts'
                                                                  00[CFG]   loaded ca certificate "CN=IPSec CA" from '/etc/ipsec.d/cacerts/ca.crt'
                                                                  00[CFG] loading aa certificates from '/etc/ipsec.d/aacerts'
                                                                  00[CFG] loading ocsp signer certificates from '/etc/ipsec.d/ocspcerts'
                                                                  00[CFG] loading attribute certificates from '/etc/ipsec.d/acerts'
                                                                  00[CFG] loading crls from '/etc/ipsec.d/crls'
                                                                  00[CFG] loading secrets from '/etc/ipsec.secrets'
                                                                  00[CFG] expanding file expression '/var/lib/strongswan/ipsec.secrets.inc' failed
                                                                  00[CFG]   loaded RSA private key from '/etc/ipsec.d/private/aws.bougakov.com.key'
                                                                  00[LIB] loaded plugins: charon test-vectors aes rc2 sha1 sha2 md4 md5 rdrand random nonce x509 revocation constraints pkcs1 pkcs7 pkcs8 pkcs12 pem openssl xcbc cmac hmac ctr ccm gcm attr kernel-netlink resolve socket-default stroke updown eap-identity eap-mschapv2 eap-tls addrblock
                                                                  00[LIB] unable to load 5 plugin features (5 due to unmet dependencies)
                                                                  00[LIB] dropped capabilities, running as uid 0, gid 0
                                                                  00[JOB] spawning 16 worker threads
                                                                  charon (1610) started after 20 ms
                                                                  11[CFG] received stroke: add connection 'ikev2-pubkey'
                                                                  11[CFG] left nor right host is our side, assuming left=local
                                                                  11[CFG] adding virtual IP address pool 192.168.103.0/24
                                                                  11[CFG]   loaded certificate "CN=aws.bougakov.com" from 'aws.bougakov.com.crt'
                                                                  11[CFG]   id '%any' not confirmed by certificate, defaulting to 'CN=aws.bougakov.com'
                                                                  11[CFG] added configuration 'ikev2-pubkey'
                                                                  13[CFG] received stroke: add connection 'ikev1-fakexauth'
                                                                  13[CFG] left nor right host is our side, assuming left=local
                                                                  13[CFG] reusing virtual IP address pool 192.168.103.0/24
                                                                  13[CFG]   loaded certificate "CN=aws.bougakov.com" from 'aws.bougakov.com.crt'
                                                                  13[CFG]   id '%any' not confirmed by certificate, defaulting to 'CN=aws.bougakov.com'
                                                                  13[CFG] added configuration 'ikev1-fakexauth'
                                                                  06[CFG] received stroke: add connection 'ikev2-eap-tls'
                                                                  06[CFG] left nor right host is our side, assuming left=local
                                                                  06[CFG] reusing virtual IP address pool 192.168.103.0/24
                                                                  06[CFG]   loaded certificate "CN=aws.bougakov.com" from 'aws.bougakov.com.crt'
                                                                  06[CFG]   id '%any' not confirmed by certificate, defaulting to 'CN=aws.bougakov.com'
                                                                  06[CFG] added configuration 'ikev2-eap-tls'
                                                                  16[NET] received packet: from 5.228.173.181[500] to 172.31.28.135[500] (880 bytes)
                                                                  16[ENC] parsed IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) V V V V ]
                                                                  16[ENC] received unknown vendor ID: 1e:2b:51:69:05:99:1c:7d:7c:96:fc:bf:b5:87:e4:61:00:00:00:09
                                                                  16[ENC] received unknown vendor ID: fb:1d:e3:cd:f3:41:b7:ea:16:b7:e5:be:08:55:f1:20
                                                                  16[ENC] received unknown vendor ID: 26:24:4d:38:ed:db:61:b3:17:2a:36:e3:d0:cf:b8:19
                                                                  16[ENC] received unknown vendor ID: 01:52:8b:bb:c0:06:96:12:18:49:ab:9a:1c:5b:2a:51:00:00:00:02
                                                                  16[IKE] 5.228.173.181 is initiating an IKE_SA
                                                                  16[IKE] local host is behind NAT, sending keep alives
                                                                  16[IKE] remote host is behind NAT
                                                                  16[IKE] sending cert request for "CN=IPSec CA"
                                                                  16[ENC] generating IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) CERTREQ N(MULT_AUTH) ]
                                                                  16[NET] sending packet: from 172.31.28.135[500] to 5.228.173.181[500] (337 bytes)
                                                                  05[NET] received packet: from 5.228.173.181[4500] to 172.31.28.135[4500] (2684 bytes)
                                                                  05[ENC] parsed IKE_AUTH request 1 [ IDi CERT CERTREQ AUTH N(MOBIKE_SUP) CPRQ(ADDR DNS NBNS SRV) SA TSi TSr ]
                                                                  05[IKE] received cert request for "CN=IPSec CA"
                                                                  05[IKE] received 58 cert requests for an unknown ca
                                                                  05[IKE] received end entity cert "CN=client1"
                                                                  05[CFG] looking for peer configs matching 172.31.28.135[%any]...5.228.173.181[CN=client1]
                                                                  05[CFG] selected peer config 'ikev2-pubkey'
                                                                  05[CFG]   using certificate "CN=client1"
                                                                  05[CFG]   using trusted ca certificate "CN=IPSec CA"
                                                                  05[CFG] checking certificate status of "CN=client1"
                                                                  05[CFG] certificate status is not available
                                                                  05[CFG]   reached self-signed root ca with a path length of 0
                                                                  05[IKE] authentication of 'CN=client1' with RSA signature successful
                                                                  05[IKE] peer supports MOBIKE
                                                                  05[IKE] authentication of 'CN=aws.bougakov.com' (myself) with RSA signature successful
                                                                  05[IKE] IKE_SA ikev2-pubkey[1] established between 172.31.28.135[CN=aws.bougakov.com]...5.228.173.181[CN=client1]
                                                                  05[IKE] scheduling reauthentication in 10197s
                                                                  05[IKE] maximum IKE_SA lifetime 10737s
                                                                  05[IKE] sending end entity cert "CN=aws.bougakov.com"
                                                                  05[IKE] peer requested virtual IP %any
                                                                  05[CFG] assigning new lease to 'CN=client1'
                                                                  05[IKE] assigning virtual IP 192.168.103.1 to peer 'CN=client1'
                                                                  05[IKE] CHILD_SA ikev2-pubkey{1} established with SPIs cf74f20d_i b323abc2_o and TS 0.0.0.0/32 === 192.168.103.1/32
                                                                  05[ENC] generating IKE_AUTH response 1 [ IDr CERT AUTH CPRP(ADDR DNS DNS) SA TSi TSr N(AUTH_LFT) N(MOBIKE_SUP) N(NO_ADD_ADDR) ]
                                                                  05[NET] sending packet: from 172.31.28.135[4500] to 5.228.173.181[4500] (1404 bytes)
                                                                  04[NET] received packet: from 5.228.173.181[4500] to 172.31.28.135[4500] (2684 bytes)
                                                                  04[ENC] parsed IKE_AUTH request 1 [ IDi CERT CERTREQ AUTH N(MOBIKE_SUP) CPRQ(ADDR DNS NBNS SRV) SA TSi TSr ]
                                                                  04[IKE] received retransmit of request with ID 1, retransmitting response
                                                                  04[NET] sending packet: from 172.31.28.135[4500] to 5.228.173.181[4500] (1404 bytes)
                                                                  03[NET] received packet: from 5.228.173.181[4500] to 172.31.28.135[4500] (2684 bytes)
                                                                  03[ENC] parsed IKE_AUTH request 1 [ IDi CERT CERTREQ AUTH N(MOBIKE_SUP) CPRQ(ADDR DNS NBNS SRV) SA TSi TSr ]
                                                                  03[IKE] received retransmit of request with ID 1, retransmitting response
                                                                  03[NET] sending packet: from 172.31.28.135[4500] to 5.228.173.181[4500] (1404 bytes)
                                                                  02[IKE] sending keep alive to 5.228.173.181[4500]
                                                                  


                                                                  В результате я решил перезагрузить и локальный роутер, и амазоновскй сервер.

                                                                  Проблему с переподключением это решило, но вот NAT поломался, Windows помечает соединение как «ограниченное». Хотя с конфигурацией iptables, сохранённой в iptables-persistent, всё в порядке:

                                                                  /etc/iptables/rules.v4
                                                                  # Generated by iptables-save v1.4.21 on Sat Feb 21 14:13:02 2015
                                                                  *mangle
                                                                  :PREROUTING ACCEPT [359:24419]
                                                                  :INPUT ACCEPT [359:24419]
                                                                  :FORWARD ACCEPT [0:0]
                                                                  :OUTPUT ACCEPT [291:63968]
                                                                  :POSTROUTING ACCEPT [291:63968]
                                                                  -A FORWARD -p tcp -m policy --dir out --pol ipsec -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
                                                                  -A FORWARD -p tcp -m policy --dir in --pol ipsec -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
                                                                  COMMIT
                                                                  # Completed on Sat Feb 21 14:13:02 2015
                                                                  # Generated by iptables-save v1.4.21 on Sat Feb 21 14:13:02 2015
                                                                  *nat
                                                                  :PREROUTING ACCEPT [0:0]
                                                                  :INPUT ACCEPT [0:0]
                                                                  :OUTPUT ACCEPT [0:0]
                                                                  :POSTROUTING ACCEPT [0:0]
                                                                  -A POSTROUTING -m policy --dir out --pol ipsec -j MASQUERADE
                                                                  COMMIT
                                                                  # Completed on Sat Feb 21 14:13:02 2015
                                                                  # Generated by iptables-save v1.4.21 on Sat Feb 21 14:13:02 2015
                                                                  *filter
                                                                  :INPUT ACCEPT [484:32599]
                                                                  :FORWARD ACCEPT [0:0]
                                                                  :OUTPUT ACCEPT [373:75140]
                                                                  COMMIT
                                                                  # Completed on Sat Feb 21 14:13:02 2015
                                                                  • 0
                                                                    А пинги ходят?
                                                                    • 0
                                                                      Из Ubuntu — да, из windows-машины с поднятым VPN — нет (но putty продолжает работать и не теряет соединения).
                                                                      • 0
                                                                        Хм. Маршрутизацию вы включить не забыли? Вроде забыли, раз пинги ходят. Не могу сказать, в чем проблема. Попробуйте на роутере отключить всякие vpn passthru.
                                                                    • 0
                                                                      Из вашего лога похоже, что вы таки наступили на ту проблему, что я и описывал выше (несмотря на то, что ValdikSS утверждает, что проблемы не встречал).

                                                                      Ваши клиенты за NAT'ом выходят из NAT'a с одинаковыми портами 4500, что свидетельствует о том, что ваш роутер работает в режиме VPN passthrough, то есть не трогает source port, а меняет только source IP. Таким образом для двух клиентов за одним NAT'ом у вас, с точки зрения StrongSWAN сервера, одинаковый source IP + source port. При всём желании роутер ничего с этим не может поделать если ему приходит UDP ответ на 5.228.173.181[4500] — он отправляет этот пакет всегда последнему клиенту.

                                                                      Если у вас есть возможность настроить роутер для клиентов, то вам нужно выключить опцию VPN passthrough, вот так это выглядит у меня на роутере: awesomescreenshot.com/0494hgvb13
                                                            • 0
                                                              Кстати, а что это у вас за IPv4-адрес в rightdns, тут нет ошибки?
                                                              • 0
                                                                У меня рекурсивный DNS-сервер на этой же машине. Замените его, например, на 8.8.8.8
                                                                Ну и IPv6 везде уберите, если не используете.

                                                                Утром допишу статью.
                                                                • 0
                                                                  Если вы в дополнении к статье расскажете про установку рекурсивного DNS, с конфигурацией, блокирующей обращения к доменам Google Analytics и Яндекс.Метрики, будет просто замечательно.
                                                  • 0
                                                    Ключик в формате p12 положил в корень вебсервера на машине, где установлен strongswan, при открытии его браузером получаю «крокозябры» вместо предложения установить сертификат, как это происходит с cer-файлами.
                                                    Думаю, дело в Content-Type.
                                              • +1
                                                Мои 5 копеек, чтобы осталось для поисковиков.
                                                1. Для того чтобы IPsec в IOS7/8 не спрашивал пароль нужно в профиле *.mobileconfig который получен с помощью Apple Configurator добавить следующее:
                                                <key>RemoteAddress</key>
                                                <string>ip сервера</string>
                                                <key>XAuthEnabled</key>
                                                <integer>1</integer>
                                                <key>XAuthName</key>
                                                <string>имя пользователя</string>
                                                <key>XAuthPassword</key>
                                                <string>пароль</string>
                                                

                                                2. На MacOS X 10.10.2 в нативном клиенте нет поддержки IKEv2, а в IKEv1 есть проблемы разрывом соединения из-за XAuth.
                                                • +1
                                                  3. В Windows Phone(в другом windows phone может быть иначе) при использовании EAP нужно писать в ipsec.secrets имя клиента вот так:

                                                  "Windows Phone\username" : EAP "пароль"
                                                  
                                                  • +1
                                                    Имя домена там вообще непредсказуемо, но это же только для MSCHAP2?
                                                    Когда я делал MSCHAP2, я передавал обработку EAP на RADIUS и отрезал доменное имя его фильтрами.
                                                    • 0
                                                      Не уверен насчёт только MSCHAP2.
                                                  • 0
                                                    Правильно я понял, что оверхэд у IPsec в tunnel mode меньше, чем у L2TP/IPsec как transport? Кстати можно ли L2TP/IPsec использовать как tunnel?
                                                    • 0
                                                      Да, ведь L2TP инкапсулирует Ethernet, а не IP.
                                                      Кстати можно ли L2TP/IPsec использовать как tunnel?
                                                      Можно, наверное, но зачем? Для IPsec в транспортном режиме весь L2TP-пакет является данными, поэтому будет зашифрован, а т.к. L2TP-сервер расположен на этом же IP, что и IPsec, то в Destination IP будет IP-адрес сервера.
                                                      • 0
                                                        Классический L2TP не умеет инкапсулировать Ethernet. Эта возможность была добавлена только недавно в рамках L2TPv3.
                                                        До этого там внутри был обычный ppp, и L2 в названии означало совсем другое — возможность работы не только поверх IP, но и поверх L2 сетей типа ATM.

                                                        Преимущество L2TP — работа через любой NAT любого количества клиентов с одним и тем же сервером без малейших проблем.
                                                    • +1
                                                      В статье полно грубых неточностей:

                                                      Security Association (SA) — протокол для настройки AH или ESP
                                                      SA — это не протокол, это просто Security Association, параметры безопасности.

                                                      Туннельный режим. Подписывает (если AH) и шифрует (если ESP) весь пакет.

                                                      Во первых, ESP тоже подписывает пакет. Во-вторых, ESP подписывает не весь пакет, а только его часть, AH подписывает весь пакет включая туннельный IP. Именно поэтому не верна следующая информация:

                                                      AH и ESP используют свои протоколы (не порты TCP/UDP, а протоколы), но в современном мире, где NAT стоит за NAT у NAT с NAT'ом, следует использовать что-то более привычное, поэтому сейчас повсеместно используется инкапсуляция AH и ESP-пакетов в UDP.

                                                      AH не совместим с Travers-NAT, т.к. он подписывает весь пакет вместе с UDP, соответственно при прохождении через NAT при трансляции портов нарушается целостность. Второй момент. Сама формулировка AH и ESP используют свои протоколы кривая. ESP и AH — не используют никакие протоколы. Грамотно было бы написать вот так — AH и ESP — транспортные протоколы, инкапсулируемые прямо в IP и имеют собственные значение для поля Protocol в IP-заголовке, ESP — 50, AH — 51. И кстати у этих протоколов есть аналог портов — SPI, который используется для мультиплексирования, так же, как и порты в UDP/TCP.
                                                      • 0
                                                        Да, хочу добавить, что де-факто AH больше не используется, используется только ESP.
                                                        • 0
                                                          Спасибо за замечания!
                                                          Туннельный режим. Подписывает (если AH) и шифрует (если ESP) весь пакет.
                                                          Во первых, ESP тоже подписывает пакет.
                                                          Я не знаю, как лучше переформулировать, поэтому и написал «и», а не «или». Т.е. подписывает AH и шифрует ESP, а не подписывает AH или шифрует ESP.
                                                        • 0
                                                          А как несколько клиентов живут на одном сервере? Для них нужно создавать отдельный интерфейс?
                                                        • 0
                                                          А не известно о добавлении поддержки openvpn на WP? Было бы гораздно проще
                                                          • 0
                                                            Он не нужен Microsoft, а сторонние VPN API WP не позволяет делать.
                                                            • 0
                                                              Жаль. Но он нужен пользователям. Соответственно и МС должен быть нужен. Надеюсь все же сделают позже
                                                              • 0
                                                                Зачем если они все дружно пилят ikev2, и apple и microsoft его внедрили.
                                                          • 0
                                                            Статья обновлена: добавлен параметр leftid в конфигурационный файл, чтобы обойти баг IKEv2 в новом OS X El Capitan, добавлены 3des в ike и esp, тоже для El Capitan (если настраиваете через интерфейс, нельзя поменять cipher, только 3des).
                                                            • 0
                                                              Спасибо за хинт с багой маршрутизации. По следам вышел на workaround — тут
                                                              bugs.launchpad.net/ubuntu/+source/strongswan/+bug/1309594/comments/8

                                                              А в кратце на хосте для venet (а в моем случае для vethX.0) интерфейса надо выставить
                                                              echo 1 > /proc/sys/net/ipv4/conf/veth24.0/disable_policy

                                                              и маршрутизация заработала.
                                                              • 0
                                                                О, спасибо!
                                                                • 0
                                                                  По ходу выяснилось что внутри VE нод, которые хотят получать трафик с IPSEC VE тоже надо это делать для venet0
                                                              • 0
                                                                В strongswan-e (включая последние версии 5.4-rc*) есть неприятный глюк.
                                                                Поверх ikev6 в виндовые клиенты не передаётся default-route для ipv6.
                                                                Кто-то может подсказать, какой другой ikev2-софт можно поставить на линукс, чтобы обойти этот глюк?
                                                                Спасибо.
                                                                • 0
                                                                  Это не глюк, это такая реализация в Windows. Нужно отправлять Router Advertisement прямо внутри туннеля, чтобы Windows устанавливал маршрут, и еще и периодически их слать после подключения, чтобы маршрут не потерялся (Windows не запрашивает Router Solicitation).

                                                                  https://wiki.strongswan.org/issues/817 (мой комментарий)
                                                                  www.mail-archive.com/users%40lists.strongswan.org/msg09241.html
                                                                  • 0
                                                                    У меня не заработал этот обход.
                                                                    Не стала винда реагировать на эти advertisements через туннельный интерфейс от strongswan с плагинами kernel-libipsec и link-local-ts.
                                                                    У вас получилось?
                                                                    Что у вас для туннельного интерфейса было написано в radvd.conf ?

                                                                    Что касается реализации в Windows. От Microsoft RAS получет же винда default route нормально.
                                                                    • 0
                                                                      Да, у меня работает, именно с kernel-libipsec.
                                                                      radvd.conf:

                                                                      interface ipsec0
                                                                      {
                                                                             AdvSendAdvert on;
                                                                             MinRtrAdvInterval 30;
                                                                             MaxRtrAdvInterval 100;
                                                                             UnicastOnly on;
                                                                             AdvLinkMTU 1300;
                                                                      };

                                                                      Вы патч применили, плагин включили?
                                                                      • 0
                                                                        Применили, включили.
                                                                        То есть ничего особого неожиданного не написано в radvd-шном конфиге?
                                                                        Странно это всё…
                                                                        Я вот так и не понял почему винда не реагирует на advertisements… Может, ещё поупражняться надо…
                                                                        У вас, кстати, на которой клиентской винде заработало? Может, в версии винды ещё тоже дело?
                                                                        • 0
                                                                          Посмотрите сниффером, действительно ли ходят Solicitation и Advertisement, или что-то не так настроили. Тестировал на Windows 7 и 10.
                                                                          • 0
                                                                            Смотрел на стороне линукса, ходили.
                                                                            Жаль, на стороне винды не посмотришь. Wireshark на туннельнх интерфейсах не хочет. :-(
                                                                            Или мож есть чего из виндовых снифферов не pcap-based, пофичастее?...
                                                                            • 0
                                                                              Насколько я знаю, на Windows действительно нельзя PPP-интерфейсы прослушивать.
                                                                              Каков вывод swanctl -l с подключенным клиентом?
                                                                              • 0
                                                                                Сейчас уже не скажу. Надо снова тестовую лабу поднять.
                                                                                Но я обязаткельно в этот тред ещё отпишусь через некотрое время. :-)
                                                                                Спасибо вам за участие!
                                                                                Кстати, а почеу этот плагин (link-local-ts) в официальный код всё не попадает?
                                                                                • 0
                                                                                  Кстати, а почеу этот плагин (link-local-ts) в официальный код всё не попадает?
                                                                                  Не знаю, разработчики не торопятся пока.
                                                                • 0
                                                                  С
                                                                  • 0
                                                                    При попытке подключения к серверу из под Windows 7, возникает ошибка 13806. Сертификаты генерировал как в Вашей статье. Пробовал создавать сертификаты с паролем и без, пробовал отключить проверку. Результат нулевой.
                                                                    В процессе поисков нашел вот эту статью, но она не помогла. С телефона, под управлением Android, туннель поднимается нормально. В чем может быть проблема?
                                                                    • 0
                                                                      Вы по доменному имени подключаетесь, или по IP? Что на стороне сервера в логах?
                                                                      • 0
                                                                        Подключаюсь по доменному имени. Вот лог

                                                                        Mar  2 17:23:34 16[IKE] <ikev1|1> sending keep alive to ххх.59.119.ххх[61728]
                                                                        Mar  2 17:23:37 09[NET] <3> received packet: from ххх.27.194.ххх[500] to 172.16.10.1[500] (528 bytes)
                                                                        Mar  2 17:23:37 09[ENC] <3> parsed IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) ]
                                                                        Mar  2 17:23:37 09[IKE] <3> ххх.27.194.ххх is initiating an IKE_SA
                                                                        Mar  2 17:23:37 09[IKE] <3> local host is behind NAT, sending keep alives
                                                                        Mar  2 17:23:37 09[IKE] <3> remote host is behind NAT
                                                                        Mar  2 17:23:37 09[IKE] <3> sending cert request for "CN=IPsec CA"
                                                                        Mar  2 17:23:37 09[ENC] <3> generating IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) CERTREQ N(MULT_AUTH) ]
                                                                        Mar  2 17:23:37 09[NET] <3> sending packet: from 172.16.10.1[500] to ххх.27.194.ххх[500] (333 bytes)
                                                                        Mar  2 17:23:52 11[IKE] <ikev1|1> sending DPD request
                                                                        Mar  2 17:23:52 11[ENC] <ikev1|1> generating INFORMATIONAL_V1 request 525638760 [ HASH N(DPD) ]
                                                                        Mar  2 17:23:52 11[NET] <ikev1|1> sending packet: from 172.16.10.1[4500] to 176.ххх.119.ххх[61728] (92 bytes)
                                                                        Mar  2 17:23:55 13[NET] <ikev1|1> received packet: from 176.ххх.119.ххх[61728] to 172.16.10.1[4500] (108 bytes)
                                                                        Mar  2 17:23:55 13[ENC] <ikev1|1> parsed INFORMATIONAL_V1 request 2466957200 [ HASH N(DPD_ACK) ]
                                                                        Mar  2 17:23:57 14[IKE] <3> sending keep alive to ххх.27.194.ххх[500]
                                                                        • 0
                                                                          Так у вас CA в Windows импортирован? В системную ключницу, а не пользовательскую? CA нельзя импортировать двойным кликом в Windows 7.
                                                                          https://wiki.strongswan.org/projects/strongswan/wiki/Win7Certs
                                                                          • 0
                                                                            Именно так я и делал.

                                                                            image
                                                                            • 0
                                                                              А x220, видимо, клиентский? Он должен быть в "личное", а не в "доверенные корневые центры сертификации".
                                                                              • 0
                                                                                Большое спасибо, все заработало! Можно еще один вопрос, вы случаем не сталкивались с установкой strongswan в openvz контейнер. Проблема в том, что не ходит трафик при поднятии туннеля. В интернете пишут что необходимо в контейнере добавить

                                                                                net.ipv4.conf.eth0.disable_policy=1
                                                                                net.ipv4.conf.eth0.disable_xfrm=1

                                                                                Не помогло.
                                                                                • 0
                                                                                  Надо и на хост-ноде изменять настройки. Если вы не владелец хоста, а используете VPS под OpenVZ, то куда проще использовать kernel-libipsec, это userspace-вариант, который использует tun, и прекрасно работает в OpenVZ. Если у вас Debian, то придется перекомпилировать, если какая-нибудь Fedora или CentOS, то там в репозиториях есть.
                                                                                  • 0
                                                                                    Хост под моим управлением. Сейчас попробовал добавить и на хосте, не помогло

                                                                                    echo 1 > /proc/sys/net/ipv4/conf/venet0/disable_policy
                                                                                    echo 1 > /proc/sys/net/ipv4/conf/venet0/disable_xfrm

                                                                                    P.S. на хосте CentOS 2.6.32-042stab113.11
                                                                          • 0
                                                                            Тоже получаю 13806 для IKEv2, в win7 все сертификаты импортированы, в логах:

                                                                            Jul 12 15:00:09 strongswan charon[31013]: 12[NET] received packet: from 1.1.1.1[500] to 2.2.2.2[500] (792 bytes)
                                                                            Jul 12 15:00:09 strongswan charon[31013]: 12[ENC] parsed IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) ]
                                                                            Jul 12 15:00:09 strongswan charon[31013]: 12[IKE] 1.1.1.1 is initiating an IKE_SA
                                                                            Jul 12 15:00:09 strongswan charon[31013]: 12[IKE] 1.1.1.1 is initiating an IKE_SA
                                                                            Jul 12 15:00:09 strongswan charon[31013]: 12[IKE] remote host is behind NAT
                                                                            Jul 12 15:00:09 strongswan charon[31013]: 12[IKE] sending cert request for "CN=domain.me"
                                                                            Jul 12 15:00:09 strongswan charon[31013]: 12[ENC] generating IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) CERTREQ N(MULT_AUTH) ]
                                                                            Jul 12 15:00:09 strongswan charon[31013]: 12[NET] sending packet: from 2.2.2.2[500] to 1.1.1.1[500] (337 bytes)
                                                                            


                                                                            iOS 9 тоже не подключается. Единственное, что работает это strongswan client для android
                                                                            Как быть?
                                                                            • 0
                                                                              Возможно, проблема в сертификате. По крайней мере, со стороны сервера все выглядит нормально.
                                                                              • 0
                                                                                Да, в Win7 у меня почему-то была открыта оснастка для Current User, добавил в Local Computer и всё заработало. Спасибо
                                                                      • 0
                                                                        Есть вариант без необходимости импортировать в клиентскую систему какие-либо сертификаты https://hub.zhovner.com/geek/universal-ikev2-server-configuration/
                                                                      • 0
                                                                        ValdikSS, не знаю, как других, а меня вы точно запутали. Раз в своё время начали использовать такую связку, IPsec+L2TP, значит зачем-то оно было надо? Нет, конечно тем, кто сходу перечислит 7 уровней модели OSI (в правильном порядке) оно может быть очевидно, но я к ним, к сожалению, не отношусь… Вообще, каково предназначение чистого L2TP, и отдельно IPsec?
                                                                        • +1
                                                                          Раз в своё время начали использовать такую связку, IPsec+L2TP, значит зачем-то оно было надо?
                                                                          До Windows 7 в Windows была поддержка IPsec только в транспортном режиме, только с PSK, и ее нужно было настраивать вручную через правила файрволла. Поэтому и использовали L2TP для аутентификации и установления L2-туннеля, а IPsec — для шифрования L2TP-туннеля.

                                                                          В наше время, когда поддержка IKEv2 или хотя бы IKEv1 есть везде, L2TP нужен только в том случае, если вам нужна L2-связность, т.е. нужно, чтобы в сети можно было передавать broadcast, multicast трафик. Обычно нужна только L3-связность, поэтому L2TP использовать нецелесообразно — он повышает накладные расходы на инкапсуляцию, что сказывается на размере пакета и производительности.
                                                                          • 0
                                                                            А что может быть, если и ipsec statusall без ошибок, и systemctl status strongswan вроде тоже, а в выводе netstat ни намёка на порты 500 или 4500?

                                                                            И ещё до кучи вопрос. Вот у OpenVPN свой виртуальный адаптер — там понятно, виртуальный адаптер — виртуальный адрес: у сервера .1, у клиентов .2 .3 .4 и тп. А как это работает с IPsec, если клиент получит адрес из 192.168.103.0/24 он же там будет в полном одиночестве? Форвардинг только ради этого включать не хочется.
                                                                            • 0
                                                                              А что может быть, если и ipsec statusall без ошибок, и systemctl status strongswan вроде тоже, а в выводе netstat ни намёка на порты 500 или 4500?
                                                                              Вы соединения в конфигурации указали?

                                                                              Работает это для strongSwan следующим образом: когда подключается клиент, ему выдается IP-адрес, и маршрут до этого IP-адреса (/32 в случае IPv4) заносится в таблицу машрутизации 220, и, конечно, в ядро добавляется xfrm-запись для этого IP. Не уверен, можно ли как-то сделать так, чтобы клиенты могли обмениваться трафиком друг с другом без включения forwarding. Возможно, сетевые интерфейсы vti вам в этом помогут. Вот только зачем?
                                                                              • 0
                                                                                Покажите ipsec.conf.
                                                                                • 0
                                                                                  Показываю

                                                                                  # ipsec.conf - strongSwan IPsec configuration file
                                                                                  config setup
                                                                                  # strictcrlpolicy=yes
                                                                                  # uniqueids = no

                                                                                  conn %default
                                                                                  keyexchange=ikev2

                                                                                  ike=aes256gcm16-aes256gcm12-aes128gcm16-aes128gcm12-sha256-sha1-modp2048-modp4096-modp1024,aes256-aes128-sha256-sha1-modp2048-modp4096-modp1024,3des-sha1-modp1024!
                                                                                  esp=aes128gcm12-aes128gcm16-aes256gcm12-aes256gcm16-modp2048-modp4096-modp1024,aes128-aes256-sha1-sha256-modp2048-modp4096-modp1024,aes128-sha1-modp2048,aes128-sha1-modp1024,3des-sha1-modp1024,aes128-aes256-sha1-sha256,aes128-sha1,3des-sha1!

                                                                                  dpdaction=clear
                                                                                  dpddelay=35s
                                                                                  dpddelay=300s
                                                                                  rekey=no

                                                                                  left=%any
                                                                                  leftauth=pubkey
                                                                                  leftid=backdoor.vk.com
                                                                                  leftcert=vpnhostcert.der
                                                                                  leftsendcert=always
                                                                                  leftsubnet=0.0.0.0/0

                                                                                  right=%any
                                                                                  rightauth=pubkey
                                                                                  rightsourceip=10.2.2.0/24
                                                                                  #rightdns=8.8.8.8,2001:4860:4860::8888

                                                                                  conn ikev2-pubkey
                                                                                  keyexchange=ikev2
                                                                                  auto=add

                                                                                  Вы соединения в конфигурации указали?
                                                                                  Если речь про conn, то вроде бы, одно. Яблочной техникой не пользуюсь.

                                                                                  клиенты могли обмениваться трафиком друг с другом
                                                                                  Так этого и не требуется. Обычный домашний NAS/htpc.

                                                                                  Вот только зачем?
                                                                                  Чтобы не настраивать iptables и ломать голову кому что можно, а кому нельзя…
                                                                                  • 0
                                                                                    Какая у вас версия strongswan?

                                                                                    Посмотрите вывод ipsec listall, представлена ли в нем корректно цепочка сертификатов.

                                                                                    Есть ли у самого первого сверху сертификата такая строка:
                                                                                    pubkey:    RSA 4096 bits, has private key
                                                                                    


                                                                                    Если нет, убедитесь, что вы правильно разложили файлы сертификатов и ключ в папки.
                                                                                    Вот здесь есть подробное описание https://hub.zhovner.com/geek/universal-ikev2-server-configuration/

                                                                                    Включите отладку:
                                                                                    conn setup
                                                                                    
                                                                                     charondebug = ike 3, cfg 3
                                                                                    


                                                                                    И посмотрите лог при запуске `journalctl -f -u strongswan`
                                                                                    • 0
                                                                                      Я как белый человек доверил сборку профессионалам (в смысле, с репов убунтовских скачал).

                                                                                      Поэтому версия 5.3.5:
                                                                                      dpkg -l | grep swan
                                                                                      dpkg -l | grep swan
                                                                                      ii libstrongswan 5.3.5-1ubuntu3 amd64 strongSwan utility and crypto library
                                                                                      ii libstrongswan-standard-plugins 5.3.5-1ubuntu3 amd64 strongSwan utility and crypto library (standard plugins)
                                                                                      ii strongswan 5.3.5-1ubuntu3 all IPsec VPN solution metapackage
                                                                                      ii strongswan-charon 5.3.5-1ubuntu3 amd64 strongSwan Internet Key Exchange daemon
                                                                                      ii strongswan-libcharon 5.3.5-1ubuntu3 amd64 strongSwan charon library
                                                                                      ii strongswan-plugin-xauth-noauth 5.3.5-1ubuntu3 all strongSwan plugin for the generic XAuth backend
                                                                                      ii strongswan-starter 5.3.5-1ubuntu3 amd64 strongSwan daemon starter and configuration file parser
                                                                                      ii strongswan-tnc-base 5.3.5-1ubuntu3 amd64 strongSwan Trusted Network Connect's (TNC) — base files


                                                                                      Строка наличествует:
                                                                                      List of X.509 End Entity Certificates:

                                                                                      List of X.509 End Entity Certificates:

                                                                                      altNames: backdoor.vk.com
                                                                                      subject: «C=RU, O=home, CN=backdoor.vk.com»
                                                                                      issuer: «C=RU, O=home, CN=strongswan root ca»
                                                                                      serial:…
                                                                                      validity: not before Aug 27 17:18:00 2016, ok
                                                                                      not after Jul 06 17:18:00 2026, ok
                                                                                      pubkey: RSA 4096 bits, has private key
                                                                                      keyid:…
                                                                                      subjkey:…
                                                                                      authkey:…

                                                                                      List of X.509 CA Certificates:

                                                                                      subject: «C=RU, O=home, CN=strongswan root ca»
                                                                                      issuer: «C=RU, O=home, CN=strongswan root ca»
                                                                                      serial:…
                                                                                      validity: not before Aug 27 17:05:23 2016, ok
                                                                                      not after Aug 25 17:05:23 2026, ok
                                                                                      pubkey: RSA 4096 bits
                                                                                      keyid:…
                                                                                      subjkey:…

                                                                                      Отладочный лог получить не смог, наверное что-то не так делаю… Прикладываю обычный.
                                                                                      Лог
                                                                                      — Logs begin at Вс 2016-08-28 00:56:57 +06. — авг 29 03:15:21 sweethome-server charon[14797]: 00[CFG] opening triplet file /etc/ipsec.d/triplets.dat failed: No such file or directory
                                                                                      авг 29 03:15:21 sweethome-server charon[14797]: 00[CFG] loaded 0 RADIUS server configurations
                                                                                      авг 29 03:15:21 sweethome-server charon[14797]: 00[LIB] loaded plugins: charon test-vectors aes rc2 sha1 sha2 md4 md5 random nonce x509 revocation constraints pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl fips-prf gmp agent xcbc hmac gcm attr kernel-netlink resolve socket-default connmark farp stroke updown eap-identity eap-sim eap-sim-pcsc eap-aka eap-aka-3gpp2 eap-simaka-pseudonym eap-simaka-reauth eap-md5 eap-gtc eap-mschapv2 eap-dynamic eap-radius eap-tls eap-ttls eap-peap eap-tnc xauth-generic xauth-eap xauth-pam xauth-noauth tnc-tnccs tnccs-20 tnccs-11 tnccs-dynamic dhcp lookip error-notify certexpire led addrblock unity
                                                                                      авг 29 03:15:21 sweethome-server charon[14797]: 00[LIB] dropped capabilities, running as uid 0, gid 0
                                                                                      авг 29 03:15:21 sweethome-server charon[14797]: 00[JOB] spawning 16 worker threads
                                                                                      авг 29 03:15:21 sweethome-server ipsec_starter[14796]: charon (14797) started after 60 ms
                                                                                      авг 29 03:15:21 sweethome-server charon[14797]: 04[CFG] received stroke: add connection 'ikev2-pubkey'
                                                                                      авг 29 03:15:21 sweethome-server charon[14797]: 04[CFG] adding virtual IP address pool 10.2.2.0/24
                                                                                      авг 29 03:15:21 sweethome-server charon[14797]: 04[CFG] loaded certificate «C=RU, O=sweethome, CN=blablabla» from 'vpnhostcert.der'
                                                                                      авг 29 03:15:21 sweethome-server charon[14797]: 04[CFG] added configuration 'ikev2-pubkey'


                                                                                      config setup
                                                                                        # strictcrlpolicy=yes
                                                                                        # uniqueids = no
                                                                                        charondebug = "ike 4, cfg 4"

                                                                                      • 0
                                                                                        А вы точно уверены, что есть проблема с биндингом портов?

                                                                                        sudo netstat -ntlup  | grep 500
                                                                                        
                                                                                        • 0
                                                                                          Фейспалм… Я похоже ключ n забыл… )
                                                                                          Надо меньше пить больше спать
                                                                                          • 0
                                                                                            Значит, 809-я ошибка из-за чего-то другого. Выше обсуждение читал, но не мой случай видимо. Идёт нормальное соединение… Сервер определяет, что он за натом (роутер, 500 и 4500 порты проброшены), клиент тоже за натом (ничего не проброшено, SNAT). Они договариваются, начинают сессию… а потом… разрыв по таймауту…

                                                                                            Спойлер:
                                                                                            спойлер
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[NET] received packet: from 1.2.3.4[500] to 192.168.100.10[500] (528 bytes)
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[ENC] parsed IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) ]
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[CFG] looking for an ike config for 192.168.100.10...1.2.3.4
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[CFG] ike config match: 28 (192.168.100.10 1.2.3.4 IKEv2)
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[CFG] candidate: %any...%any, prio 28
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[CFG] found matching ike config: %any...%any with prio 28
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 1.2.3.4 is initiating an IKE_SA
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] IKE_SA (unnamed)[1] state change: CREATED => CONNECTING
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[CFG] selecting proposal:
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[CFG] no acceptable ENCRYPTION_ALGORITHM found
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[CFG] selecting proposal:
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[CFG] no acceptable ENCRYPTION_ALGORITHM found
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[CFG] selecting proposal:
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[CFG] no acceptable ENCRYPTION_ALGORITHM found
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[CFG] selecting proposal:
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[CFG] no acceptable ENCRYPTION_ALGORITHM found
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[CFG] selecting proposal:
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[CFG] no acceptable ENCRYPTION_ALGORITHM found
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[CFG] selecting proposal:
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[CFG] no acceptable ENCRYPTION_ALGORITHM found
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[CFG] selecting proposal:
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[CFG] no acceptable ENCRYPTION_ALGORITHM found
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[CFG] selecting proposal:
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[CFG] proposal matches
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[CFG] received proposals: IKE:3DES_CBC/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024, IKE:AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024, IKE:3DES_CBC/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_1024, IKE:AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_1024, IKE:3DES_CBC/HMAC_SHA2_384_192/PRF_HMAC_SHA2_384/MODP_1024, IKE:AES_CBC_256/HMAC_SHA2_384_192/PRF_HMAC_SHA2_384/MODP_1024
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[CFG] configured proposals: IKE:AES_GCM_16_256/AES_GCM_12_256/AES_GCM_16_128/AES_GCM_12_128/HMAC_SHA2_256_128/HMAC_SHA1_96/PRF_HMAC_SHA2_256/PRF_HMAC_SHA1/MODP_2048/MODP_4096/MODP_1024, IKE:AES_CBC_256/AES_CBC_128/HMAC_SHA2_256_128/HMAC_SHA1_96/PRF_HMAC_SHA2_256/PRF_HMAC_SHA1/MODP_2048/MODP_4096/MODP_1024, IKE:3DES_CBC/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[CFG] selected proposal: IKE:AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] natd_chunk => 22 bytes @ 0x7f…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 0: B3…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 16: C0… ..d…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] natd_hash => 20 bytes @ 0x7f…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 0: 5C… \...U.....S.6gH.
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 16: F3 ...]
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] natd_chunk => 22 bytes @ 0x7f…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 0: B3 5… .V&.7.fY…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 16: C2……
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] natd_hash => 20 bytes @ 0x7f00
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 0: 92 0D .....`..F`F..n…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 16: C5 .5.$
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] precalculated src_hash => 20 bytes @ 0x7f0…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 0: 92… .....`…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 16: C5 .5.$
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] precalculated dst_hash => 20 bytes @ 0x7…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 0: 5C… \...U…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 16: F3… ...]
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] received src_hash => 20 bytes @ 0x7f8…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 0: D3… .)….
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 16: A7 ..(a
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] received dst_hash => 20 bytes @ 0x7f…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 0: 83… .~.}…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 16: C8 ..GR
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] local host is behind NAT, sending keep alives
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] remote host is behind NAT
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] shared Diffie Hellman secret => 128 bytes @ 0x7f0…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 0: 77……
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 16: FB……
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 32: F93……
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 48: 11……
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 64: 4F… O…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 80: B8… .]$.=…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 96: 35… 5… @
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 112: 6F… o…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] SKEYSEED => 20 bytes @ 0x7f…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 0: 31… 1…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 16: B4… .h…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] Sk_d secret => 20 bytes @ 0x7f0
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 0: 7D………
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 16: 8E… ..CS
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] Sk_ai secret => 20 bytes @ 0x7f…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 0: 2E……
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 16: 6B 3F D4 67 k?.g
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] Sk_ar secret => 20 bytes @ 0x7f…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 0: C2…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 16: BE 1D C2 51 ...Q
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] Sk_ei secret => 32 bytes @ 0x7…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 0: 57…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 16: 1C 4…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] Sk_er secret => 32 bytes @…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 0: 97…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 16: E2…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] Sk_pi secret => 20 bytes @…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 0:…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 16: F5… ...U
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] Sk_pr secret => 20 bytes @…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 0:…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 16: 35… 5…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] natd_chunk => 22 bytes @ 0x7f0…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 0: B3…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 16: C0… ..d…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] natd_hash => 20 bytes @ 0x7…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 0: 16…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 16: D3…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] natd_chunk => 22 bytes @…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 0: B3…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 16: C2……
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] natd_hash => 20 bytes @…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 0: 2E…
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] 16: A2……
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[IKE] sending cert request for «C=RU, O=home, CN=strongswan root ca»
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[ENC] generating IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) CERTREQ N(MULT_AUTH) ]
                                                                                            Aug 29 13:04:43 sweethome-server charon: 07[NET] sending packet: from 192.168.100.10[500] to 1.2.3.4[500] (337 bytes)
                                                                                            Aug 29 13:05:01 sweethome-server CRON[14832]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
                                                                                            Aug 29 13:05:03 sweethome-server charon: 06[IKE] sending keep alive to 1.2.3.4[500]
                                                                                            Aug 29 13:05:13 sweethome-server charon: 01[JOB] deleting half open IKE_SA after timeout
                                                                                            Aug 29 13:05:13 sweethome-server charon: 01[IKE] IKE_SA (unnamed)[1] state change: CONNECTING => DESTROYING



                                                                                            • 0
                                                                                              Есть подозрение, что тут без форвардинга всё же никак(
                                                                                              • 0
                                                                                                А что вы хотите получить, включив форвардинг?
                                                                                                • 0
                                                                                                  Да нет, показалось, ничего)

                                                                                                  Тут Павел комментарием ниже намекает, что у меня только UDP-TCP проброшены… и оно да, так и есть, но ведь должен включиться NAT-traversal. Либо не включается, либо одно из двух..? Клиент — семёрка.
                                                                                                  IKEv2
                                                                                                  The IKEv2 protocol includes NAT traversal in the core standard, but it's optional to implement. strongSwan implements it, and there is no configuration involved.
                                                                                                  • 0
                                                                                                    Установил KB2523881 и добавил ключ в реестр для включения traversal — не помогло. Подключается только в пределах локальной сети, а через интернет сначала клиент с сервером обмениваются udp-пакетами isakmp на 500 порт, после этого клиент шлёт группу больших (чуть больше 1500) не-udp пакетов, без номера порта, как я понимаю, это AH или ESP. И тишина, видимо NAT их зарезал. Сервер в это время пытается поддерживать keep-alive, но его пакеты тоже не доходят. Windows делает три попытки и рисует ошибку. Почему же не включается NAT-T?
                                                                                                    • 0
                                                                                                      Что у вас за ОС-то? Windows Vista? Ваша ссылка говорит о ключе реестра для сервера, а не клиента. И вообще, там речь об L2TP.

                                                                                                      Подозреваю, что дело во фрагментации. Windows не поддерживает фрагментацию для IKEv2 (хотя для IKEv1 поддерживает).
                                                                                                      • 0
                                                                                                        Семёрка. В вольном переводе наших русских блоггеров слова «для сервера» как-то потерялись, я тут не виноват)

                                                                                                        Что значит, не поддерживает фрагментацию? Не понимаю. В моём идеальном мире (*где живут только пони*) приложение отправляет кусок данных, а задача системы — разбить его на порции, равные mtu интерфейса. Где-то ещё есть какая-то фрагментация?
                                                                                                        • 0
                                                                                                          Я говорил о фрагментации на уровне протокола. IP-фрагментация, конечно же, поддерживается, но некоторые провайдеры или устройства, по какой-то причине, не пропускают фрагментированные IP-пакеты, например, я с таким сталкивался на мобильном МТС по всей России, и это известная проблема, поэтому приходится использовать фрагментацию на уровне протокола (она работает только во время установки соединения, на передаче данных это не отражается).

                                                                                                          Попробуйте использовать ECDSA-ключи, или RSA 1024. Если заработает, то проблема точно во фрагментации и вашем оборудовании или провайдере.
                                                                                                          • +1
                                                                                                            Всё, я вкурил. Ключи не менял, просто в wireshark поглубже зарылся: действительно, первый пакет IKE_SA_INIT маленький, 570 байт, он проходит. А следующий — IKE_AUTH на уровне IP разбивается на пять с половиной IP-пакетов по 1514 байт, что в сумме даёт 7-8К байт, и его сервер не получает.

                                                                                                            Проверяю с консоли сервера:
                                                                                                            ping 8.8.8.8 -s 64000
                                                                                                            64008 bytes from 8.8.8.8: icmp_seq=1 ttl=57 time=72.8 ms

                                                                                                            А теперь из-под клиента:
                                                                                                            ping 8.8.8.8 -l 4433
                                                                                                            Обмен пакетами с 8.8.8.8 по с 4433 байтами данных:
                                                                                                            Превышен интервал ожидания для запроса.
                                                                                                            
                                                                                                            ping 8.8.8.8 -l 4432
                                                                                                            Обмен пакетами с 8.8.8.8 по с 4432 байтами данных:
                                                                                                            Ответ от 8.8.8.8: число байт=4432 время=92мс TTL=59

                                                                                                            Число 4432, похоже, не случайно. С учётом заголовков 4432 байта укладываются ровно в три IP-пакета по 1514, а 4433 уже не укладываются. Получается, что доблестный пров, хоть и далеко не МТС (а наоборот, один из несчастных, поглощённых Билайном), режет всё, что в сумме больше трёх пакетов.

                                                                                                            Чтоб они долго жили, что ещё сказать…
                                                                                                            • 0
                                                                                                              Если будете у своего провайдера спрашивать причины такого поведения, то меня поставьте в известность, пожалуйста. Я решительно не понимаю, для чего может быть нужна блокировка фрагментированных пакетов.

                                                                                                              А еще вы можете через traceroute отследить, какой конкретно хост их отбрасывает.
                                                                                                              • 0
                                                                                                                Это рабочий интернет, я на провайдера выхода не имею… Хорошо, что я не назвал его вслух, как бы не пришлось извиняться :) Потому что вот тут человек нашёл причину у себя в железе. А у нас в качестве интернет-роутера как раз списанная персоналка «из-нулевых»…
                                                                                                                • 0
                                                                                                                  Поменял сетевушку — не помогло. Кто отбрасывает — выяснить не удалось, я видимо плохо знаю traceroute. До провайдерского «шлюза по-умолчанию» доходят пакеты только с TTL>5, т.е. по логике как минимум 5 невидимых устройств стоят где-то по пути (и могут косячить). Обычно в выводе утилиты такое обозначается звёздочками, но тут — нет, как ни в чём ни бывало, рисует сразу шлюз. Ну, в любом случае, это уже не наша инфраструктура, я конечно сообщил, там чешут репу, но на результат можно не надеяться.

                                                                                                                  Кстати, c местным франчайзи Beeline KZ (Кар-Тел), тоже не работает пинг с пакетами больше 14XX. Однако ж VPN подключается влёт. Чудеса?
                                                                                                                  • +1
                                                                                                                    Может быть такое, что зарезают только большие ICMP-пакеты, например, а не все.
                                                                                                • 0
                                                                                                  С какого клиента вы подключаетесь? Какой версии windows?

                                                                                                  Как вы настраивали форвардинг портов 500 и 4500 на роутере за которым находится strongswan?
                                                                                                  Помимо UDP могут использоваться протоколы ESP, IKE. Не уверен использует ли их windows, или инкапсулирует все в UDP, но попробуйте на всякий случай прокинуть и эти протоколы на те же порты.

                                                                                                  Вы уверены, что правильно импортировали клиентский сертификат + ключ + корневой сертификат в windows? Я отправил вам в личных сообщениях видео как добавляется сертификат в windows 7.
                                                                                • 0
                                                                                  Так и не удается настроить по статье. Получаю neagent[58163]: Received error: Error (Authentication Failed) на OS X и iOS.

                                                                                  Не ясно, как сервер понимает, что пользователь «свой». Просто глядя на то, что его сертификат подписан тем же CA, чьи ключи указаны в ipsec.secrets?

                                                                                  Не ясно куда копать. Вроде бы все рекомендации и инструкции учел. Только вот dns имени нет, указывал везде и всюду вместо него IP адрес…
                                                                                  • 0
                                                                                    Удалось ли побороть проблему? По трем разным тьюториалам пытался поднять — все бестолку (MacOS Sierra).
                                                                                    • +1
                                                                                      Используете самодписаный сертификат? Попробуйте мой способ hub.zhovner.com/geek/universal-ikev2-server-configuration/
                                                                                      • 0
                                                                                        Пробовать, видимо, придется, но почему ни один из трех рецептов с самоподписными не сработал — вопрос :-(
                                                                                        • 0
                                                                                          Собственная инфраструктура публичных ключей не такая простая задача как думает ValdikSS. Чаще всего трудности возникают именно с этим.

                                                                                          Почему бы не использовать бесплатный x509 сертификат от того же letsencrypt если на всех системах он гарантированного работает?
                                                                                        • 0
                                                                                          > Remote EAP identity: putin

                                                                                          Все получилось, спасибо огромное!
                                                                                      • 0
                                                                                        Не ясно, как сервер понимает, что пользователь «свой». Просто глядя на то, что его сертификат подписан тем же CA, чьи ключи указаны в ipsec.secrets?
                                                                                        Аутентификация будет успешна, если клиент предоставит любой сертификат, чей CA есть в директории /etc/ipsec.d/cacerts. Ограничение CA регулируется директивой rightca

                                                                                        Может не подключаться из-за IP-адреса. По крайней мере в SAN его нужно указывать с параметром IP, а не DNS.
                                                                                      • 0
                                                                                        После недели балета «Лебединое озеро» в попытках подружить андроид 4.4.2 и strongswan сервер НОРМАЛЬНО, непрерывно куря багтрекер StrongSwan, чтобы при подключении, например, на телефоне вайфая не исполнялась прощальная лебединая песня раком, сделал все за полчаса на OpenVPN

                                                                                        Что я могу сказать. Концепция хороша, но сыровато пока
                                                                                        • 0
                                                                                          Здесь вопросы только к отсталому Android, который не развивает vpn фреймворк. На Windows/iOS/MacOS все работает из коробки, в саму операционную систему встроен отличный клиент.
                                                                                          • 0
                                                                                            Основная часть плясок была с клиентом от StrongSwan. Но уж если ты поднял VPN на мобильном интернете и ВНЕЗАПНО включил wifi — всё, пиши пропало, впн типа работает, убить ее нельзя никак, весь трафик идет просто так напрямую

                                                                                            В общем да, наверно андроид виноват больше, но и серверная часть, честно говоря… Там выше прекрасный есть коммент, что StrongSwan предоставляет тысячу и один способ выстрелить в колено
                                                                                            • 0
                                                                                              О, это проблема не клиента strongSwan, а VPNService API в вашей прошивке. В OpenVPN больше костылей для обхода проблем прошивок, поэтому и работает. У вас, случаем, не Cyanogenmod? Там вечно VPNService сломанный.
                                                                                              • 0
                                                                                                Lenovo A536, прошивка родная, рутованная правда, но я не выпиливал и не менял ничего, что могло бы иметь отношение

                                                                                                так что да, вот такой вот андроид
                                                                                          • 0
                                                                                            Попробуйте клиент strongSwan, а не встроенный в Android
                                                                                          • 0
                                                                                            Может ли strongSwan работать без аутентификации пользователя или сервера?

                                                                                            Как это выглядит на сервере? Создаётся дополнительный интерфейс на который маршрутизируются пакеты?

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

                                                                                            Задача — на сервере есть «белый» IP, и три «чёрные» внутренние сети, которые ходят во внешний мир через NAT. Нужно добавить виртуальную четвёртую внутреннюю сеть, по которой ходили бы бродкасты от внутренних сетей, для неограниченного числа пользователей, и из которой можно было бы ходить в интернет через NAT с белого айпи.

                                                                                            Мотивация очень простая — хочется время от времени рубануть по сетке в игрушки, координирующиеся по бродкасту, при этом игроков неограниченное число, и часть из них находится у меня в гостях (то есть в физических трёх сетях. Также хочется, находясь в странах с меньшей свободой информации, чем в России, мочь выйти в интернет с русского айпи.

                                                                                            Как реализовать неограниченность пользователей — вообще непонятно. Но тут-то ладно, в принципе можно заводить UNIX-пользователей на машине, только понять, как бы сказать серверу впн проверять не свой файл secrets, а использовать системную аутентификацию.

                                                                                            Но это пол-беды. Полная беда в том, что под одним пользователем должны подключаться много машин. (Ну, как минимум, мои собственные лаптоп, воркстейшен и телефон.)

                                                                                            В strongSwan не радует, что приходится устанавливать сертификат на каждую клиентскую машину. Хотелось бы обходиться без этого. Может быть, лучше всего было бы хранить публичный ключ от сервера в DNS.
                                                                                            • 0
                                                                                              На сколько я понял из документации, есть несколько методов аутентификации, в т.ч. и по пользователю/паролю
                                                                                              https://wiki.strongswan.org/projects/strongswan/wiki/IntroductiontostrongSwan#Authentication-Basics
                                                                                              • –1
                                                                                                Вам бы научиться документацию читать
                                                                                                • 0
                                                                                                  Когда-то интересовался этим вопросом, тоже хотел организовать сеть для игр.
                                                                                                  Вопрос сложный. Давайте по пунктам.
                                                                                                  1) Организовать броадкаст-домен не так уж и просто. Скорее всего придется ставить L2TP-туннель поверх IPsec-а. Это несложно, материала по этой теме полно, но лично я этой темой не интересовался. Ещё есть некий плагин, но его я тоже не пробовал.
                                                                                                  2) По поводу неограниченного количества клиентов — вообще не проблема. Никто не мешает всем пользователям иметь один и тот же логин/сертификат. Unix-пользователи тут вообще не при чем, у strongswan по умолчанию своя база пользователей. Но если очень хочется, есть плагин для PAM-аутентификации.
                                                                                                  3) По поводу сертификата есть две новости, хорошая и плохая. Хорошая — для создания сертификата вполне подойдет сервис Let's Encrypt, сертификаты у него вполне валидные и не требуют ручного импорта в систему. Плохая — Windows почему-то не доверяет им (конкретно IPsec, браузеры отлично работают). Может быть я где-то накосячил, но практика дала такие результаты. С другой стороны, в Win10 импорт сертификатов — секундное действие. Ещё есть штука под названием PSK-аутентификация, которой сертификаты вообще не нужны, но Windows-клиенты не позволяют её настроить из GUI.
                                                                                                  Итого. Для игр я бы организовал VPN на основе OpenVPN (в L2-режиме) или PPTP, а для своих нужд — IPsec в соответствие со статьей. Если у вас есть какие-то другие идеи — пишите, мне тоже интересно :)
                                                                                                  • 0
                                                                                                    Windows почему-то не доверяет им (конкретно IPsec, браузеры отлично работают)


                                                                                                    Использую сертификат от WoSign (StartCom) для ipsec и для https. В большинстве случаев, на windows нет проблем, аутентификация сервера проходит успешно. Этот же сертификат прикручен к веб-серверу https://zhovner.com

                                                                                                    Иногда только возникают проблемы на старых редакциях windows 7, на которых отключены обновления. Не знаю точно в чем дело, но винду не устраивает серверный сертификат. Причем проблема проходит сама спустя несколько часов после настройки подключения.Звучит странно, но такое поведение многократно повторялось именно в этом виде на разных машинах. Так что попробуйте проверить подключиться потом.