Просто хотел напомнить просто несколько простых вещей, которые вызывают много недоразумений и вопросов. Понимаю, что на статью не тянет, но очень хочется до вас достучаться, а других способов в рунете особо и нет.
1. VPN клиент можно установить почти на любой точке доступа
Даже на старой точке часто есть возможность обновиться или доставить нужный пакет. Например, для моей старенькой Zyxel Keenetic Ultra оказалось неофициальное обновление, которое содержит кучу всего полезного, в том числе клиент openvpn. Для вашей точки тоже может найтись прошивка — 4pda это наше всё, там лежат прошивки буквально под что угодно. Если вы настроили все точки для работы с впн, то жизнь в целом уже становится гораздо легче. Если так сделают многие, то опять же проблема сводится к минимуму.
2. VPN позволяет выборочно гонять через себя трафик
Вам нужно только знать адрес подсети, в которую вы хотите ходить через VPN — дальше вы обновляете список этих сетей на своём VPN сервере, клиент из получает и начинает гнать только нужный трафик через VPN. Остальной идёт напрямую. Это важно — видел кучу инструкций, после следования которым вы погоните 100% трафика через VPN — это медленно, дорого, и вряд ли вы этого хотели.
3. Мобильные устройства
Почему-то многие считают, что на мобильных устройствах VPN работает по принципу “всё или ничего”. Нет, это не так, даже на огрызках — вы точно так же можете гонять через VPN только нужный трафик.
4. Тор
Так же хочется добавить, что по непонятным для меня причинам всё забыли про тор, который так же помогает в схожих задачах, и на текущий момент работает быстро и стабильно.
Пример
В качестве домашнего решения, я использую Google Compute Engine, где на сервере по минимальной стоимости у меня крутится openvpn сервер. Конечно я вы можете выбрать любой другой хостинг и vpn сервер.
Клиенты для этого сервера у меня подняты на точке (родной клиент в поставке точки), на ноутбуке (есть клиенты на любой вкус и цвет) и на телефоне (Android, стандартный клиент почему-то отказался читать конфиг, зато сразу завёлся клиент от Arne Schwabe). Работает просто прекрасно, никаких нареканий. И я гораздо больше уверен в безопасности и прочности личного сервера, чем какого либо халявного или даже платного. Опять же, я думаю, что он будет всегда доступен, поводов полагать обратное нет (ну разве что огромный диапазон адресов гугла попадёт в блок, но айпишник сервера сменить довольно легко).
На всякий случай добавлю свою настройку клиента — понятное дело, без ключей. Сервер и клиенты были подняты за вечер, при том, что это мой первый опыт развёртывания opnvpn, и вообще-то я занимаюсь разработкой.
Настройка клиента (сертификаты можно добавить прямо в файл настройки, чтобы скормить это спокойно телефону или точке):
client
dev tun
proto udp
remote YOUR_SERVER_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
verb 3
<ca>
PUT YOUR CA CERTIFICATE HERE
</ca>
<cert>
PUT YOUR CERTIFICATE HERE
</cert>
<key>
PUT YOUR PRIVATE KEY CERTIFICATE HERE
</key>
key-direction 1
<tls-auth>
PUT YOUR STATIC KEY CERTIFICATE HERE
</tls-auth>
Настройка сервера практически дефолтная — вроде я туда добавлял только пуши — для того, чтобы только нужные ресурсы шли через VPN:
push «route x.x.x.0 255.255.255.0»
Хотел добавить ссылок на настройку OpenVPN, но таких статей правда слишком много, и они находятся без всяких проблем, и есть под каждый дистрибутив.
Вы держитесь здесь, вам всего доброго, хорошего настроения и здоровья. Всё только начинается.
Комментарии (51)
Mofas
17.04.2018 11:31Вчера переблочили кучу серверов Google Compute Engine
jehy Автор
17.04.2018 11:39Мой пока живой, и повода к блокированию нет — разве что можно попасть под раздачу по диапазону. Опять же, свет клином на Google Compute Engine не сошёлся, да и там можно адреса менять с лёгкостью, приводящей в изумление.
Моя мысль — о том, что можно поднять огромное количество децентрализованных личных VPN.Diden05
17.04.2018 12:33Блокировка 1,5 млн адресов Google на данный момент, не очень побуждает поднимать VPN сервер именно у них, или Amazon :) Но думаю это не проблема, благо VPS можно за небольшие деньги взять у учи хостеров.
vconst
17.04.2018 12:35Повезло.
Мой европейский сервер из гуглооблака вчера вечером перестал отзываться, сейчас сижу и переношу все в американский… Если массово начнут блочить вообще всю подсеть гугла, придется переезжать на мелкие хостеры типа скалевей.
AquiHostStrider
17.04.2018 18:36можно поднять огромное количество децентрализованных личных VPN.
Можно-то можно, а кто будет оплачивать банкет? 10$/мес за VPS там, 7$/мес тут, 15$/мес ещё где-то… И в месяц выльется нехилая такая сумма. Конечно, если доходы позволяют, то не вопрос.jehy Автор
17.04.2018 18:38+1Аренда сервера под VPN примерно сравнима со стоимостью телефонной связи или интернета. Для меня это потребности примерно одинаковых приоритетов, но допускаю, что может быть по разному.
AquiHostStrider
19.04.2018 14:21И как это вяжется с предложенным выше Вами огромным количеством децентрализованных личных VPN?
vconst
17.04.2018 22:08Дуров предлагает оплачивать, правда пока не ясно как об этом договориться.
AquiHostStrider
19.04.2018 15:51У меня тут пришла в голову идея, как это в принципе можно реализовать. То самое «огромное количество». Разработать специализированную железку и вручать её всем заинтересованным провайдерам по символической цене.
Маршрутизация, фильтрация и шифрование — не сильно требовательные к вычислительным ресурсам операции, с которыми справляется сейчас любая популярная ARM SoC. А тут уже научились делать процессоры с 64-128 ARM-ядрами на одном чипе. Поэтому моя фантазия подсказывает следующее: сделать железку, в которой будут интегрированы множество таких машинок. Можно разработать специализированный чип, где ядра (или тандемы из 2-4 ядер) будут завязаны на хитроумный конфигурируемый контроллер шины, который сможет выделять для каждой системы ресурсы: 1-4 ГБ DRAM, 1-4 ГБ NAND, 2-4 eth, 1 виртуальный ttyS0, который можно будет открыть telnet'ом, подняв туннель в клиентскую интрасеть провайдера. Плюс маршрутизатор на физически отдельном процессоре с собственной памятью, который будет коммутировать все внутренние ethernet-ы, торча несколькими оптическими интерфейсами наружу. Плюс отдельный SoC со своей ОС для управления выделением ресурсов клиентам, возможностью сделать poweroff и reboot для отдельного клиента, загрузить образ ОС в выделенный кусок NAND. Никакой виртуализации, всё аппаратно. Никакого u-boot, загрузку ОС для клиента следует предельно упростить: копирование нескольких первых мегабайт из NAND в DRAM, и старт выполнения кода с нулевого адреса. Вот как-то так.vconst
19.04.2018 16:43Ничего этого не надо.
Просто выложить образ докера, подходящий для подавляющего большинства лоухостеров, после разворачивания — образующий впн-сервер и пару подходящих Телеграму прокси. Человек развернул образ, отправил в Телеграм-бот адрес сервера с логинами впн и прокси, ему на счет упало пару сатоши в компенсацию оплаты хостинга. Или еще проще — бот принимает адрес сервака, ключи и/или логин-пароль от root и сам настраивает сервер через API или просто по SSH.
Никакого железа, никаких посылок, все через инет в автоматическом режиме, массово и неподконтрольно.AquiHostStrider
20.04.2018 01:10Я исхожу из того, что свет клином на Телеге не сошёлся. Если уж бороться за цифровую свободу — то бороться по всем фронтам. Поэтому я предложил универсальное решение, на котором клиент может запустить всё на что хватит производительности, например хостить сайт-визитку «ИП Финтифлюшкин. Кондитерская г.Мухосранска», ну или транзитную Tor-ноду. Также Ваше программное решение не решает одной важной проблемы — стоимости хостинга для живущего на грани бедности населения. Предложенная мной железка, исходя из энергопотребления порядка 5Вт/ядро плюс память плюс интерфейсы плюс потери в электроцепях потребляла бы около 1кВт. Учитывая круглосуточную работу и украинские цены на э/энергию, получаем порядка 40$/мес. Добавим стоимость своевременной замены выгоревших микросхем или изношенных по циклам записи NAND-чипов — пусть будет 60$/мес. Доплату админу за обслуживание допустим будет выплачивать Дуров и Ко. При стоимости хостинга на такой железке в минимальной конфигурации 2$/мес, если найти хотя бы половину от максимального количества клиентов, она уже себя окупит. 2$/мес — уже вполне приемлемая для народа цена, особенно когда у человека есть желание иметь десяток таких хостингов в разных странах. Правда, остаётся одна проблема: как защититься бы от спекулянтов-сквоттеров.
enamchuk
18.04.2018 11:16Есть vps-сервис за 9-12$ в год, есть готовые vpn и прокси за сравнимую цену. Можно арендовать vps вскладчину небольшой группой товарищей и разделить стоимость аренды. Арендовать vps лучше у менее крупных и популярных ресурсах. У меня есть две арендованные — одна в США, вторая- в Украине.
AquiHostStrider
19.04.2018 14:27А смысл сейчас держать VPS в Украине? Разве что из-за цены. Если по принципу «близко от России», то лучше в Польше или Германии, поскольку прямого обмена с Украиной у российских провайдеров уже давно нет, пакеты идут транзитом через одну из этих стран, что на traceroute чётко видно.
enamchuk
19.04.2018 17:03Я брал из-за цены ($12 в год), разместил на нём VPN, proxy и sip-proxy. Трафик идёт через Германию. Недавно нашёл в США с конфигурацией получше, стоимостью $9 в год
AquiHostStrider
19.04.2018 21:07Точно в год? Не в месяц? Киньте-ка адресок ;-) У DigitalOcean цены начинаются от $5/месяц.
enamchuk
20.04.2018 05:35portal.nfphosting.com/cart.php?a=add&pid=53
Ограниченное предложение, может измениться.
Zelgadiss
17.04.2018 13:17+1По поводу пункта номер три. Сам пользуюсь таким, но на Android 7 есть проблема, что гугломаркет не хочет качать какие-либо обновления или приложения, просто висит закачка, а потом падает с ошибкой таймаута. Либо отключать VPN, либо гнать весь трафик через него.
Viacheslav01
17.04.2018 13:29Для похода по сайтам ТОР уже не торт, да часто он работает хорошо, но первая рекапча все ломает.
jehy Автор
17.04.2018 13:40Для сайтов — да. Для мелочи вроде мессенджеров — вполне.
AquiHostStrider
20.04.2018 01:17Tor годится только для злачных мест из домена .onion. Для всего остального использовать его нецелесообразно.
capslocky
17.04.2018 15:41Еще одна полезная фича — можно явно указать по IP адресам какую часть трафика направлять через VPN — исключая некоторые, или наоборот, только некоторые. Есть и способы автоматически срезолвить домены в IP адреса.
uneasy
17.04.2018 18:41Нет, это не так, даже на огрызках — вы точно так же можете гонять через VPN только нужный трафик.
Не нашел такой возможности на айфонах. На андроиде есть, понятно — например, в клиенте OpenVPN от Arne Schwabe.jehy Автор
17.04.2018 18:42Сам не пробовал, но примеры того, что конфигурация работает — есть (четвёртый сверху комментарий, а дальше там даже скрин логов с айфона есть).
uneasy
18.04.2018 10:15Ну, хоть что-то, на малоюзабельно по моему. Мало того, что придется прописывать IP, а не приложения, так еще и то, что НЕ должно идти через VPN. Если что-то забудешь прописать, трафик хостера будет сжираться. А на андроиде ставишь одну галочку напротив «телеграм», и все.
jehy Автор
18.04.2018 10:25Айпишник один раз прописал на сервер и забыл. И прописывает именно то, что ДОЛЖНО идти через ВПН.
uneasy
18.04.2018 11:39По вашей же ссылке:
«Now connections to those IP addresses don't go via the VPN connection, they're routed via mobile data.»
Описание ключа route IP netmask net_gateway тут:
community.openvpn.net/openvpn/wiki/IgnoreRedirectGateway
И телеграм использует кучу IP адресов, еще и меняет их сейчас постоянно.jehy Автор
18.04.2018 11:49Ну так. Чувак не прописывал всё кроме нетфликса (или что там ему нужно было), он прописал нетфликс, и теперь все остальные адреса не идут через впн.
Для телеграмма достаточно указать одну основную подсеть, которая много лет не меняется (и никуда не денется), остальные это всего лишь зеркала, которые нас не интересуют при условии работы основной подсети.uneasy
18.04.2018 12:18Нет. Почитайте внимательно свою же ссылку. Начните с заголовка: «bypassing VPN for certain domains on iOS». Это то, что было автору поста нужно, и это именно то, что он и добился (комментарий с решением от самого же автора, syd2ter).
Теперь внимание, правильный ответ, которого нет по вашей ссылке — нужно отключить на сервере строчку в конфиге: push «redirect-gateway def1 bypass-dhcp» или, наоборот, в конфиге клиента включить: route-nopull. После этого уже можно командами route (но без net_gateway — погуглите хотя бы, что это) выборочно роутить трафик через OpenVPN сервер.
Только это все бессмысленно, так как «основную подсеть, которая много лет не меняется» роскомнадзор уже, естественно, давно заблокировал, и у телеграма новые IP, которые они рассылают пушами, которые роскомнадзор снова банит, и телеграм рассылает новые, и так до бесконечности.jehy Автор
18.04.2018 12:40На сервере это строчки по дефолту вроде и нету. Ну или я уже успел забыть про то, как её убирал.
Роскомнадзор, конечно, заблокировал основную подсеть, но она никуда не делась, и через впн доступна.uneasy
18.04.2018 12:48У меня сервер на убунте на амазоне, по дефолту строчка есть. Собственно, это ожидаемо — пользователь ждет, что при включении ВПН весь трафик пойдет именно туда без лишних телодвижений.
Ну ок, если вы считаете, что Телеграм даже после обновления пушем продолжает долбиться на старую подсеть, хоть она и заблокирована — у вас есть информация, какая именно это подсеть? Я вот сейчас гуглением не нашел.jehy Автор
18.04.2018 12:53nslookup telegram.org
Non-authoritative answer:
Name: telegram.org
Address: 149.154.167.99
И конечно клиент будет туда стучаться — это основная подсеть, и для клиентов вне РФ она работает, и было бы очень странно её отключать. И я это проверял, да.uneasy
18.04.2018 13:23Они используют в клиентах тот же IP, что и для сайта? Как-то не ожидал этого. Ну, если роута на один единственный IP достаточно, чтобы заработала вся функциональность телеграма, тогда это, конечно, упрощает дело. Хотел бы проверить, но не могу — выяснилось, что провайдер на работе заблокировал и мой сервер на амазоне тоже.
jehy Автор
18.04.2018 13:34Ну я всю подсеть добавил щедро — на заблокированном провайдере поднялось. А вообще, насколько я помню, в исходниках зашито некоторое количество айпишников.
enamchuk
18.04.2018 07:54Коментарий не ради рекламы, а для просвещения.
Для Android есть удобнейший (для меня) VPN-клиент: VPN Client Pro (https://play.google.com/store/apps/details?id=it.colucciweb.vpnclient&hl=ru), который позволяет подключаться к vpn-сервисам по ovpn, sstp и некоторым другим протоколам. В нём реализованы полезные вещи: разрешить работать с vpn только указанным приложениям, запретить работать с vpn только указанным приложениям, настройка маршрутизации (исключить подсеть из vpn либо наоборот), автоматические подключения VPN при условиях (например, при подключении к мобильной сети соединение устанавливается, при отключении от мобильной сети и подключении к сети wifi — отключается (можно наоборот, либо при подключении к оперделённым Wifi-сетям). Возможно добавить несколько адресов серверов в один профиль (перебирает при ошибке соединения с одним из них) и многое другое. Есть лог. Есть платная и бесплатная версии.
vesper-bot
Основная проблема — достать этот список адресов, который нужно гонять по VPN. Разве что настроить подписку прямо на IP blacklist роскомпозора.
jehy Автор
Полный список особо не нужен, я добавляю по прецеденту необходимые ресурсы. К тому же, нужен только один адрес, миллион зеркал добавлять необязательно.
kirillzak
Я на своё роутере (под управлением OpenWRT) использую скрипт, который отправляет в туннель только определённые домены из списка. Не вижу смысла пихать весь список.
Если кому надо, то скрипт лежит на GitHub.
Meklon
Как бы это с Mikrotik подружить? Есть в наличии сервер домашний, можно виртуальную машину поднять. Просто как-то надо трафик перехватывать и сортировать еще на роутере.
kirillzak
Для Mikrotik можно использовать firewall с дальнейшей заворачиванием в туннель. К примеру, так.
Meklon
Полезная штука. Особенно порадовал авторезолв доменного имени. Проблема в том, что я не знаю заранее, что именно заворачивать. Особенно, если ломается какой-нибудь CDN и из-за этого повисает скрипт на странице третьего ресурса.
m0rpheus
микротик спокойно добавляет маршрут если сервер говорит ему
push "route x.x.x.x 255.255.255.255"
NoOne
Я делал немного по другому, чем в комментарии выше.
У меня OpenVPN на удаленном хосте. Также есть address-list со списком нужных адресов, через mangle маркируются пакеты, которые должны уходить через VPN, и в /ip route настроена отправка этих пакетов с такой маркировкой
pastebin.com/GSSSr7qB
Т.о. весь трафик до заблокированных адресов идет через VPN, остальное через обычный инет.
kirillzak
А по нагрузке на процессор это как сказывается?
ivan386
Совсем не проблема: https://reestr.rublacklist.net/article/api