Хотим свободы и анонимности в сети или еще раз про свой 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 серверу.

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

Вы смотрите срез комментариев. Показать все
2
Автор поста оценил этот комментарий
Вы забыли написать, что без рута на андройде/ios не получится ни сделать L2-туннель, ни завернуть весь трафик маршрутами.

Можно, конечно, настроить браузер на squid на VPS, но некоторые провайдеры, в частности - дом.сру, делают MITM в dns для блокировки.

А для ПК сойдёт, сам использую openvpn в связке с up- и down- скриптами для смены маршрутов. С рутованным андроидом тоже работает, кстати.

Ах да. Предупредите читателей, что на днищехостинге шифрование на openvpn-сервере положит CPU в потолок, и скорость туннеля упадёт до нескольких мегабит в секунду.
раскрыть ветку (12)
1
Автор поста оценил этот комментарий

А зачем вам L2-то? Юзайте tun, прекрасно работает без рута.

раскрыть ветку (11)
Автор поста оценил этот комментарий
Можно и L3, один хрен на смартах толку нет, т.к. таблицу маршрутов не поменяешь без рута.
раскрыть ветку (10)
1
Автор поста оценил этот комментарий

Вообще то маршруты через openvpn на андроиде прекрасно пробрасываются и без рута. И гейт и отдельные маршруты.

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

До Android 4.4 у приложений была возможность менять маршруты. Теперь OpenVPN клиент срёт в логах ошибками. Максимум, создаётся on-link маршрут для подсети туннеля.


Если у Вас есть рабочий пример (без рутования аппарата), продемонстрируйте. Я с радостью признаю ошибку, т.к. в своё время убил кучу времени, изучая этот вопрос.

раскрыть ветку (8)
DELETED
Автор поста оценил этот комментарий
Что вы подразумеваете под сменой маршрута? Если прописывание маршрута по умолчанию для доступа в интернет через VPN(смена ip/обход роскомнадзора), то это работает из коробки в OpenVPN Connect под всеми ОС, включая даже айос (без джеилбрейка), не то что андроид 5.1/6.0 (в котором этот функцилнал заложен в АПИ)
Автор поста оценил этот комментарий

Вы, простите, ерунду говорите. У меня планшет samsung galaxy tab 4 8.0, прошит стоковой прошивкой Android 5.1.1, рутован SuperSU. Только что отключил рут полностью (SuperSU так умеет), подключился к рабочему впну. И, знаете, всё прекрасно работает, маршруты на месте.

Думаю, у Вас проблема в том, что Вы пытаетесь прикрутить маршруты непосредственно на клиенте - так, действительно, не работает. Маршруты надо раздавать с опенвпн-сервера.

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

Спасибо, всё руки не доходили тоже самое написать. Всё правильно. Push в конфиге сервера позволит настроить любые маршруты. Можно пустить через VPN весь трафик, можно выборочно.

Автор поста оценил этот комментарий
Да вот только прикол в том, что эти опции не отрабатывают на клиенте под Android, а в логах срёт ошибками.

Если Вы утверждаете, что у Вас работает, выложите сюда конфиг сервера и дифф таблицы маршрутов. Ну и желательно traceroute до и после.
раскрыть ветку (4)
Автор поста оценил этот комментарий

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

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

Может, Вам сразу рутовые пароли и адреса серверов? Скажите, что вообще заставляет Вас думать, что Вам здесь кто-то что-то должен? Вам сказали - схема 100% рабочая. Достаточно нормально настроить опенвпн-сервер. Что-то Вам доказывать - не собираюсь, мне есть чем заняться помимо этого. А Вам, думаю, стоит почитать здесь: https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage

Особое внимание обратите на ccd и передаваемые клиенту опции, в частности push route

раскрыть ветку (2)
Автор поста оценил этот комментарий
Не надо вести себя по-мудацки. Зачем писать "инфа сотка" и "курите маны" человеку, который уже прочитал весь ман и гайды openvpn и которому логи OpenVPN Client говорят "хрен бы там"? Или думаете, я не знаю про эти 2 push-опции? Доказывать нет времени, а тыкать в маны есть, ага :) Так не ведут себя в коммьюнити.


Вас не паспортные данные попросили, а конфиги и таблицы маршрутов. Я уверен, в случае неудач Вы тоже лезете в гугл и также слёзно просите помощи на форумах.


Впрочем, я уже сам всё проверил. На новом телефоне (Andorid 5.0) работает. На старом (тоже 5.0) - не работает. На ещё более старом (Andorid 4.4) - работает.


Что, в общем-то, говорит, что зависит всё не только от конфига сервера и push-опций.

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

"Не надо вести себя по-мудацки" - ну так и не ведите себя так. Вы "слёзно прося помощи на форумах" тоже общение начинаете в стиле "слыш ты, сюда метнулся, конфиг дал"? Если да - ничуть не удивлён, что у Вас ничего не получается и никто не хочет помочь.


"Доказывать нет времени" - я не писал, что у меня нет времени. Я лишь написал, что у меня нет желания это делать.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку