Найти тему
new-techno

Делаем собственный VPN на strongSwan и автоматизируем подключение в iOS

Оглавление

Если возникают проблемы, что-то не получается - пишите в телеграми, он есть у меня в профиле. Каждому постараюсь помочь.

Не­дав­но я обна­ружил, что на iPhone мож­но сде­лать так, что­бы VPN авто­мати­чес­ки вклю­чал­ся и вык­лючал­ся в опре­делен­ных усло­виях. Хорошень­ко рас­курив докумен­тацию, я накатал кон­фиг, и теперь VPN у меня на телефо­не работа­ет при под­клю­чении к мобиль­ной сети или гос­тевому Wi-Fi, а дома отклю­чает­ся. В этой статье я покажу, как сде­лать неч­то подоб­ное. Одна­ко сна­чала нам понадо­бит­ся сам сер­вер VPN — в качес­тве него мы уста­новим strongSwan.

Та­кой выбор обус­ловлен тем, что ни OpenVPN, ни WireGuard не под­держи­вают­ся в iOS без прог­раммы‑кли­ента. Нам же для того, что­бы покопать­ся в пра­вилах под­клю­чения, нуж­но будет заг­рузить на устрой­ство кас­томный про­филь VPN, а это воз­можно, толь­ко если мы под­клю­чаем­ся сис­темны­ми средс­тва­ми. Про­токол IKEv2/IPSec, реали­зован­ный в strongSwan, как раз под­держи­вает­ся на уров­не сис­темы. При­чем не толь­ко в iOS — точ­но так же без вся­кого кли­ента к нему мож­но под­клю­чать­ся из Windows и Linux.

От­вет на воп­рос, зачем тебе свой VPN, ты, думаю, уже зна­ешь. Нап­ример, через него час­то нас­тра­ивают под­клю­чение к при­ват­ной инфраструк­туре или получа­ют дос­туп к ресур­сам, до которых тра­фик по тем или иным при­чинам не доходит нап­рямую. Теория окончена, перейдем к практике. Для начала нам нужно арендовать VPS сервер.

Говоря о том, что нам там предлагают под наши цели — это виртуальные VPS сервера, расположенные в странах европы, России и США. С реальной скоростью соединения с сервером примерно 500 мбит/с и безлимитным трафиком (что очень важно для VPN сервера) . Лично я буду использовать хостера Aeza - дешевый и относительно стабильный, с нормальными хар-ми сервера.

Итак, если вы, всё-таки решили арендовать сервер у Аезы, а не пошли писать гневные комментарии под моим постом этому поводу, то алгоритм действий такой:

1. Для начала вам нужно перейти по этой ссылкезарегистрироваться и перейти в личный кабинет.

2. Далее, нажмите на Виртуальный сервер, выберите нужную страну, тариф Shared и минимальную конфигурацию сервера.

3. На наш сервер нужно установить операционную систему Ubuntu 20.04— её и выберите. Отключите бекапы — тут они не нужны (в случае чего всё можно быстро переустановить) . Выберите период оплаты и, собственно, оплатите аренду.

Кстати, после регистрации по моей реферальной ссылке у вас в течении 24 часов будет бонус 15% к пополнению баланса.

Минуты 2-3 сервер будет активироватьсяи после на почту придут данные для авторизации для подключения к серверу. Либо, ip-адрес и пароль можно будет посмотреть в разделе мои услуги и нажать на название вашего сервера.

Подключение к VPS

Как только вы приобрели VPS‑сервер с уже установленной туда чистой Ubuntu 20.04  — как правило в течении нескольких минут провайдер выдаст вам доступ к серверу. Чаще всего приходит e‑mail, иногда данные можно найти в панели.

В моем случае с aeza - данные есть и на почте и в личном кабинете.

-2

Вам нужны две строки: IP-адрес и root-пароль

Подключитесь к серверу по SSH:

  • Наберите ssh root@111.111.111.111 в консоли (IP поменяйте на свой).

Пароль можно вставить из буфера с помощью ПКМ, он не отображается для безопасности. Иногда пароль вставляется корректно только при включённой английской раскладке клавиатуры.

  • Либо используйте веб-интерфейс "VNC" в панели VPS
  • Либо используйте какое-либо SSH-приложение (подойдет командная строка)

СТАВИМ И НАСТРАИВАЕМ STRONGSWAN НА СЕРВЕРЕ

Нач­нем мы с раз­верты­вания strongSwan на час­тном сер­вере. Ниже я при­веду крат­кий перес­каз ма­нуала по его нас­трой­ке, пред­полагая, что у тебя уста­нов­лена Ubuntu 20.04. Если у тебя дру­гой Linux, коман­ды могут отли­чать­ся, но прин­цип и кон­фиги будут по боль­шей час­ти те же.

Пер­вый шаг стан­дар­тный для уста­нов­ки чего угод­но:

sudo apt update

Те­перь ста­вим нуж­ные пакеты:

sudo apt install strongswan strongswan-pki \

libcharon-extra-plugins libcharon-extauth-plugins \

libstrongswan-extra-plugins libtss2-tcti-tabrmd-dev

Ког­да все ска­чает­ся, перей­дем к нас­трой­ке.

Генерируем сертификаты

Соз­даем катало­ги для сер­тифика­тов и клю­чей:

mkdir -p ~/pki/{cacerts,certs,private}

Уби­раем у этой пап­ки лиш­ние пра­ва — для надеж­ности:

chmod 700 ~/pki

Ге­нери­руем кор­невой ключ RSA:

pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/ca-key.pem

И кор­невой сер­тификат:

pki --self --ca --lifetime 3650 --in ~/pki/private/ca-key.pem --type rsa \

--dn "CN=VPN root CA" --outform pem > ~/pki/cacerts/ca-cert.pem

Чис­ло 3650 — это десять лет (в днях), которые будет работать сер­тификат. Можешь изме­нить это зна­чение на свое усмотре­ние.

Кор­невые сер­тифика­ты готовы, теперь нам нужен сер­тификат для нашего сер­вера.

Де­лаем при­ват­ный ключ:

pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/server-key.pem

И сам сер­тификат. Обра­ти вни­мание, что IP в трех мес­тах нуж­но изме­нить на IP тво­его сер­вака.

pki --pub --in ~/pki/private/server-key.pem --type rsa | pki --issue --lifetime 1825 \

--cacert ~/pki/cacerts/ca-cert.pem --cakey ~/pki/private/ca-key.pem \

--dn "CN=NNN.NNN.NNN.NNN" --san @NNN.NNN.NNN.NNN --san NNN.NNN.NNN.NNN \

--flag serverAuth --flag ikeIntermediate --outform pem \

> ~/pki/certs/server-cert.pem

С этим закон­чили, можем переме­щать клю­чи и сер­тифика­ты из домаш­него катало­га в пап­ку нас­тро­ек strongSwan:

sudo cp -r ~/pki/* /etc/ipsec.d/

Настраиваем strongSwan

На вся­кий слу­чай пере­име­нуем ста­рый файл с нас­трой­ками, если он есть:

sudo mv /etc/ipsec.conf{,.original}

От­кро­ем его /etc/ipsec.conf в nano:

sudo nano /etc/ipsec.conf

До­бав­ляем раз­дел config setup:

config setup

charondebug="ike 1, knl 1, cfg 0"

uniqueids=no

Даль­ше добав­ляем нас­трой­ки тун­неля IKEv2 (не забудь под­ста­вить свой IP):

conn ikev2-vpn

auto=add

compress=no

type=tunnel

keyexchange=ikev2

fragmentation=yes

forceencaps=yes

dpdaction=clear

dpddelay=300s

rekey=no

left=%any

leftid=NNN.NNN.NNN.NNN

leftcert=server-cert.pem

leftsendcert=always

leftsubnet=0.0.0.0/0

right=%any

rightid=%any

rightauth=eap-mschapv2

rightsourceip=10.10.10.0/24

rightdns=8.8.8.8,8.8.4.4

rightsendcert=never

eap_identity=%identity

ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024!

esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1!

Здесь забиты адре­са гуг­лов­ско­го DNS (8.8.8.8 и 8.8.4.4), ты можешь исполь­зовать их или заменить, нап­ример, адре­сом сво­его роуте­ра (его мож­но узнать, наб­рав ip route show default).

Сох­раня­ем кон­фиг и выходим из nano (Ctrl-X, Y, Enter).

Сер­вер VPN мы нас­тро­или, оста­лось соз­дать кре­ды, с которы­ми кли­ент смо­жет авто­ризо­вать­ся. За них отве­чает файл /etc/ipsec.secrets. Откры­ваем его в nano:

sudo nano /etc/ipsec.secrets

До­бав­ляем в него строч­ку

: RSA "server-key.pem"

Дво­ето­чие и про­бел пос­ле него важ­ны, не уби­рай их!

Даль­ше зада­ем логин и пароль поль­зовате­ля. Замени их сво­ей ком­бинаци­ей. Хороший стой­кий пароль можешь соз­дать в пароль­ном менед­жере.

логин : EAP "пароль"

Сох­раняй файл, и переза­пус­тим strongSwan, что­бы он про­читал новые кон­фиги:

sudo systemctl restart strongswan-starter

Настраиваем сеть

Наш VPN уже работа­ет и готов при­нимать соеди­нения, но сетевой тра­фик до него пока не доходит. Нуж­но нас­тро­ить фай­рвол и IP-фор­вардинг.

Раз­реша­ем про­пус­кать тра­фик OpenSSH, а так­же UDP на пор­тах 500 и 4500:

sudo ufw allow OpenSSH

sudo ufw enable

sudo ufw allow 500,4500/udp

Ос­талось сде­лать так, что­бы вхо­дящие пакеты IPSec обра­баты­вались нашей служ­бой. Узна­ем адрес нашего сетево­го интерфей­са:

ip route show default

Пос­мотри, что будет написа­но пос­ле сло­ва dev. Это может быть, нап­ример, eth0 или ens2 либо еще что‑нибудь в таком духе. Запом­ни или запиши куда‑нибудь эти бук­вы.

От­кры­ваем файл с нас­трой­ками пра­вил фай­рво­ла:

sudo nano /etc/ufw/before.rules

В самом начале фай­ла, до сек­ции *filter, нам надо добавить два бло­ка. Замени в трех мес­тах ИНТЕРФЕЙС тем, что мы наш­ли выше.

*nat

-A POSTROUTING -s 10.10.10.0/24 -o ИНТЕРФЕЙС -m policy --pol ipsec --dir out -j ACCEPT

-A POSTROUTING -s 10.10.10.0/24 -o ИНТЕРФЕЙС -j MASQUERADE

COMMIT

*mangle

-A FORWARD --match policy --pol ipsec --dir in -s 10.10.10.0/24 -o ИНТЕРФЕЙС -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360

COMMIT

*filter

...

А в кон­це *filter — такие две стро­ки:

-A ufw-before-forward --match policy --pol ipsec --dir in --proto esp -s 10.10.10.0/24 -j ACCEPT

-A ufw-before-forward --match policy --pol ipsec --dir out --proto esp -d 10.10.10.0/24 -j ACCEPT

Зак­рыва­ем, сох­раня­ем. Теперь откры­ваем файл с нас­трой­ками служ­бы фай­рво­ла:

sudo nano /etc/ufw/sysctl.conf

До­бав­ляем в конец вот такие стро­ки:

net/ipv4/ip_forward=1

net/ipv4/conf/all/accept_redirects=0

net/ipv4/conf/all/send_redirects=0

net/ipv4/ip_no_pmtu_disc=1

Вык­люча­ем и вклю­чаем фай­рвол для при­мене­ния нас­тро­ек:

sudo ufw disable

sudo ufw enable

Ес­ли сис­тема зап­росит под­твержде­ние, жми Y.

Настраиваем подключение

Нам нуж­но заб­рать с сер­вера свой сер­тификат, с которым мы будем под­клю­чать­ся. Он лежит в фай­ле по такому пути:

/etc/ipsec.d/cacerts/ca-cert.pem

Мо­жешь вывес­ти его коман­дой cat, ско­пиро­вать и сох­ранить в файл на сво­ем компь­юте­ре либо заб­рать, под­клю­чив­шись по SFTP.

Для под­клю­чения к VPN тебе понадо­бят­ся три вещи: IP тво­его сер­вера, файл с сер­тифика­том и пара из логина и пароля, которые ты задал в фай­ле /etc/ipsec.secrets. Все это у тебя есть!

Нас­трой­ки в раз­ных ОС выпол­няют­ся нем­ного по‑раз­ному.

В macOS тебе нуж­но:

  1. Дваж­ды клик­нуть на файл с сер­тифика­том и под­твер­дить его добав­ление в цепоч­ку клю­чей, вве­дя пароль.
  2. От­крыть цепоч­ку (Keychain Access), най­ти VPN root CA и задать нуж­ные раз­решения. Дваж­ды клик­ни по нему, рас­крой раз­дел «Доверять» (Trust) и выбери «Доверять всег­да» (Always Trust) нап­ротив стро­ки IPSec.
  3. Соз­дать соеди­нение в нас­трой­ках сети. Нажимай плю­сик вни­зу, выбирай VPN, IKEv2 и жми «Соз­дать» (Create), впи­сывай IP сер­вера в стро­ки «Адрес сер­вера» и «Уда­лен­ный ID».
  4. В нас­трой­ках соеди­нения выбирай «Имя поль­зовате­ля» и ука­жи свои логин и пароль.
-3

В Windows про­цесс нем­ного дру­гой:

  1. От­кры­вай «Кон­соль управле­ния», выбирай «Файл → Добавить или уда­лить оснас­тку → Сер­тифика­ты → Добавить».
  2. Что­бы VPN работал для любого поль­зовате­ля, выбирай «Учет­ная запись компь­юте­ра» и жми «Далее». Затем жми «Локаль­ный компь­ютер» и «Закон­чить».
  3. В «Кор­не кон­соли» выбирай «Доверен­ные кор­невые цен­тры сер­тифика­ции для доверия федера­ции» и «Сер­тифика­ты».
  4. В меню «Дей­ствия» в пра­вой панели наж­ми «Все задачи» и «Импорти­ровать».
  5. Вы­зови меню выбора фай­ла, выс­тавь тип X.509 и импорти­руй свой сер­тификат.
  6. Те­перь нуж­но соз­дать под­клю­чение к VPN. Зай­ди в «Панель управле­ния → Сеть интернет». В Windows 7 может понадо­бить­ся соз­дать новое под­клю­чение к рабоче­му мес­ту, в Windows 10 и 11 дол­жен быть спе­циаль­ный раз­дел VPN. В любом слу­чае впи­сывай адрес сер­вера, логин и пароль.
  7. Мо­жешь под­клю­чать­ся!

На iOS уста­нов­ка схо­жа с тем, что мы делали на macOS. Но пос­коль­ку я обе­щал про­демонс­три­ровать воз­можность авто­мати­чес­ки вклю­чать и вык­лючать VPN, мы вмес­то это­го соз­дадим файл с про­филем, который заод­но будет содер­жать и все нас­трой­ки.

На Android, увы, strongSwan не под­держи­вает­ся на уров­не ОС, поэто­му тебе при­дет­ся ска­чать кли­ент­ское при­ложе­ние и нас­тро­ить его. Впро­чем, эта статья ори­енти­рова­на на поль­зовате­лей iOS, так что я не пред­полагаю, что речь о тво­ем основном телефо­не.

КУЕМ ПРОФИЛЬ ДЛЯ IOS

А теперь самая важ­ная часть нашего прик­лючения, ради которой все и затева­лось. Мы соз­дадим кас­томный про­филь для iOS, где про­пишем, при каких усло­виях устрой­ство дол­жно под­клю­чать­ся к VPN. Не вол­нуй­ся — пол­ностью полагать­ся на авто­мати­зацию необя­затель­но, и при желании ты смо­жешь деак­тивиро­вать такое поведе­ние в нас­трой­ках, что­бы вклю­чать и вык­лючать VPN вруч­ную.

За осно­ву я взял чей‑то готовый про­филь, а потом добавил в него пра­вила.

По­мимо логина, пароля и IP сер­вера, тебе понадо­бит­ся сер­тификат, который мы ска­чали с сер­вера. Точ­нее, его содер­жимое меж­ду стро­ками BEGIN CERTIFICATE и END CERTIFICATE.

Так­же соз­дай четыре слу­чай­ные стро­ки про­изволь­ной дли­ны. На macOS я их сге­нери­ровал коман­дой uuidgen. Но это чис­тое пижонс­тво, ты можешь исполь­зовать в качес­тве UUID любую пос­ледова­тель­ность сим­волов — осмыслен­ных или нет.

В кон­фиге ниже тебе понадо­бит­ся изме­нить сле­дующее:

  • до­бавить сер­тификат вмес­то стро­ки 13;
  • вста­вить пер­вый UUID в стро­ках 20 и 24;
  • за­дать наз­вание VPN в стро­ке 32;
  • до­бавить вто­рой UUID в стро­ке 36;
  • до­бавить IP сер­вера в стро­ках 42 и 44;
  • за­дать свой логин в стро­ке 73 и пароль в стро­ке 75;
  • вста­вить тре­тий UUID в стро­ке 96;
  • вста­вить чет­вертый UUID в стро­ке 102.

vpn.mobileconfig

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

<key>PayloadContent</key>

<array>

<dict>

<key>PayloadCertificateFileName</key>

<string>cert.pem</string>

<key>PayloadContent</key>

<data>

СЮДА ВСТАВЛЯЙ СЕРТИФИКАТ

</data>

<key>PayloadDescription</key>

<string>Adds a certificate</string>

<key>PayloadDisplayName</key>

<string>cert.pem</string>

<key>PayloadIdentifier</key>

<string>com.apple.security.pkcs12.ПЕРВЫЙ UUID</string>

<key>PayloadType</key>

<string>com.apple.security.pem</string>

<key>PayloadUUID</key>

<string>ПЕРВЫЙ UUID ЕЩЕ РАЗ</string>

<key>PayloadVersion</key>

<integer>1</integer>

</dict>

<dict>

<key>UserDefinedName</key>

<string>StrongSwan</string>

<key>PayloadDisplayName</key>

<string>НАЗВАНИЕ</string>

<key>PayloadIdentifier</key>

<string>swan.vpn.always</string>

<key>PayloadUUID</key>

<string>ВТОРОЙ UUID</string>

<key>VPNType</key>

<string>IKEv2</string>

<key>IKEv2</key>

<dict>

<key>RemoteAddress</key>

<string>IP ТВОЕГО СЕРВЕРА</string>

<key>RemoteIdentifier</key>

<string>IP ТВОЕГО СЕРВЕРА</string>

<key>LocalIdentifier</key>

<string></string>

<key>AuthenticationMethod</key>

<string>None</string>

<key>DeadPeerDetectionRate</key>

<string>Medium</string>

<key>DisableMOBIKE</key>

<integer>0</integer>

<key>DisableRedirect</key>

<integer>0</integer>

<key>EnableCertificateRevocationCheck</key>

<integer>0</integer>

<key>EnablePFS</key>

<integer>0</integer>

<key>ExtendedAuthEnabled</key>

<true/>

<key>IKESecurityAssociationParameters</key>

<dict>

<key>DiffieHellmanGroup</key>

<integer>2</integer>

<key>EncryptionAlgorithm</key>

<string>3DES</string>

<key>IntegrityAlgorithm</key>

<string>SHA1-96</string>

<key>LifeTimeInMinutes</key>

<integer>1440</integer>

</dict>

<key>AuthName</key>

<string>ЛОГИН</string>

<key>AuthPassword</key>

<string>ПАРОЛЬ</string>

</dict>

<!-- СЮДА ВСТАВЛЯЕМ ПРАВИЛА -->

<key>OverridePrimary</key>

<true/>

<key>IPv4</key>

<dict>

<key>OverridePrimary</key>

<integer>1</integer>

</dict>

<key>PayloadType</key>

<string>com.apple.vpn.managed</string>

<key>PayloadVersion</key>

<integer>1</integer>

</dict>

</array>

<key>PayloadDisplayName</key>

<string>VPN Configuration</string>

<key>PayloadIdentifier</key>

<string>ТРЕТИЙ UUID</string>

<key>PayloadRemovalDisallowed</key>

<false/>

<key>PayloadType</key>

<string>Configuration</string>

<key>PayloadUUID</key>

<string>ЧЕТВЕРТЫЙ UUID</string>

<key>PayloadVersion</key>

<integer>1</integer>

</dict>

</plist>

ДОБАВЛЯЕМ ПРАВИЛА ПОДКЛЮЧЕНИЯ

На стро­ке 78 ты мог заметить ком­мента­рий — он не будет мешать работе про­филя. Одна­ко добавил я его, что­бы отме­тить мес­то, куда ты можешь вста­вить пра­вила авто­мати­чес­кого под­клю­чения.

Каж­дое пра­вило — это сло­варь, в начале которо­го идет тег key со зна­чени­ем Action, затем — string с типом дей­ствия (Connect, Disconnect или Ignore) и спи­сок парамет­ров (key), то есть усло­вие под­клю­чения или отклю­чения.

Ус­ловия быва­ют сле­дующие:

  • DNSDomainMatch (мас­сив строк) — домены сер­веров DNS, которые могут быть перечис­лены в нас­трой­ках сети. Это один из спо­собов понять, к какой сети мы под­клю­чены;
  • DNSServerAddressMatch (мас­сив строк) — то же самое, но исполь­зуют­ся IP-адре­са сер­веров DNS;
  • InterfaceTypeMatch (стро­ка) — тип интерфей­са под­клю­чения. Может быть Celluar для мобиль­ной сети или WiFi;
  • SSIDMatch (мас­сив) — наз­вание бес­про­вод­ной сети;
  • URLStringProbe (стро­ка) — дос­тупность опре­делен­ного URL. Если ресурс дос­тупен и воз­вра­щает код 200, пра­вило сра­баты­вает. Обра­ти вни­мание, при редирек­те пра­вило не сра­бота­ет.

Мас­сив строк выг­лядит как тег array с одним или нес­коль­кими тегами string внут­ри.

WWW

Под­робнее с фор­матом можешь озна­комить­ся в офи­циаль­ной докумен­тации (PDF, стра­ница 96).

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

Да­вай напишем прос­той кон­фиг. В нем будет три пра­вила:

  • пер­вое про­веря­ет интерфейс, и если это мобиль­ная сеть, то VPN вклю­чает­ся;
  • вто­рое про­веря­ет, не под­клю­чены ли мы к домаш­нему Wi-Fi, опре­деляя его по SSID (это стро­ка с наз­вани­ем). Если да, то VPN отклю­чает­ся;
  • третье говорит под­клю­чать­ся к VPN, если мы под­клю­чены к какому‑то дру­гому Wi-Fi.

<key>OnDemandEnabled</key>

<integer>0</integer>

<key>OnDemandRules</key>

<array>

<dict>

<key>Action</key>

<string>Connect</string>

<key>InterfaceTypeMatch</key>

<string>Cellular</string>

</dict>

<dict>

<key>Action</key>

<string>Disconnect</string>

<key>SSIDMatch</key>

<array>

<string>SSID ТВОЕГО WI-FI</string>

</array>

</dict>

<dict>

<key>Action</key>

<string>Connect</string>

<key>InterfaceTypeMatch</key>

<string>WiFi</string>

</dict>

</array>

По умол­чанию авто­мати­чес­кое под­клю­чение будет деак­тивиро­вано — прос­то на вся­кий слу­чай (см. пер­вые две стро­ки). Если уве­рен в сво­их пра­вилах, можешь пос­тавить 1 вмес­то 0, но это мож­но сде­лать и потом — в нас­трой­ках iOS.

Со­бирай ито­говый XML, сох­раняй в файл с рас­ширени­ем .mobileconfig и переп­равь его на устрой­ство любым спо­собом (наибо­лее кон­спи­ратив­ным, если это для тебя важ­но).

За­тем тебе нуж­но будет сде­лать сле­дующее:

  1. На­жать на файл, появит­ся сооб­щение «Про­филь заг­ружен».
  2. Пе­рей­ти в нас­трой­ки и открыть «Основные → VPN и управле­ние устрой­ством → VPN Configuration».
  3. На­жимать «Уста­новить» и вво­дить ПИН‑коды и пароли, пока iOS не успо­коит­ся и не решит, что ты и прав­да жела­ешь уста­новить какой‑то левый серт.
  4. Зай­ти в раз­дел VPN (здесь или в общем спис­ке нас­тро­ек), пос­тавить галоч­ку нап­ротив сво­его сер­вера и поп­робовать перек­лючить ста­тус в режим «Под­клю­чено».
  5. Что­бы акти­виро­вать авто­мати­чес­кую работу, заходи в нас­трой­ки под­клю­чения (пик­тограм­ма i) и вклю­чай «Под­клю­чение по зап­росу».

Ес­ли вдруг воз­никнут проб­лемы, отклю­чай «Под­клю­чение по зап­росу» и уда­ляй про­филь там же, где ты его добав­лял.

-4

-5

ВЫВОДЫ

Мы раз­верну­ли свой сер­вер VPN на осно­ве strongSwan, соз­дали на нем учет­ную запись и сге­нери­рова­ли сер­тификат. С этим сер­тифика­том мож­но под­клю­чать­ся к VPN с любого устрой­ства.

Да­лее мы научи­лись делать про­фили VPN для iOS. Все нас­трой­ки мож­но было бы задать и вруч­ную, одна­ко интерфей­са, что­бы задавать усло­вия под­клю­чения, в iOS нет, тог­да как в про­филе мы смог­ли их нас­тро­ить.

Ты можешь подс­тро­ить этот кон­фиг под свои усло­вия и, нап­ример, под­клю­чать или отклю­чать VPN на работе или в каких‑то дру­гих локаци­ях, эко­номя вре­мя и силы.