Защищённые прокси — практичная альтернатива VPN

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

В этой статье расказано о преимуществах защищённого прокси перед VPN и предложены различные реализации, готовые к использованию.

В чём различие между VPN и прокси?

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

VPN осуществляет пересылку полезной нагрузки, находящейся на третьем или втором уровне сетевой модели OSI. Прокси осуществляют пересылку полезной нагрузки между четвёртым и седьмым уровнями сетевой модели OSI включительно.

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


Особенности подключения через VPN

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

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

Как правило, подключение к ВПН осуществляется при помощи расширений для браузера или отдельных приложений, что упрощает подключение и даёт возможность быстро менять страну, через которую вы хотите получить доступ к сайтам.

Минусом является то, что качественный VPN сервис стоит денег, более того, он намного дороже прокси сервера. Также использование VPN в браузере создаёт сильную нагрузку на ваш интернет, замедляя скорость соединения, и, соответственно, скорость загрузки страниц. Да и работу VPN на ПК назвать стабильной, поскольку при его использовании регулярно случаются сбои и неполадки, что вынуждает регулярно перезапускать программу, браузер или расширение.

Как настроить прокси в iNinja VPN & Proxy

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

Других настроек у этого расширения почти нет: выбор VPN и вкл-выкл. В качестве IP-адреса вы можете использовать, в расширении:

  • Вена, Австрия;
  • Нью-Йорк, США;
  • Лондон, Великобритания;
  • Майами, США;
  • Денвер, США;
  • Калифорния, США;
  • Амстердам, Нидерланды;
  • Чикаго, США;
  • Москва, Россия.

В приложении:

  • Калифорния, США;
  • Амстердам, Нидерланды;
  • Чикаго, США;
  • Москва, Россия.

Других настроек у сервиса нет. Чтобы канал работал с максимальной скоростью, рекомендуем выбирать ближайшее географическое положение сервера.

VPN или прокси?

Таким образом, VPN — подключение через виртуальную сеть, а прокси — подключение через сторонний сервер. В этом и состоит главное отличие VPN от прокси. Хоть они и предназначены для схожих целей, прокси решают больше задач, стоят дешевле, работают быстрей и стабильней. Поэтому рекомендуем вам использовать именно прокси сервера, хотя, окончательное решение всё равно остаётся за вами.

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

SOCKS5 внутри TLS

В случае с TLS очевидным решением было бы использовать stunnel или аналогичную TLS-обёртку для TCP-соединений с SOCKS5-сервером. Это действительно вполне хорошо работает, но возникает следующая проблема: рукопожатие TLS для каждого нового соединения занимает дополнительное время и появляется заметная на глаз задержка при установлении новых соединений из браузера. Это несколько ухудшает комфорт при веб-серфинге.
Для того, чтобы скрыть эту задержку, я подготовил специализированную замену stunnel на клиенте, которая поддерживает пул уже установленных, готовых к запросу TLS-соединений. Даже целых два — первый из них послужил прототипом:

  • Pooling TLS Wrapper
  • steady-tun
  • В качестве сервера я предлагаю два варианта:

    • Связка из реверс-прокси haproxy и SOCKS5-прокси dante, настроенная на защиту от активных проб со стороны клиентов, не прошедших аутентификацию по сертификату: github.com/Snawoot/ptw/tree/master/docker_deploy
    • Мой форк go-socks5-proxy со встроенной поддержкой TLS: github.com/Snawoot/socks5-server

    HTTP-прокси внутри TLS aka HTTPS-прокси

    Есть небольшая путаница в отношении сочетания слов «HTTPS» и «прокси». Есть два понимания такого словосочетания:

  • Обычный HTTP-прокси без шифрования, который поддерживает метод HTTP CONNECT и через который может успешно работать HTTPS.
  • HTTP-прокси, принимающий TLS-соединения.
  • Речь пойдёт о втором. Все платные и бесплатные браузерные расширения, предоставляющие «VPN», по сути настраивают браузер на использование такого прокси.
    Примечательно, что ни в одном браузере нет простой возможности задать в настройках HTTPS-прокси через пользовательский интерфейс (то поле HTTPS-прокси, которое там есть, как раз относится к первому случаю). Но это не представляет собой большой трудности.

    Поперебирав различные готовые варианты, я решил написать свой HTTP(S) прокси-сервер: dumbproxy.

    Ключевой особенностью получившегося решения является то, что современные браузеры (Firefox и семейство Chrome, включая новый MS Edge) могут работать с ним без какого-либо дополнительного ПО на клиенте (см. руководство по настройке клиентов).

    Следует отметить особенности реализации в отношении противодействия активным пробам со стороны DPI. HTTP-прокси легко распознать, подключившись к нему и осуществив попытку какого-либо запроса стороннего ресурса. Если прокси имеет авторизацию, то по стандарту он должен отвергнуть запрос с кодом 407, специфичным именно для HTTP-прокси, и предложить возможную схему для авторизации. Если прокси работает без авторизации, то он выполнит запрос, чем так же себя выдаст. Есть как минимум два способа решения этой проблемы (и оба они реализованы в dumbproxy).

    Первый способ заключается в том, чтобы использовать аутентификацию клиентов по сертификатам ещё на этапе TLS-рукопожатия. Это самый стойкий метод, и это действительно корректная причина, по которой любой обычный веб-сервер мог бы отвергнуть клиента.

    Второй способ заключается в том, чтобы скрыть от неавторизованных клиентов код ответа 407, возвращая вместо него любой другой ответ с ошибкой. Это вызывает другую проблему: браузеры не смогут понять, что для прокси требуется авторизация. Даже если браузер имеет сохранённый логин и пароль для этого прокси, ответ 407 важен для определения схемы авторизации, по которой эти учётные данные должны быть отправлены (Basic, Digest и т. д.). Для этого нужно позволить прокси генерировать ответ 407 на секретный запрос, чтобы браузер мог запомнить схему авторизации. В качестве такого секретного запроса используется настраиваемый секретный домен (не обязательно реально существующий). По умолчанию этот режим выключен. Подробности можно посмотреть в разделе об аутентификации.

    Proxy для Android

    C чего бы вдруг?

    Я думаю, что большинство пользователей Андроид устройств столкнулись с такой проблемой как настройка прокси. Проблема не вселенского масштаба, но от этого не менее неприятная. Я являюсь обладателем планшета Acer A500 и как некоторые могут знать, в отличии от своего собрата A501 в нет нет возможности использовать 3g (не прибегая к кустарным забегам с 3g модемом), а в 4 версии так и вовсе модемчик не воткнуть, т.к. с root-правами проблемка (хотя чего я вру, воткнуть народные умельцы уже смогли, но все настолько криво и через пень-колоду, что лучше не лезть сейчас). Но у меня в универе есть халявный, пусть и не скоростной и многогдеотсутствующий, но интернет. И он, барабанная дробь, через wifi+proxy. C вифи проблем нет, а вот как стать властелином мира настроить прокси известно точно не было. Собственно, с версии Андроида 3.2 и 4 есть возможность настроить прокси стандартными средствами, но, увы работать оно будет только на стандартном браузере =( и все лакомые интернет-приложения тоже не работают.

    Сторонние средства

    anProxy
    — небольшая программа, позволяющая быстро настроить прокси-сервер для браузера.
    Proxymator
    — Простенькая программа для настройки прокси-сервера (Включает также имя пользователь + пароль)
    ProxyDroid
    — HTTP / SOCKS4 / SOCKS5 прокси с автоматическим включением по SSID.
    Auto Proxy
    — Достаточно интересная программа для настройки прокси http(s), socks, ntlm, но для ее использования нам необходимы root и iptables с поддержкой nat. Для всех трех программ, выделенных мною (они являются самыми удобными и подходящими), необходимы рут права. С версиями до 4 с ними проблем нет, для каждого устройства метод получения уже расписан до мелочей, ищите(хоть на том же 4пда) и рутаетесь =). Используем любую приглянувшуюся программу и интернет прекрасно работает.

    Собственно, мне-то хотелось рассказать немного о другом, о прокси и 4 Андрюшей. Скажу сразу, что сейчас все пессимистично и настроить сможем только серфинг по сайтам и усе.

    Поплыли

    Я уже упомянул о стандартной возможности настроить прокси для стандартного браузера. Для этого в настройках подключения к wi-fi залезаем в настройки нужной нам сети. Ставим птичку у «Дополнительно» и лицезрением неведомые доселе пункты настройки. Выбираем Настройки прокси-сервера: Вручную и вбиваем все необходимые данные (по сути тут всего имя хоста и порт, остальное уже не столь важно). Сохраняем, запускаем стандартный браузер и радуемся.
    А что делать тем, кому милее сторонний браузер? Для Opera

    (будь-то mini или mobile) в адресной строке вбиваем:
    opera:config
    , там находим раздел Proxy и заполняем нужные нам поля (Здесь нет отдельных полей для порта, поэтому указываем его через двоеточие, например
    proxy.example.com:3168
    ). Немного помаявшись и потыкав галочки мне удалось поймать интернет.
    Firefox
    немного интереснее. В адресной строке набираем
    about:config
    и попадаем на страницу просто с кучей разных настроек. Благо есть поисковая строка, воспользуемся ей и найдем нужное нам при помощи слова «proxy» (да кто бы сомневался). Но и тут настроек тьма-тьмущая. Теперь без помощи администратора я не справился. Выведав всю заветную информацию и лисичка согласилась работать.

    Я не являюсь каким-нибудь Андроидоманом, или радио-любителем, я простой веб-разработчик, жалкий верстальщик и недоделанный скриптер XD, но интернет для мнеподобных нужен часто и много где. И не всегда его просто получить. Надеюсь кому-то станет легче. P.S. Нет root — нет скриншотов, прошу меня простить (ну не фотать же).

    Тоже будет интересно