Как создать свой VPN для Android и добавить его на любой смартфон
В прошлом году многие зарубежные сервисы ушли из России и ограничили доступ из нашей страны. Поэтому большинство владельцев смартфонов научились пользоваться VPN и продолжают заходить на сайты и в приложения, которые за многие годы стали привычными. Но иногда скорости в бесплатных VPN не хватает для загрузки контента в хорошем качестве. Приходится либо постоянно перебирать разные VPN, либо смириться и смотреть, как есть. Однако даже замена не всегда помогает. Ведь как только он набирает популярность, часто начинает тормозить и подтупливать. Оформлять платную подписку тоже рискованно, так как в любой момент выбранное приложение может просто перестать работать в России.

Если устали искать хороший VPN, то самое время сделать его самостоятельно
❗️ПОДПИШИСЬ НА НАШ ДЗЕН И ЧИТАЙ КРУТЫЕ СТАТЬИ
Кажется, что положение безвыходное, но это не так. Предлагаем создать собственный VPN по цене двух чашек кофе, который может выдавать скорость до 100 Мбит/с. С таким подключением вы без проблем сможете смотреть любой контент в отличном качестве. Рассказываем, как сделать свой VPN на Андроиде и добавить его на смартфон.
Как создать свой ВПН
Чтобы запустить собственный VPN сервер на Андроиде, мы воспользуемся чат-ботом Codembo VPN в Телеграме. За 250 рублей в месяц он дает возможность развернуть сервер в Финляндии, Германии, Казахстане или России. Последнее может пригодиться в зарубежных поездках. Некоторые отечественные сайты открываются только из нашей страны, и подобная возможность не будет лишней. У Codembo VPN есть одно важное ограничение, о котором лучше знать заранее. С помощью созданной конфигурации подключиться к серверу можно только на одном устройстве. Установить ее можно на несколько, но вот подсоединяться придется по очереди.
Чтобы использовать конфигурацию одновременно на нескольких разных смартфонах и планшетах, нужно заплатить 125 рублей за каждый. Я добавил VPN на Айфон, Андроид-смартфон и iPad и просто отключаю его на одном и включаю на другом по мере необходимости. Смысла доплачивать 125 рублей совершенно не вижу, ведь VPN мне нужен только на том гаджете, которым я пользуюсь в настоящий момент. Но давайте все же создадим собственный VPN на Android:

Оплата проходит практически мгновенно
- Откройте Телеграм и перейдите в чат-бот Codembo VPN;
- Введите команду /start;
- Нажмите кнопку “Пополнить” и введите команду /pay 250. Этой суммы как раз хватит на месяц использования;
- В ответном сообщении вам придет ссылка на оплату через сервис ЮMoney. Нажмите “Ссылка на оплату 250 рублей” и совершите платеж любой российской банковской картой;
- Как только вы завершите оплату, вернитесь в Телеграм и выберите “Проверить поступление средств”;
- После того как платеж будет зачислен, нажмите “Ключи VPN”, выберите страну, которая вас интересует, и стандартный тариф для одного устройства.

В ответном сообщении будет несколько способов для добавления конфигурации в WireGuard
❗️ПОДПИСЫВАЙСЯ НА ТЕЛЕГРАМ-КАНАЛ СУНДУК АЛИБАБЫ. ТАМ ВЫХОДЯТ ПОДБОРКИ ТОЛЬКО ЛУЧШИХ ТОВАРОВ С АЛИЭКСПРЕСС
Ответным сообщением вы получите файл конфигурации для WireGuard и QR-код для ее быстрого добавления в приложение. К сожалению, Codembo VPN не позволяет привязать карту для автоматического пополнения счета, поэтому делать это придется вручную ежемесячно либо сразу закинуть нужную сумму.
Как добавить ВПН на Андроид
Как только ваш сервер будет запущен, можно переходить к добавлению его на Android. Делается это через приложение WireGuard:

Добавить конфигурацию в WireGuard можно несколькими способами

При необходимости просто загрузите файл на ваш смартфон
❗️ПОДПИШИСЬ НА НАШ ЧАТИК В ТЕЛЕГРАМЕ. ТОЛЬКО ТАМ ТЫ СМОЖЕШЬ ПООБЩАТЬСЯ С НАШИМИ АВТОРАМИ НАПРЯМУЮ
Теперь достаточно просто активировать переключатель и согласиться с добавлением VPN на смартфон. Подключение будет устанавливаться практически мгновенно, и ждать соединения с сервером не придется.
Скорость интернета с VPN

Скорость интернета по сотовой сети. С использованием VPN справа на скриншоте
Самое интересное здесь — это, конечно же, скорость. При полной антенне 4G+ в центре Новосибирска у меня получилось выжать из соединения 60,1 Мбит/с на скачивание и 27,5 на загрузку. При этом без VPN скорость составила 100 и 22,9 соответственно. На домашнем Wi-Fi цифры получились намного интереснее:

Скорость интернета через Wi-Fi. С использованием VPN справа на скриншоте
- Без VPN: скачивание — 95,2 Мбит/с, загрузка — 92,8 Мбит/с;
- С VPN: скачивание — 89,9 Мбит/с, загрузка 73,8 Мбит/с.
Ни один бесплатный VPN не выдаст вам подобные цифры. При таком раскладе можно рассчитывать даже на онлайн игры. Рекомендую всем попробовать создать свой VPN для Android. Просто посмотрите на скорость, и сразу станет понятно, что вы не пожалеете. Да и плата 250 рублей в месяц за собственный комфорт не такая большая.

Теги
- Google Play
- Новичкам в Android
- Приложения для Андроид
Наши соцсети
Новости, статьи и анонсы публикаций
Свободное общение и обсуждение материалов
Приложение для VPN: как мы исправляли чужие ошибки и запускали проект
Наш клиент — компания, которая управляет рекламой в сервисах с развлекательным контентом. Зарабатывать больше мешает проблема с доступом: в некоторых странах пользователи не могут открывать подобные сайты, поэтому часть потенциальных читателей отсекается. В кейсе рассказываем, почему решили запустить приложение для VPN и как его разрабатывали.
Коротко о проекте
Клиент — сеть, которая управляет рекламой в сервисах с развлекательным контентом.
Бизнес-задачи клиента:
— увеличить число пользователей в тех странах, где запрещен доступ к подобным сервисам;
— получить дополнительный канал для пассивного дохода.
Решение — разработать приложение для VPN, которым можно пользоваться с разных платформ
Результаты:
а) 50 тысяч раз — скачали приложение из Google Play за первые 3 месяца;
б) 6+ — платформ, на которых работает приложение;в) 6 месяцев — срок разработки приложения.
350 тысяч пользователей онлайн каждый день
Заказчик — рекламная компания в Канаде, один из ее проектов — сервис с развлекательным контентом. Большая часть контента публикуется в видеоформате, и он пользуется популярностью: его просматривают 350 тысяч пользователей каждый день.
Проблема: сервис теряет пользователей из-за закрытого доступа
Заказчик зарабатывает на показах рекламы пользователям сервиса, например использует ролики, баннеры, попапы и другие форматы. На начало 2021 года у сервиса более 9 млрд показов рекламы в месяц.
Логика заработка простая: чем больше пользователей заходят на сайт, тем больше просмотров рекламы и тем выше доход заказчика. Увеличивать доход мешают две проблемы: закрытый доступ и опасения пользователей за сохранность своих данных.
Некоторые страны закрывают доступ к ресурсам по своему выбору, ограничения могут касаться и развлекательных видео. Заказчик знает, что контент сервиса не нарушает закон, но из-за особенностей политики стран пользователи не могут зайти на сайт.
Еще одна проблема — опасения пользователей, что их данные могут слить и использовать для противозаконных целей. Допустим, злоумышленники получат доступ к аккаунтам в социальных сетях, личному кабинету банка и другим сервисам.
Решение: запустить свое приложение для VPN
Когда пользователи хотят получить безопасный доступ к сайту, они могут использовать технологию virtual private network, или VPN. Технология шифрует данные, которые пользователь передает интернет-провайдеру, поэтому через него нельзя — ну или очень сложно — получить доступ к трафику пользователя.
На рынке уже есть приложения для VPN, их много, и они разные. Заказчик проанализировал готовые решения и пришел к выводу, что выгоднее создать свое приложение. По плану им будут пользоваться читатели сервиса и пользователи других развлекательных сервисов. Так заказчик перестанет терять свою аудиторию и немного заработает на ней.
Для разработки приложения заказчик сначала подключил первую команду. Ее выбрали из-за цены: она предложила самое дешевое решение, и казалось, что это отличный способ сэкономить. Задумка не удалась.
Приложение должны были запустить за полгода, но прошел почти год, результатов толком не было, и тогда заказчик обратился в Orbitsoft. После обсуждения задачи мы взялись за проект.
Этапы работы над приложением
1. Аудит
— Что уже разработано
— Как устроено приложение
— Как быстро получится доработать и запустить
2. Итоги аудита
— Проблемы разработки
— Решение проблем
— План работы и сроки
3. Исследование
— Лучшие практики и работающие технологии для подобных задач
— Архитектура приложения
— Язык программирования
4. Проектирование и разработка
— Минимально жизнеспособный продукт
— Тестирование
— Доработка остальных функций
5. Запуск
— Приложение скачивают реальные пользователи
6. Доработка
— Обратная связь от пользователей
— Дополнительное тестирование
— Доработка функций, которые могут работать лучше
Этап 1. Проанализировать ситуацию
Работу над приложением разбили на несколько этапов. Раз нам передали результаты первой команды, первым делом мы проанализировали, что уже сделано и как это работает. В сухом остатке — ничего готового.
Несколько примеров того, что обнаружили.
У приложения была монолитная архитектура, поэтому ее сложно тестировать и поддерживать. Для заказчика это означает дополнительные часы на добавление новых функций. Лучше, если бы архитектура состояла из слоев: вносишь изменения в один и тестируешь только его, а не сразу все.
В коде было много ошибок, поэтому программа сбоила. Например, из-за аутентификационного токена не все функции обновлялись.
Технический блок: примеры проблем в разработке первой команды заказчика
Backend:
— частое дублирование участков кода;
— отсутствие единого стиля кода;
— некорректная интеграция с платежной системой;
— отсутствие автоматизированного деплоя на сервера.
Frontend:
— некорректная реализация роутинга;
— нет анимаций при всплывающих окнах и переходах view;
— нельзя выбрать количество отображаемых строк на страницах разных видов статистики.
Версия для веба:
— неоптимизированный код: много повторяющихся фрагментов кода, константы зашиты в код, нет ООП, перемешаны интерфейс и код, отвечающий за логику приложения;
— низкая производительность: нет кеширования, запросы к серверу возвращают одинаковые данные и выполняются несколько раз подряд в разных местах приложения, не используется многопоточное программирование, запросы к API выполняются в интерфейсном потоке. Задержка при работе с интерфейсом достигала 15 секунд;
— дыра в безопасности: сохраняет в открытом текстовом файле логин и пароль пользователя и другие конфиденциальные данные. Некоторые запросы к серверу возвращают конфиденциальные данные даже при неавторизованных запросах.
Мобильная версия:
— ошибки в логике платежных транзакций;
— задвоение анимации загрузки некоторых экранов приложения;
— различная разметка для iPad и разных моделей iPhone;
— сложное изменение дизайна приложения;
— нет локализации приложения;
— неверная работа с токенами для авторизации;
— не везде реализована обработка ошибок возвращаемых запросов из API;
— для хранения данных использовались конфигурационные файлы, что осложняло работу с выборкой, фильтрацией и сортировкой данных;
—верстка не адаптирована для экранов разных размеров.
Этап 2. Обсудить с клиентом и уточнить задачу проекта
По итогам анализа мы подготовили заключение, созвонились с клиентом и обсудили наши результаты и план работы.
Пока обсуждали, клиент уточнил техническое задание. Теперь мы не просто должны устранить ошибки первой команды, а еще разработать более продвинутую версию приложения. Наш проект — кроссплатформенное приложение, которое сможет работать с разными операционными системами.
Этап 3. Изучить лучшие практики на рынке и выбрать свое решение
Прежде чем приступить к разработке, мы всегда изучаем уже готовые решения. Поэтому нашим следующим шагом стало исследование.
Исследование помогает экономить время заказчика: мы не тратим ресурсы на заведомо неработающие решения. Вместо этого отсекаем лишнее и вкладываемся в то, что позволит клиенту зарабатывать больше.
Например, для переноса приложения с Android на iOS заказчик предложил использовать конвертер. Мы его изучили, нашли в нем ограничения и стали думать над другим способом. В итоге остановились на Kotlin для Android и Android TV, на Swift — для iOS и macOS и на C# — для приложений на Windows.
Знакомьтесь, это Евгений, один из разработчиков проекта. Команда изучает архитектуры и код готовых приложений. Это помогает быстрее выбрать лучшие методы для решения задачи клиента
Этап 4. Спроектировать и разработать начинку приложения
Сначала мы сделали минимально жизнеспособный продукт — приложение, которое можно скачать и залогиниться в нем. Чтобы проверить работу в реальных условиях, договорились с заказчиком о бесплатном доступе для пользователей, а их предупредили, что обкатываем приложение.
Через неделю поняли, что ошибок нет, и доработали приложение. Например, появились дополнительные функции вроде автоконнекта при запуске, обновился дизайн.
Трудности в проекте тоже были. Например, интеграция с iOS. Поначалу не всегда корректно отображалась часть данных, например точно ли подписался пользователь, действует ли еще пробный период. Это связано с методами App Store для аутентификации покупателя.
Всю некорректную работу исправили. Одной из решений — функция «грейс-период»: если пользователь не может заплатить из-за технических проблем, мы не блокируем доступ. Зато мы и пользователь получаем уведомление: оплата не списалась. Это помогло не терять лояльность клиентов — они же не виноваты в баге, — а нам дало время найти ошибку и устранить ее.
Результаты: запустились в запланированные сроки и приложение пользуется спросом
Приложение запустилось в январе 2021 года. С первых переговоров до выкатки в App Store и Google Play на проект ушло полгода. За это время мы выпустили две версии —минимально жизнеспособный продукт (MVP) и полноценную.
У приложения уже есть своя аудитория. К началу апреля только из Google Play его скачали 50 тысяч раз, и это с учетом, что решений для VPN — десятки, если не сотни. Для нас это значит, что пользователей устраивает набор функций и они готовы работать с приложением.
Заказчик доволен результатом, и команда Orbitsoft будет поддерживать приложение до конца года.
Технические особенности проекта
Windows: все версии, начиная с Windows 7:
— интегрированная среда разработки Microsoft Visual Studio 2019;
—разработка дизайна Microsoft Expression Blend;
— язык программирования C#;
— Windows Presentation Foundation (WPF);
— NET Framework 4.7.2;
— WiX toolset для создания инсталлера.
iOS:
— язык Swift;
— iPhone, iPad;
— минимальная версия iOS — 12.0;
— библиотеки: Firebase (Analytics, Messaging, DynamicLinks), Google IDFA Support, Facebook SDK, lottie, Toast-Swift, PlainPing;
— система сборки CocoaPods.
macOS:
— язык Swift;
— macOS;
— минимальная версия macOS — 10.14;
— библиотеки: lottie, Toasts, PlainPing, SRTabBarController (с исправлениями), CustomSegue, CustomButton, FLOPageViewController;
— системы сборки CocoaPods, Swift Package.
Android:
— API level 21+;
— Android, Android TV, Fire OS;
— Phones, tablets, TV;
— язык программирования Kotlin;
— использованные паттерны — MVVM;
— библиотеки: Firebase (Cloud Messaging, Analytic, Crashlytics), Google Play Billing Library, Leanback, AndroidX, Lottie.
Frontend:
— Rect.js;
— Vue.js;
— WordPress;
— reactstrap.js;
— rc-pagination.js;
— moment.js.
Backend:
— Node.js;
— TypeScript;
— NoSQL (MongoDB).
Библиотеки:
— Express.js;
— Moment.js;
— Mongoose.js;
— jsonwebtoken.js.
Поделитесь опытом: как вы решаете проблему с доступом к вашему ресурсу?
Как создать VPN для Android?
Суть вопроса: Я создаю приложение на Android, а для его нормального функционирования мне нужно менять IP, я написал алгоритм в котором при подключении/отключении передачи данных IP меняется, однако если использовать Wi-Fi этот способ не работает, поэтому следующим вариантом стало поставить VPN, перелопатив кучу информации в интернете я ничего работающего не нашел. Прошу помочь реализовать VPN или есть другие способы менять IP (обходя случай с Wi-Fi). Вот пример старой реализации
public class MyVpnService extends VpnService < private Thread mThread; private ParcelFileDescriptor mInterface; //a. Configure a builder for the interface. Builder builder = new Builder(); // Services interface @Override public int onStartCommand(Intent intent, int flags, int startId) < // Start a new session by creating a new thread. mThread = new Thread(new Runnable() < @Override public void run() < try < //a. Configure the TUN and get the interface. mInterface = builder.setSession("MyVPNService") .addAddress("192.168.0.1", 24) .addDnsServer("8.8.8.8") .addRoute("0.0.0.0", 0).establish(); //b. Packets to be sent are queued in this input stream. FileInputStream in = new FileInputStream( mInterface.getFileDescriptor()); //b. Packets received need to be written to this output stream. FileOutputStream out = new FileOutputStream( mInterface.getFileDescriptor()); //c. The UDP channel can be used to pass/get ip package to/from server DatagramChannel tunnel = DatagramChannel.open(); // Connect to the server, localhost is used for demonstration only. tunnel.connect(new InetSocketAddress("127.0.0.1", 8087)); //d. Protect this socket, so package send by it will not be feedback to the vpn service. protect(tunnel.socket()); //e. Use a loop to pass packets. while (true) < //get packet with in //put packet to tunnel //get packet form tunnel //return packet with out //sleep is a must Thread.sleep(100); >> catch (Exception e) < // Catch any exception e.printStackTrace(); >finally < try < if (mInterface != null) < mInterface.close(); mInterface = null; >> catch (Exception e) < >> > >, "MyVpnRunnable"); //start the service mThread.start(); return START_STICKY; > @Override public void onDestroy() < // TODO Auto-generated method stub if (mThread != null) < mThread.interrupt(); >super.onDestroy(); > >
Внимательно проверив нашел некоторые ошибки и исправил их, теперь появился новый вопрос в этой части кода
protect(tunnel.socket()); //e. Use a loop to pass packets. while (true) < //get packet with in //put packet to tunnel //get packet form tunnel //return packet with out //sleep is a must Thread.sleep(100); >
Прошу объяснить мне что именно сюда писать чтобы заработало VPN соединение.
Отслеживать
Артик Казорио
задан 30 янв 2018 в 16:01
Артик Казорио Артик Казорио
61 2 2 серебряных знака 6 6 бронзовых знаков
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Смотрите в сторону VpnService (VpnBuilder), вот пример приложения VPN клиента (можете включить его код в своё приложение).
Отслеживать
ответ дан 30 янв 2018 в 16:29
1,511 1 1 золотой знак 9 9 серебряных знаков 16 16 бронзовых знаков
Да, я пробовал этот способ, но при интернет соединении ничего не грузится, в чем могла быть проблема?
Как создать свой собственный VPN-сервер прямо на iPhone за 5 минут

В закладки

В последнее время все чаще возникает необходимость в использовании VPN-сервисов. За 6 месяцев сменил уже более десятка приложений из App Store.
То скорость подключения становится катастрофически медленной, то рекламы появляется слишком много.
Решил не мучиться и создать собственный VPN-сервер с хорошей скоростью подключения. Для начала расскажу, как настраивал быстрое и удобное включение VPN раньше.
- ♂️ Ответ на любой вопрос про Apple вы найдете здесь: https://t.me/iphonesru_forum
Как я использовал автоматическое включение VPN раньше

Если кто-то пропустил подобные инструкции или хочет настроить простой способ подключения к стороннему VPN-сервису, напоминаю все пошагово:
▶ Установите приложение VPN-сервиса с поддержкой быстрых команд автоматизации. Например, AdGuard VPN, это годный сервис с хорошей скоростью соединения.
▶ Запустите приложение и установите профиль конфигурации для работы VPN.
▶ Перейдите в приложение Быстрые команды.

▶ Создайте условие для активации VPN-подключения. Например, запуск определенного приложения.
▶ Укажите действие – включение VPN.
▶ Отключите опцию Спрашивать до запуска на последнем шаге настройки.

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

Для этого потребуется создать Быструю команду, выбрать подходящую иконку и через меню Поделиться отправить на экран Домой.
Теперь каждое нажатие новой иконки будет включать или выключать VPN на iPhone.
Вот так я поднял свой VPN-сервер с iPhone за 5 минут

Когда сторонние сервисы надоели, решил создать собственный и подключаться без проблем и танцев с бубном. Предлагаю самую простую и доступную инструкцию, выполнить которую получится прямо со смартфона.
1. Выберите подходящего провайдера для аренды виртуального сервера. В нашем случае он должен отвечать двум требованиям.
Во-первых, должна присутствовать возможность арендовать “железо” на заграничном сервере.
Во-вторых, для оплаты услуг хостинга должна поддерживаться карта Мир.
Перебрал с десяток популярных предложений и нашел такой вариант. Можно оплатить любой отечественной картой, через СБП, WebMoney или QIWI.

2. Укажите подходящую конфигурацию оборудования и предустановленную ОС Ubuntu 22.04. Нам с головой хватит минимального “железа”:
◆ 1 ГБ ОЗУ
◆ 30 ГБ накопитель
◆ 1-ядерный процессор
◆ 32 ТБ трафика
Если хотите развернуть на данном сервере что-то еще или переживаете за лимит трафика, подбирайте другие параметры. В указанном случае с нас попросят 6.6 руб. в день или около 200 руб. в месяц.
3. Укажите расположение сервера в Амстердаме и отключите автоматическое создание бекапов.
4. Оплатите выбранную конфигурации любым доступным способом.

5. На iPhone установите любое приложение для подключения к серверу по SSH. Рекомендую Termius.
6. В приложении создайте новое подключение и укажите параметры из письма, которое придет после оплаты.

7. Подключитесь к серверу и введите всего одну команду:
curl -L https://install.pivpn.io | bash
Обычно для настройки VPN-сервера придется проделать множество манипуляций и настроек, но энтузиасты с GitHub сильно упростили данный процесс.

8. Во время выполнения скрипта будет запрошено имя пользователя и пароль для входа на VPN-сервер. Введите и запомните их.
В дальнейшем потребуется утвердительно ответить на несколько вопросов, а в самом конце согласиться на перезагрузку сервера.

9. Через 2-3 минуты снова подключитесь к серверу в приложении Termius и введите команду:
Увидите список доступных команд для настройки сервера.
10. Для создания нового пользователя введите команду:
После этого укажите имя для подключения. Так вы сможете создать несколько разных пользователей для совместного использования VPN.

11. Введите следующую команду для отображения QR-кода конфигурации.
Потребуется указать номер пользователя в списке.
12. На экране появится QR-кода, через который получится быстро настроить VPN-соединение. Можете сделать скриншот и передать его на другой гаджет.

13. Установите клиент для подключения к стороннему VPN, например, WireGuard.
14. Создайте новую конфигурацию и отсканируйте только что сгенерированный QR-код.
15. В процессе настройки подтвердите установку VPN-профиля на iPhone.
Готово! Вы получили собственный VPN-сервер.


Осталось лишь протестировать скорость соединения при обычном подключении и с включенным VPN. Как видите слегка увеличивается ping и некритично падает скорость соединения.
За время тестирования никаких проблем и трудностей в работе с собственным сервером не возникло. Смело рекомендую подобное решение для всех желающих.