Pull to refresh

Comments 166

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

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

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

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

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

image

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

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

Кстати, можно использовать не только RSA, но и ECDSA-ключи.
Только в OS X не работает split-dns и не поддерживает IKEv2, который защищён от MitM благодаря серверному сертификату.
Круто, спасибо за информацию!
В homebrew всегда актуальный strongswan, правда он крашится при попытке создать ipv6 интерфейс, но с ipv4 работает не плохо.
Главное чтобы в этот раз они нормально сделали split-tunnel, а то после Lion он перестал работать. Вы случайно не в курсе, стандарт эту штуку предусматривает?
Может кто подскажет, как завести родной IKEv2 клиент Windows 7> вообще без ключей?
Клиент без проблем авторизируется с
rightauth=eap-mschapv2

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

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

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

Зачем использовать PPTP, когда есть IPsec?
А можно ссылку про OpenVPN на Cisco?
Как и хабраюзер 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 на конечных устройствах — это доставляет очень много боли.
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 полно.
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, что привело работающие решения в неработающие.
Некоторые роутеры настроены по умолчанию для VPN пакетов заменять только source IP, таким образом от двух клиентов за NAT приходят «неотличимые» запросы и когда приходит ответ NAT отвечает только одному клиенту
В рассылке говорится о L2TP+IPsec, а он работает в транспортном режиме, а не туннельном, но раз вы говорите, что отказались от IPsec из-за этой проблемы, то она, вероятно, частая, хоть я с ней (пока) не сталкивался.
В iOS ≥ 9 сделали нормальный ikev2.
Спасибо огромное за статью, давно ждал именно этой темы. Какое-то время назад для себя настраивал туннель по 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

Спасибо!
Серверный сертификат должен обладать 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 помогает роутеры ломать»
Эх, нету счастья.

Во-первых, версия 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)

Надо, если вам нужна маршрутизация, как и при обычной настройке NAT.
Во-вторых, у вас в /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 замечально импортируется.
Скопировал и вставил в 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-файлами.
Ну а в /etc/ipsec.secrets он добавлен?
: RSA aws.bougakov.com.key
Вы правы, у меня в имени файла с ключом ошибка, вместо key было расширение pem.

Сертификат в формате p12 удалось импортировать, выслав его на почту — таким манером он установился сразу.
К сожалению, 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]
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
Могу покляться, что ставил 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.
Вы слишком льстите читателям…
Так, похоже, я забыл про:
eap_identity в ikev2-eap-tls:
conn ikev2-eap-tls
    also="ikev2-pubkey"
    rightauth=eap-tls
    eap_identity=%identity

Попробуйте, пожалуйста. Если не сработает, поставьте eap_identity=%any и попробуйте снова.
Теперь получилось [в варианте с %identity], спасибо. Но NAT победить так и не удалось, у меня есть ощущение, что приведённая вами команда игнорируется — когда я набираю iptables -L, я не вижу, чтобы что-то добавилось.
Нужно iptables -t nat -nL
А если просто iptables -t nat -I POSTROUTING -j MASQUERADE, работает? Если нет, что в tcpdump?
Замена rightdns на Google DNS и использование второй команды решило проблему. VPN поднимается, whatismyip.com открывается и радостно сообщает, что я в Портленде. Спасибо за терпение!
Вы там не забудьте лишние записи удалить в iptables, особенно последнюю, если выполняли ее. Рад, что заработало.
Я рано радовался. Видимо, я упёрся в ту проблему, что из-за одного 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
Из Ubuntu — да, из windows-машины с поднятым VPN — нет (но putty продолжает работать и не теряет соединения).
Хм. Маршрутизацию вы включить не забыли? Вроде забыли, раз пинги ходят. Не могу сказать, в чем проблема. Попробуйте на роутере отключить всякие vpn passthru.
Из вашего лога похоже, что вы таки наступили на ту проблему, что я и описывал выше (несмотря на то, что 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
Кстати, а что это у вас за IPv4-адрес в rightdns, тут нет ошибки?
У меня рекурсивный DNS-сервер на этой же машине. Замените его, например, на 8.8.8.8
Ну и IPv6 везде уберите, если не используете.

Утром допишу статью.
Если вы в дополнении к статье расскажете про установку рекурсивного DNS, с конфигурацией, блокирующей обращения к доменам Google Analytics и Яндекс.Метрики, будет просто замечательно.
Ключик в формате p12 положил в корень вебсервера на машине, где установлен strongswan, при открытии его браузером получаю «крокозябры» вместо предложения установить сертификат, как это происходит с cer-файлами.
Думаю, дело в Content-Type.
Мои 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.
3. В Windows Phone(в другом windows phone может быть иначе) при использовании EAP нужно писать в ipsec.secrets имя клиента вот так:

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

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

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.
Да, хочу добавить, что де-факто AH больше не используется, используется только ESP.
Спасибо за замечания!
Туннельный режим. Подписывает (если AH) и шифрует (если ESP) весь пакет.
Во первых, ESP тоже подписывает пакет.
Я не знаю, как лучше переформулировать, поэтому и написал «и», а не «или». Т.е. подписывает AH и шифрует ESP, а не подписывает AH или шифрует ESP.
А как несколько клиентов живут на одном сервере? Для них нужно создавать отдельный интерфейс?
А не известно о добавлении поддержки openvpn на WP? Было бы гораздно проще
Он не нужен Microsoft, а сторонние VPN API WP не позволяет делать.
Жаль. Но он нужен пользователям. Соответственно и МС должен быть нужен. Надеюсь все же сделают позже
Зачем если они все дружно пилят ikev2, и apple и microsoft его внедрили.
Статья обновлена: добавлен параметр leftid в конфигурационный файл, чтобы обойти баг IKEv2 в новом OS X El Capitan, добавлены 3des в ike и esp, тоже для El Capitan (если настраиваете через интерфейс, нельзя поменять cipher, только 3des).
Спасибо за хинт с багой маршрутизации. По следам вышел на 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

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

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

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

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

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

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]
Именно так я и делал.

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

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

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

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
Т.е. я правильно понимаю, этот параметр нужно добавить как на хосте, так и в контейнер?
Не знаю, честно говоря, не пробовал. Давайте позовем vazir.
Тоже получаю 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
Как быть?
Возможно, проблема в сертификате. По крайней мере, со стороны сервера все выглядит нормально.
Да, в Win7 у меня почему-то была открыта оснастка для Current User, добавил в Local Computer и всё заработало. Спасибо
ValdikSS, не знаю, как других, а меня вы точно запутали. Раз в своё время начали использовать такую связку, IPsec+L2TP, значит зачем-то оно было надо? Нет, конечно тем, кто сходу перечислит 7 уровней модели OSI (в правильном порядке) оно может быть очевидно, но я к ним, к сожалению, не отношусь… Вообще, каково предназначение чистого L2TP, и отдельно IPsec?
Раз в своё время начали использовать такую связку, IPsec+L2TP, значит зачем-то оно было надо?
До Windows 7 в Windows была поддержка IPsec только в транспортном режиме, только с PSK, и ее нужно было настраивать вручную через правила файрволла. Поэтому и использовали L2TP для аутентификации и установления L2-туннеля, а IPsec — для шифрования L2TP-туннеля.

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

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

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

# 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 и ломать голову кому что можно, а кому нельзя…
Какая у вас версия 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`
Я как белый человек доверил сборку профессионалам (в смысле, с репов убунтовских скачал).

Поэтому версия 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"

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

sudo netstat -ntlup  | grep 500
Значит, 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



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

Тут Павел комментарием ниже намекает, что у меня только 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.
Установил KB2523881 и добавил ключ в реестр для включения traversal — не помогло. Подключается только в пределах локальной сети, а через интернет сначала клиент с сервером обмениваются udp-пакетами isakmp на 500 порт, после этого клиент шлёт группу больших (чуть больше 1500) не-udp пакетов, без номера порта, как я понимаю, это AH или ESP. И тишина, видимо NAT их зарезал. Сервер в это время пытается поддерживать keep-alive, но его пакеты тоже не доходят. Windows делает три попытки и рисует ошибку. Почему же не включается NAT-T?
Что у вас за ОС-то? Windows Vista? Ваша ссылка говорит о ключе реестра для сервера, а не клиента. И вообще, там речь об L2TP.

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

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

Попробуйте использовать ECDSA-ключи, или RSA 1024. Если заработает, то проблема точно во фрагментации и вашем оборудовании или провайдере.
Всё, я вкурил. Ключи не менял, просто в 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 уже не укладываются. Получается, что доблестный пров, хоть и далеко не МТС (а наоборот, один из несчастных, поглощённых Билайном), режет всё, что в сумме больше трёх пакетов.

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

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

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

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

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

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

Не ясно куда копать. Вроде бы все рекомендации и инструкции учел. Только вот dns имени нет, указывал везде и всюду вместо него IP адрес…
Удалось ли побороть проблему? По трем разным тьюториалам пытался поднять — все бестолку (MacOS Sierra).
Пробовать, видимо, придется, но почему ни один из трех рецептов с самоподписными не сработал — вопрос :-(
Собственная инфраструктура публичных ключей не такая простая задача как думает ValdikSS. Чаще всего трудности возникают именно с этим.

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

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

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

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

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

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

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

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

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

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

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

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


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

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

Спасибо!
Когда-то натыкался на вашу статью, она ещё актуальна?
Да, вполне. Разве что сертификаты от WoSign больше не валидны в большинстве систем. Так что лучше использовать letsencrypt.

Маленькая заметка про Android (7):
При настройке штатного VPN, для включения "Постоянного VPN" (автоподнятия VPN при любом подключении к интернету) необходимо обязательно в настройках VPN-соединения:


  • в качестве адреса сервера указать IP (не домен)
  • указать в дополнительных параметрах DNS-сервер.

В Android <=6 это отдельная настройка в меню VPN, и там выводится ошибка с этим пояснением. А в Android >=7 эта галка в настройках VPN-соединения, и если ее поставить, не выполнив вышеуказанное — будет просто недоступна кнопка "Сохранить", без каких-либо пояснений.

Для Windows нужен сертификат на конкретный домен, Windows не умеет работать с wildcard-сертификатами для VPN.
аутентификация по SIM-карте в мобильном устройстве

Android и iOS это поддерживают?
А где можно почитать об этом подробнее?
Раньше точно и iOS, и Android поддерживали. Не помню, нужно ли было ставить отдельный софт, или сразу работало, но у Beeline были Wi-Fi-точки для обладателей SIM-карт Beeline, с аутентификацией по SIM.
Технология называется EAP-SIM или EAP-AKA.
Подскажите L2TP без IPsec. Везде инструкции с шифрование, как поднять сервер L2TP без шифрования IPsec
Это, мягко говоря, неправда. Полно инструкций для чистого L2TP. К тому же, не могу сообразить, что вам мешает просто не настраивать IPsec.

image

Да, на скриншоте реализация для конкретного типа устройств, но что-то подсказывает, что принцип работы должен быть одинаков всюду.
Спасибо! Мне надо для Убунту. Просто проблема в том, что если ты не понимаешь вообще, то если инструкция L2TP+IPsec, то ты просто не знаешь как разделить и где, даже если L2TP без шифрования проще.
Просто у меня нет права на ошибку, потому что устанавливать буду удаленно, и если что то зависнет или опрокину интернет, то конец
А что это у вас скриншот за программа?
так это роутер. Мне нужно на компьютере. в Убунту
xl2tpd
Поэтому я и сказал что в интернете в основном инструкции L2TP+IPsec, а мне нужно просто L2TP, а вы не поняли
Я ведь писал же:
Да, на скриншоте реализация для конкретного типа устройств, но что-то подсказывает, что принцип работы должен быть одинаков всюду.

Если на Микротике возможно настроить L2TP без IPsec, не должно ли это означать, что это же возможно сделать на другой платформе?
То что можно, я не сомневался. Я написал лишь что нет отдельно инструкции.
Only those users with full accounts are able to leave comments. Log in, please.