Android l2tp ipsec strongswan

Set up strongSwan on Android (IPsec/IKEv2)

Install strongSwan

First, install the strongSwan app on Google Play.

Download CA certificate

Then download Perfect Privacy’s IPsec CA certificate onto your android device.

Import the CA Certificate

In order for strongSwan to verify the identity of the VPN servers, you must first install the IPsec CA certificate from Perfect Privacy.

In strongSwan, tap on the kebab menu at the top right (three dots) to expand the menu.

Select CA certificates there.

In this view, tap the Kebab menu again and select Import certificate .

A file browser opens.

In the Downloads folder, select the perfect-privacy_ipsec_ca.crt file you just downloaded.

If you cannot find the downloads folder immediately, you can also access it via the Burger menu in the upper left corner (three dashes).

You may now have to choose to open the file with strongSwan.

Confirm the import with Import certificate .

On the Imported tab you can see the imported certificate.

Use the arrow in the upper left corner to return to the main menu.

Create VPN profile

You can now set up any number of VPN profiles.

First select a location to which you want to establish the VPN connection. You will find an overview of the associated URLs on the download page (login required).

Our tip: Choose a location that is geographically as close as possible to achieve the best possible speed.

Once you have selected a location, tap Add VPN Profile at the top.

In the Server text box, enter the URL of the desired location. In the example, this is frankfurt.perfect-privacy.com .

Under Username and Password , enter your Perfect Privacy credentials and save the new profile by tapping Save in the menu at the top.

Establish a VPN connection

Back in the main menu, select the new VPN profile.

If you establish a VPN connection with strongSwan for the first time, you have to allow this once.

After a short moment the VPN connection will be established.

Even if the app is in the background, you can recognize the active VPN connection by the key icon in the status bar.

You can check that the VPN connection is working correctly by going to our Check IP page.

Enable the Kill Switch

If you want to ensure that all of your Internet traffic passes through the VPN tunnel, you can now enable the kill switch.

Please note: With the kill switch activated, the Internet connection is only available if the VPN tunnel is up and running.

To enable the kill switch, go to the Android settings.

Select Network & internet and unfold the Advanced menu.

Touch the gear to the right of strongSwan VPN Client .

In this menu you activate both Always-on VPN and Block connections without VPN .

The kill switch is now active and you can safely use the VPN.

Compatibility: Unfortunately, these options are not available on Huawei and Honor devices (EMUI interface) (as of Android 9.0).

Set up split tunneling

If you like, you can exclude certain apps from the VPN. Their Internet traffic is then no longer routed through the VPN tunnel, and is instead routed past it with no additional encryption. For these apps it looks like there is no VPN connection at all.

Читайте также:  Как подружить андроид с рулем

In this example, you create an exception for the Netflix app to route the connection to the Netflix servers directly through your ISP.

In order for the exception to work, you must first deactivate the Block connections without VPN option in the VPN settings. How to get there is described above in the section «Enable the kill switch».

Now switch to the strongSwan app.

Hold down the desired profile until the menu above changes.

In the settings, enable Show advanced settings .

Scroll down to the Split tunneling section.

Under the item Applications at the moment it says All applications use the VPN .

Tap on it and in the menu select Exclude selected applications from the VPN .

Now, tap on Select applications .

In the menu you can now select all apps you want to exclude from the VPN. In the example, the Netflix app is selected.

Use the back arrow in the top left menu to return to the settings. Under Select Applications it now says One application selected .

The Save menu item at the top saves the settings and takes you back to the main menu.

You have now successfully set up split tunneling.

Tests

If applicable please use our tests to verify your VPN connection:

Questions?

If you have any questions, comments or other feedback regarding this tutorial, please use the corresponding thread in our community forums.

Источник

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


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

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

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

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

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

В современном IPsec используются:

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

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

Читайте также:  Как убрать ограничение телеграм андроид

Сам IPsec поддерживает работу в двух режимах:

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

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

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

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

IPsec в Linux

В OpenVZ есть поддержка IPsec, и она вполне себе годна для запуска L2TP+IPsec, но там что-то явно не так с маршрутизацией на не-локальные интерфейсы. Вероятно, это можно починить добавлением пары правил на хостовую машину, но это довольно проблематично, если у вас нет доступа к ней, как бывает во подавляющем большинстве случаев. Поэтому для OpenVZ необходимо использовать userspace IPsec, который можно собрать параметром —enable-kernel-libipsec

Жизнь со swanctl:

Жизнь без swanctl:

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

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

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

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

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

Итак, инициализируем PKI и создаем CA, серверный и клиентский ключи. Важно, чтобы название серверного ключа совпадало с FQDN (доменом, проще говоря) вашего сервера!

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

Теперь нам необходимо скопировать их в нужные директории внутри /etc/ipsec.d/ , чтобы strongSwan нашел их:

Переходим к настройке strongSwan!
Первым делом, указываем наш приватный ключ в /etc/ipsec.secrets
Редактируем конфигурационный файл /etc/ipsec.conf

Как видите, конфигурационный файл состоит из нескольких секций. В секции config setup два закомментированных параметра: strictcrlpolicy = yes будет требовать неистекший лист отзывов для проведения аутентификации клиента, а uniqueids = no позволяет подключаться нескольким клиентам с одним сертификатом одновременно.
Далее идут секции с описаниями подключений. Секция с названием %default описывает подключение по умолчанию, от которого будут наследоваться другие подключения. Здесь устанавливаются следующие параметры:

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

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

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

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

Если все верно, вы увидите следующий вывод команды swanctl -L

Проблемы MTU

Из-за особенностей и ошибок в реализации разных IPsec-клиентов, MTU внутри туннеля нельзя угадать заранее, а на Android вообще устанавливается MTU 1500, из-за чего большие пакеты не передаются и вообще ничего не работает. Чтобы нивелировать этот недостаток, достаточно изменять параметр TCP MSS в момент установки TCP-соединения на стороне сервера. Будем использовать значение 1360 для IPv4 и 1340 для IPv6, чтобы размер пакета не превышал 1400 байт внутри туннеля:

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

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

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

Windows

OS X и iOS

Android

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

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

Источник

Оцените статью