Как пользоваться openvpn на андроид
OpenVPN на Android: прозрачное переключение между WiFi и «Мобильными данными» без разрыва соединений
Здравствуйте, разрешите поделиться своим опытом.
Есть приложения критичные к разрывам связи, переподключение происходит мучительно и вообще не всегда. Поставил перед собой цель, сделать прыжки маршрутов и физических подключений прозрачными, что бы связь была постоянной и TCP коннект не рвался.
И поможет в этом старый, добрый и ламповый «openvpn». Но установка и настройка — тема давно избитая, трогать её, здесь не планируется.
Что нам нужно:
- Сервер Linux с постоянным IP (vps, vds, dedic или просто домашний)
- Openvpn на сервере и клиенте, настроенные на работу по UDP.
- iproute2 — собственно для фокуса нужна работающая утилита ip на Android.
- Так же потребуется внести изменения в исходный код openvpn-settings c последующий сборкой apk.
Приступим
Начнем с правки «openvpn-settings». Суть в том, что при любом изменении в сетевой конфигурации нативному демону openvpn посылается команда SIGUSR1, что заставляет его отключаться и подключаться по новой. Для наших целей это вред, но нам все равно желательно иметь возможность выполнять некоторые действия при изменении сетевой конфигурации.
Кто-то скажет, но ведь есть persist-tun. Отвечаю, работает не так, как хочется, openvpn дергает скрипты «лежать-вставать» каждый раз, когда приходит SIGUSR1. И в принципе отличить по имеющимся переменным перезапуск от старта, без выкрутасов почти не возможно. Это подрывает всю затею, а хочется просто и надежно.
Поэтому мы заменим отправку SIGUSR1 на вызов shell скрипта.
Скачиваем исходники командой
hg clone code.google.com/p/android-openvpn-settings
Открываем файл
srcdeschaeuffelhutandroidopenvpnserviceManagementThread.java
Находим функцию public void sendSignal(int s) её мы и будем редактировать.
Комментируем отправку SIGUSR1 и вставляем вызов нашего скрипта с правами рут.
Файл скрипта у нас будет называться точно так же как и файл подключения, но дополненный расширением sh.
Должно получится так:
Всё, можно собирать, подписывать, устанавливать. Перед установкой обязательно деинсталлируйте старый «openvpn-setting» из системы.
Далее проверим конфигурации подключения openvpn.
Сервер
На сервере требуется внести директиву float, поскольку мы будем менять физическое соединение, а с ним и IP. Так же сервер должен транслировать внутренний адрес нашего клиента во внешнюю сеть. Для настройки этого мне удобней использовать директивы up и down.
up «/bin/sh /etc/openvpn/androidupdown»
down «/bin/sh /etc/openvpn/androidupdown»
Скрипт должен быть примерно таким:
Клиент
Во первых надо убрать директиву redirect-gateway, если она есть. Но задать up и down с указанием скрипта, который выполнит настройку маршрутов. Если вы помните, мы условились, что имя файла будет повторять имя конфигурации с добавление sh. Да, мы будем вызывать один и тот же скрипт и из демона, и из монитора.
Если конфигурация называется «testconfig.ovpn», то пусть будет так:
up «/system/bin/sh /sdcard/openvpn/testconfig.ovpn.sh»
down «/system/bin/sh /sdcard/openvpn/testconfig.ovpn.sh»
Здесь стоит немного пояснить.
Мы создаем альтернативную таблицу маршрутизации под номером 100 в которой указываем шлюзом по умолчанию vpn туннель. И добавляем правило маршрутизации, которое заворачивает весь трафик в нашу таблицу под номером 100, раньше чем он попадет в основную таблицу под именем main.
В альтернативной таблице есть маршрут, который выталкивает пакеты предназначенные для сервера, обратно в цепочку правил. Далее они попадут в основную таблицу маршрутизации. Там они смогут найти основной маршрут физического соединения. Но, а если не найдут, такое случатся во время реконнектов, то это не страшно. Openvpn может потерпеть некоторое время, но разумеется не вечно. Только сообщения в логах, напомнят об отсутствии связи непродолжительное время.
Не забывайте скрипты должны заканчиваться переводом строки.
Для разрешения запуска скриптов на Android, необходимо установить «Built-in + script» в «Preferences» которые вызываются по долгому тапу на подключении. Теперь можно пробовать.
В результате тестирования оказалось, что некоторые программы сами проверяют состояние сети и пытаются переподключаться во время любых изменений. Тут либо просить авторов исправить ситуацию. Либо самостоятельно де компилировать и исправлять. В любом случае закрытие TCP сессии происходит, не по таймауту, а так как положено.
Буду рад любой критике и замечаниям. Желаю стабильного коннекта!
Настройка OpenVPN клиента на Android
Настройка OpenVPN клиента на Android
1) Для подключения к серверу OpenVPN будет использована программа “Open VPN for Android” , можно скачать по данной ссылке.
2) Открываем программу и жмём «+»
3) Вводим название будущего VPN подключения
4) В поле меню «Основные»
вводим следующие параметры:
— адрес сервера: IP вашего VPN сервера;
— порт сервера: по умолчанию 1194, но может меняться в зависимости от настроек на VPN сервере;
— тип: их много, все описывать не буду, замечу только, что как правило используется «Логин/Пароль», если на сервере используется авторизация с помощью данного метода +необходимо будет добавить корневой сертификат «ca.crt». Вторым не менее популярным способом является «Сертификаты» при его использовании потребуется скопировать корневой сертификат(ca.crt) и клиентские сертификат и ключ(client.crt, client.key) на Ваш Device, после чего добавить их через соответствующий пункт меню. Так же есть комбинированные типы и др.
Процесс создания сертификатов был рассмотрен в статье о настройке OpenVPN сервера на Mikrotik
5) В пункте меню «Маршрутизация» мы можем настроить пользовательские маршруты в удаленные сети.
Пример: наш VPN Client подключается к VPN серверу (IP клиента: 172.16.0.2; IP Сервера: 172.16.0.1), нам нужно получить доступ к серверу телефонии находящемуся за нашим роутером (на котором и поднят VPN сервер) в сети 192.168.44.0/24
6) Подключаемся, работаем;)
CREATERS.INFO
ИТ, Электроника, Интернет, Технологии, Гаджеты. Личный опыт.
Установка и настройка OpenVPN на Android устройствах
- Получить ссылку
- Электронная почта
- Другие приложения
Использовать OpenVPN подключение на смартфоне или планшете очень просто. Рассмотрим этот процесс поближе.
И так, мы настроили OpenVPN сервер в роутере и создали тоннель на ПК. Рассмотрим в каких случаях нам может понадобится VPN тоннель на смартфоне или планшете.
Во первых, если вы убежденный параноик то использование VPN тоннеля поможет избежать просмотра/сбора истории сайтов, которые вы посещаете или ваших интересов или воровства ваших паролей в публичных местах (кафе, барах, вокзалах и т.д.) при использовании открытой /гостевой точки доступа. Возможно вы просто не захотите оставлять историю своих посещений в логах чужого роутера, тогда этот вариант для вас.
Во вторых, если ваш провайдер мобильного интернета запрещает посещать какие-либо ресурсы (как в моем случае), а домашний интернет не имеет таких ограничений то использование OpenVPN на мобильном устройстве позволит вам посещать любые сайты в обход таких ограничений.
Для начала нам понадобится официальный клиент: OpenVPN Connect. Запущенное приложение выглядит так:
OpenVPN Connect сообщает о том, что для подключения к серверу требуется конфигурационный файл с расширением .ovpn и предлагается импортировать его из меню.
Так же нам предлагают еще два альтернативных способа использования OpenVPN в виде платных сервисов с готовыми серверами за счет которых, видимо, и существует сам проект.
Для подключения мобильного устройства к собственному серверу OpenVPN необходимо иметь:
- конфигурационный файл (.ovpn);
- клиентский ключ (client.key);
- клиентский сертификат (client.crt);
- доверенный сертификат (ca.crt);
- ключ Диффи-Хельмана (dh1024.pem).
Все эти файлы можно сложить в папку на SD карте или во внутреннее хранилище устройства. В таком случае, при утере устройства клиентский сертификат придется отозвать, да бы им не смог воспользовался злоумышленник. Или же необходимо шифровать содержимое SD карты, на которой хранятся ключи и сертификаты.
Альтернативной возможностью является использование хранилища формата PKCS#12 в виде одного запароленого файла, в котором будут находится все перечисленные выше ключи и сертификаты. Недостатком этого способа является то, что ваше Android устройство потребует обязательного использования защищенного экрана блокировки (PIN-код, графический ключ, и др.). Для тех, кто как и я, не использует защиту на экране блокировки этот способ будет не удобен.
Рассмотрим первый вариант настройки.
Запускаем OpenVPN Connect и открываем меню, в котором выбираем пункт Import:
Настройка OpenVPN Connect для Android, iPhone и iPad. Бесплатные серверы VPN Gate
Настройка OpenVPN на устройствах Android
Данная инструкция показывает, как подключиться к серверу ретрансляции VPN Gate, используя мобильное приложение OpenVPN Connect. OpenVPN Connect является версий клиента OpenVPN для Android.
1. Установите приложение OpenVPN Connect
Загрузите и установите новейшую версию приложения OpenVPN Connect из магазина приложений “Google Play”.
2. Скачайте и загрузите файл конфигурации подключения OpenVPN (файл .ovpn).
Данная процедура требуется только при первичной настройке подключения.
- Файл конфигурации формата .ovpn понадобиться для подключения к серверу ретрансляции VPN Gate через протокол OpenVPN.
- Загрузить файл конфигурации можно на странице списка открытых бесплатных серверов ретрансляции http://www.vpngate.net/en/. Выберите VPN-сервер, к которому вы хотите подключиться и нажмите на соответствующий файл .ovpn, чтобы импортировать его в приложение OpenVPN Connect.
- Вы также можете скачать файл .ovpn на компьютере и отправить его на мобильное устройство Android по электронной почте.
- При попытке открыть файл .ovpn на смартфоне / планшете Android сразу откроется приложение OpenVPN Connect. Появится запрос, нужно ли установить файл .ovpn. Подтвердите данное действие.
3. Подключение к VPN
- Для подключения к VPN, запустите OpenVPN Connect, выберите импортированный файл и нажмите кнопку “Connect”.
- После установки подключения в приложении появится статус “Connected” (подключено).
4. Интернет без ограничений
Когда соединение установлено, весь сетевой трафик будет проходить проходить через VPN-сервер. Вы также можете перейти можете перейти на сайт ip8.com, чтобы посмотреть глобальный IP-адрес. Вы сможете определить видимое из сети местоположение, которое будет отличаться от вашей фактической локации.
При подключении к VPN вы сможете посещать заблокированные веб-сайты и использовать заблокированные приложения.
Настройка OpenVPN на iPhone / iPad
Данная инструкция демонстрирует, как подключиться к серверу ретрансляции VPN Gate, используя мобильное приложение OpenVPN Connect. OpenVPN Connect является версий клиента OpenVPN для iOS.
Настройка OpenVPN на Android
пошаговая инструкция с картинками
- Настройка VPN на Android: OpenVPN · PPTP · L2TP
Представленная инструкция предназначена для настройки подключения к удаленному VPN-серверу с устройств на базе операционной системы Аndroid при помощи программы OpenVPN
Для того, что бы создать VPN-подключение при помощи приложения Open VPN на Аndroid устройстве Вам понадобится:
- смартфон или планшет на базе ОС Аndroid;
- программа OpenVPN connect для ОС Аndroid;
- конфигурационный файл с сертификатами, а также логин и пароль от провайдера.
Ищите VPN провайдера? Мы поможем с выбором!
Посмотрите наш рейтинг VPN сервисов с 5-ю лучшими предложениями на рынке.
Итак, если Вы подготовили все необходимое, то мы можем приступать к настройке VPN-соединения для Аndroid устройств.
1. Для начала Вам необходимо скачать и установить программу OpenVPN for Android. Данное приложение доступно в каталоге Google Play Store, распространяется бесплатно и может быть настроено в любом устройстве на базе Аndroid
2. Далее запускаем программу OpenVPN for Android и нажимаем кнопку «Импорт», расположенную в верхнем правом углу экрана
3. Теперь нужно найти распакованный архив с конфигурационным файлом, полученный от провайдера. Затем необходимо один раз кликнуть на файле профиля OpenVPN, имеющем расширение «.ovpn» и нажать кнопку «Выбрать»
4. После этого в окне программы высветятся детали импортируемого профиля, просмотрев которые, жмем кнопку «Импорт», находящуюся вверху справа.
5. В следующем окне программой будет предложено ввести пароль для извлечения сертификата, Вы это сообщение игнорируете, оставляете поле пустым и нажимаете кнопку «OK»
6. Далее Вам будет предложено присвоить имя сертификату, здесь его можно оставить таким, каким оно прописано по умолчанию
7. На следующем этапе необходимо прописать PIN-код для разблокировки устройства. Здесь в обязательном порядке необходимо этот код заполнить, выбрав удобную комбинацию цифр, которую Вам легче запомнить. Если Вы его забудете, то разблокировать устройство не удастся
8. Далее Вы увидите на экране запрос на использование сертификата, здесь следует нажать кнопку «Allow»
9. Если Вы сделали все верно, то Ваш профиль успешно импортирован в программу и остается произвести настройку логина и пароля для подключения, для чего следует нажать кнопку настройки напротив названия профиля
10. В этом окне Вас следует изменить только Имя пользователя» и «Пароль», которые Вам выдал провайдер
11. После этого настройку приложения можно завершать, для чего нужно нажать на названии подключения, система попросит подтвердить разрешение подключиться к VPN, ставите галочку «Я доверяю этому приложению» и нажимаете «OK»
12. В результате на экране вы увидите лог подключения, а в панели уведомлений отобразится соответствующий ярлычок подключения VPN, где можно также просмотреть статус VPN-соединения
На этом настройка подключения к VPN-серверу с устройств на базе операционной системы Аndroid через программу OpenVPN завершена.
Connecting to Access Server with Android
Client software choice
The OpenVPN protocol is not one that is built into the Android operating system for Android devices. Therefore a client program is required that can handle capturing the traffic you wish to send through the OpenVPN tunnel, and encrypting it and passing it to the OpenVPN server. And of course, the reverse, to decrypt the return traffic. So a client program is required, and there are some options here. We do not intend to limit our customers and cause a type of vendor lock-in situation. We try to keep connectivity and the choice of client software open, although we do recommend the official OpenVPN Connect client of course.
Official OpenVPN Connect app
On the Google Play Store, the client you can download and install for free there is called OpenVPN Connect. This program supports only one active VPN tunnel at a time. Trying to connect to two different servers at the same time is a function we did not build into our official OpenVPN Connect app, and it is also not possible because the underlying operating system does not allow this. The OpenVPN Connect app is able to remember multiple different servers, but only one can be active at a time.
To obtain the OpenVPN Connect app, go to the Google Play Store on your Android device, or open the link below to the Google Play Store. On the Google Play Store on your device, look for the words «openvpn connect» and the application will show up in the search results. You can install it from there. Once installed an icon will be placed on your home screen where you can find the app. Once you have it open you can use the Access Server option to start the import process. You can use the option to import directly from the web interface of the Access Server or use the import from file option. If you use the web interface import option you need to enter the address of your Access Server’s web interface here, along with username and password. If your server is on an unusual port (not the default HTTPS port TCP 443), specify the port here. Once the import has completed, you are ready to use the app.
OpenVPN open source OpenVPN for Android app
OpenVPN for Android is an open source client and developed by Arne Schwabe. It is targeted at more advanced users and offers many settings and the ability to import profiles from files and to configure/change profiles inside the app. The client is based on the community version of OpenVPN. It is based on the OpenVPN 2.x source code. This client can be seen as the semi-official client of the OpenVPN open source community.
Other clients
There may be other OpenVPN clients available on the Google Play Store as well, but we have no information on them here.