Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 3)

После публикации второй части, число подписчиков утроилось. Это хорошо, чем раньше мы все перейдем на личные VPN, тем раньше (я наивно надеюсь), наши законотворцы осознают своё бессилие в борьбе с Интернетом.


Часть1


Часть2


Настало время подключить к VPN серверу наш смартфон (или любое другое устройство).


Как вы заметили выше, клиенту нужно отдать файл конфигурации .ovpn и четыре ключа к нему. Всего пять файлов. Это не удобно. Поэтому мы сделаем проще, мы «засунем» ключи в файл конфигурации клиента.


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


Итак создаем файл с произвольным названием и расширением .ovpn. Я сделаю файл test_smart.ovpn

Содержимое файла

client
dev tun
proto udp
remote 123.123.123.123 443
resolv-retry infinite
nobind
block-outside-dns
persist-key
persist-tun
mute-replay-warnings
remote-cert-eku "TLS Web Server Authentication"
remote-cert-tls server
tls-client
auth SHA512
key-direction 1
<tls-auth>
</tls-auth>
<ca>
</ca>


<cert>
</cert>
<key>
</key>
cipher AES-256-CBC
comp-lzo
verb 3

Здесь вместо 123.123.123.123 вставьте IP-адрес вашего VPN-сервера.

Обратите внимание, что у нас ушли строчки с указанием имени файлов ключей, но добавились секции вида <ca> </ca>. Вот в эти секции мы и будем добавлять ключи. Для этого в WinCSP, в левой панели найдем поочередно необходимые файлы (ca.crt, ta.key, test_smart.key, test_smart.crt) и откроем их. В каждом файле будет запись вида (на примере ca.crt):

-----BEGIN CERTIFICATE-----

MIIFNTCCAx2gAwIBAgIJAJaBlANf4UOFMA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV

BAMTC0Vhc3ktUlNBIENBMB4XDTE3MDYwMTA5NTA0MVoXDTI3MDUzMDA5NTA0MVow

FjEUMBIGA1UEAxMLRWFzeS1SU0EgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw

SirEaEdDwXsnV1o/xV7N3F6C8Hb5qpg8BKAWGrK9ABPnByABd2kRxxDbnWl42qjF

TlzUPR90pyv0+2h9V1mGD6t8lbcJO0kJEHgqG7L95QYGPq8WEaSju9EMsHL3Jsc6

2VSVrfA+4SJwUmY7R53nLaRVY3m9qy2erVWDjnylNk17TGSs5MfZDf1ZOq6ec78M

USBEo7W/Pa564jtwm8xqusI/jleFKZTXbJdq33Fmakn5caxEDiEBPUxb1c/VgAP/

lSAot8w57BaWB9jSxDCMxv9YOOLpMvMX45OMOEwwbztt9dY3PAiTZVWtijXziiUd

-----END CERTIFICATE-----

Мы должны скопировать эту запись и вставить её в соответствующую секцию нашего ovpn файла. Получится как-то так:

<tls-auth>
-----BEGIN OpenVPN Static key V1-----
0b9b161b4494f29b1684a7cf3acf5ef8
38b5d9ae30c000f28d6fe0185058e6a6
170fe69d48d2705441ac467b7896aa5e
9298c21d680c67c7b8bfb2adf2c8250e
886954d66b8037be62269eeb0f554b9d
5285ed47136703030d5e5b8c7b712212
-----END OpenVPN Static key V1-----
</tls-auth>


<ca>
-----BEGIN CERTIFICATE-----
MIIFNTCCAx2gAwIBAgIJAJaBlANf4UOFMA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
BAMTC0Vhc3ktUlNBIENBMB4XDTE3MDYwMTA5NTA0MVoXDTI3MDUzMDA5NTA0MVow
FjEUMBIGA1UEAxMLRWFzeS1SU0EgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
SirEaEdDwXsnV1o/xV7N3F6C8Hb5qpg8BKAWGrK9ABPnByABd2kRxxDbnWl42qjF
TlzUPR90pyv0+2h9V1mGD6t8lbcJO0kJEHgqG7L95QYGPq8WEaSju9EMsHL3Jsc6
2VSVrfA+4SJwUmY7R53nLaRVY3m9qy2erVWDjnylNk17TGSs5MfZDf1ZOq6ec78M
USBEo7W/Pa564jtwm8xqusI/jleFKZTXbJdq33Fmakn5caxEDiEBPUxb1c/VgAP/
lSAot8w57BaWB9jSxDCMxv9YOOLpMvMX45OMOEwwbztt9dY3PAiTZVWtijXziiUd
-----END CERTIFICATE-----
</ca>


<cert>
-----BEGIN CERTIFICATE-----
MIIFPjCCAyagAwIBAgIBAzANBgkqhkiG9w0BAQsFADAWMRQwEgYDVQQDEwtFYXN5
LVJTQSBDQTAeFw0xNzA2MDExMTI0MjlaFw0yNzA1MzAxMTI0MjlaMBUxEzARBgNV
BAMUCnRlc3Rfc21hcnQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCs
/ULqWUKxtzlgkkWviE2WatSxOOqhL4zNoTbYgyyuzrsRVIrfWX8GdtjXlEQ2L7zx
tMzVTUuta4tj+9/MoZjre68ncyaNzaxXSeiR/CVczT4juz9a9Iws1Zwx9XFev+wQ
RVE=
-----END CERTIFICATE-----
</cert><key>
-----BEGIN PRIVATE KEY-----
MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQCs/ULqWUKxtzlg
kkWviE2WatSxOOqhL4zNoTbYgyyuzrsRVIrfWX8GdtjXlEQ2L7zxtMzVTUuta4tj
+9/MoZjre68ncyaNzaxXSeiR/CVczT4juz9a9Iws1Zwx9XFev+wQyxLWlQxGrj1+
TcJ4zLUeCfiRqtiSxi/gJBLpMjJVdQWOarsbD1f7vGMzekLJGmCPxdnm1HCOOYi+
DzvvhwDG9NL0+8OQSvgur417mQ1UZS5TLtHUgxkkDMybtIT/UR23pGRnWSSuRqvD
/HUmGQwEHk2AjW6nV+dmBfeeP0ZMH1iaii7Iv9Tt2404QW8FStp2aNHexup1gQeP
P2ZvHMdf6MGsd1QT8tFuHKsCsmi/wvTc8BgEiiPbwEHnjuqtElsW4Av6uuKLRUKq
-----END PRIVATE KEY-----
</key>

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

Обратите внимание на строчку

key-direction 1

Она обязательно должна быть перед секцией <tls-auth> </tls-auth>

Сохраним файл ovpn и поместим его в папку C:\Program Files\OpenVPN\config\

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 3) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

Теперь, если щелкнуть по значку OpenVPN в трее, увидим еще одну строчку

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 3) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

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

После проверки можете убрать файл из папки C:\Program Files\OpenVPN\config\


Теперь на своем устройстве устанавливаем клиент OpenVPN Connect. Они есть и для Android (https://play.google.com/store/apps/details?id=net.openvpn.openvpn&hl=ru) и для IOS (https://itunes.apple.com/ru/app/openvpn-connect/id590379981?mt=8). И у той, и у той функционал убог, но у обоих есть функция Import profile, а большего нам и не нужно.

Чтобы передать файл конфигурации на устройство, отправим его сами себе на тот e-mail, к которому у вас есть доступ с этого устройства. Открываем на устройстве это письмо и сохраняем файл .ovpn в любое удобное место. Главное не забыть – куда.


Можно передать конечно и другим способом. Например, через любой облачный ресурс (Google Drive, iTunes, Hubic, Yandex Disk и пр.). Тут как вам удобнее.

На андроиде:

Можно попробовать просто открыть файл .ovpn. В большинстве случаев сразу откроется приложение OpenVPN Connect. Появится запрос, нужно ли установить файл .ovpn. Подтвердите данное действие.


Если так не получилось, то запускаем OpenVPN Connect

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 3) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

Выбираем Import -> Import Profile from SD card

Находим наш .ovpn файл, становимся на него и жмём SELECT

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 3) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

Ну и жмем Connect

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 3) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост
Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 3) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

В строке статуса, вверху, появится ключик. Всё, ваше устройство теперь подключено к интернету через VPN-сервер.

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 3) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

Для iPhone / iPad


Всё очень похоже.


Также передаем на устройство файл .ovpn любым удобным способом (см. выше).


При попытке открыть файл .ovpn на смартфоне / планшете iOS сразу откроется приложение OpenVPN Connect. Появится запрос, нужно ли установить файл .ovpn. Нажмите кнопку “+” и установите файл .ovpn.


Теперь запустите OpenVPN Connect, выберите импортированный файл и нажмите по переключателю “Off”. Появится статус «Connected».


Вверху, в строке состояния появится пиктограмма VPN.


Теперь можно (и нужно) удалить файл .ovpn из того места, куда вы его сохраняли при переносе на устройство.

ВАЖНО:

После импортирования файла .ovpn в OpenVPN Connect файл записан в хранилище программы. Теперь можно (и нужно) удалить файл .ovpn из того места, куда вы его сохраняли при переносе на устройство. И письмо с этим файлом, если переносили через почту. И из облака (если переносили через облако). И из корзины. Отовсюду!

Домашнее задание для подписчиков:

1. нагенерируйте сертификов для всех своих гаджетов;

2. сделайте .ovpn файлы и подключите гаджеты к VPN серверу.

Если будут трудности, спрашивайте в комментариях.

9
Автор поста оценил этот комментарий

У меня единственный вопрос - а нахуя все эти пляски с VPS-ом и бубнами, когда можно арендовать уже готовый OpenVPN-сервер где-нибудь в нидерландах, что по деньгам выйдет даже дешевле?

раскрыть ветку
2
Автор поста оценил этот комментарий

Под андроидом у меня не взлетело, ошибка вылетала.


OpenVPN core error : PolarSSL: error parsing config private key : PK - Bad input parameters to function.

После копания на форумах, нашел совет выполнить эту команду с клиентским ключом.


openssl rsa -in Client1.key -des3 -out Client1.3des.key

И вот новый ключ под андроидом заработал. При этом под виндой прекрасно работают оба.

раскрыть ветку
4
Автор поста оценил этот комментарий

большое спасибо за статьи! местами слишком уж подробно описано, но думаю тут аудитория оценит.
стоит наверное упомянуть про настройку клиента на домашнем роутере (кажется сейчас многие современные позволяют это сделать), чтобы не настраивать клиентов на домашних устройствах. и продолжая мысль, возможно ли будет достучаться до домашнего роутера извне, ну скажем, чтобы подключиться к домашнему хранилищу?

раскрыть ветку
2
Автор поста оценил этот комментарий

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

раскрыть ветку
Автор поста оценил этот комментарий

Вопрос от человека, бесконечно далекого от программирования. Как вы вообще расшифровываете тарабарщину типа

MIIFNTCCAx2gAwIBAgIJAJaBlANf4UOFMA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
BAMTC0Vhc3ktUlNBIENBMB4XDTE3MDYwMTA5NTA0MVoXDTI3MDUzMDA5NTA0MVow
FjEUMBIGA1UEAxMLRWFzeS1SU0EgQ0EwggI

По какому принципу это пишется?... Если в скриптах я еще могу проследить какие-то правила и логику, то тут вообще хз.

раскрыть ветку