Как сделать свободный интернет для себя, друзей и своей семьи

Гайд, благодаря которому вы получите:

  • Свой собственный VPN сервер на базе Outline, не зависимый от прихоти Роскомнадзора устроить облаву на очередной популярный VPN сервис
  • Возможность генерировать ключи для своих родственников, знакомых и друзей, ограничивать им объём трафика (а то что они пользуются как не в себя), и отзывать действующие ключи, если человек впал в немилость
  • Клиент на каждом своём устройстве, который не придётся постоянно включать и выключать, когда вы хотите куда-то попасть. Наконец-то инста, в которую можно просто зайти без переключения VPN, и вернувшиеся аватарки ютуба!
Я уже настолько привык к вернувшимся аватаркам, что очень удивляюсь, когда у коллег вижу ютуб без аватарок на их айфонах
Я уже настолько привык к вернувшимся аватаркам, что очень удивляюсь, когда у коллег вижу ютуб без аватарок на их айфонах

Перед тем, как приступить ко всему, помните, что гайд не обязательно будет актуальным через год или даже месяц (но с высокой вероятностью он останется актуальным). Цель гайда - дать возможность настроить свой собственный VPN сервер безо всяких знаний в области администрирования linux серверов и в целом безо всяких серьёзных компьютерных знаний.

Часть 1. Поиск и приобретение сервера

Для начала нам нужно купить VPS сервер. Главным условием должно быть нахождение сервера за пределами Российской Федерации. Нидерланды, Германия, Польша - выбирайте по вкусу и наименьшему пингу, в большинстве случаев особой разницы не будет. В идеале, если вы, всё же, имеете зарубежную карту банка или криптокошелёк - купите VPS в европейской стране, чтобы провайдер вашего сервера находился в юрисдикции другой страны, так вы себя на 100% обезопасите от самодеятельности российских провайдеров и в принципе от факта того, что к провайдеру придут и спросят о трафике с вашего сервера. Однако, такая возможность есть далеко не у всех, а VPN поднимать нужно, выбираем из того, что есть.

Из известных мне провайдеров есть вот эти:

  • Timeweb (один из очень популярных провайдеров, но много их айпишников светятся в GeoIP)
  • Aéza (не всегда стабильная работа)
  • WeaselCloud (лично не пробовал)

Существует ещё ряд менее известных провайдеров, далее уже ищите самостоятельно, если есть желание.

Самое вкусное - урвать на Аезе промо тариф. Но стабильность у них иногда хромает
Самое вкусное - урвать на Аезе промо тариф. Но стабильность у них иногда хромает

GeoIP - это способ определения вашего местонахождения на основании IP адресов. Нередко они связаны не с физическим местоположением сервера, а с юридическим адресом владельца IP адресов.

Пример: сервер стоит в Амстердаме, IP у него нидерландский. Но персональный владелец и сервера, и этого диапазона IP - Timeweb, юр. лицо которого зарегистрировано в РФ. Поэтому этот IP в базе GeoIP может числиться как российский, и условный ChatGPT будет блокировать доступ к сайту. В случае с Timeweb обращение в поддержку позволяет сменить IP сервера на тот, который ещё не засветился в базе, но в целом тенденция такова, что чем менее популярный провайдер - тем реже его зарубежные IP числятся в GeoIP

После выбора провайдера, покупайте VPS или виртуальный сервер себе по душе. Если ваша "клиентская база" - вы, пяток друзей, родители и дедушка с бабушкой - обычно вам спокойно хватит самого дешёвого тарифа. Если же сервера будет не хватать - можно будет через поддержку провайдера перейти на другой тариф, не бойтесь экспериментировать.

Важно: при покупке выбирайте операционную систему Ubuntu 20.04. Наш будущий сервер однозначно встанет на такую конфигурацию без вопросов.

После оплаты ожидаете где-то 5-30 минут - и ваш сервер готов, вам уже показали или прислали на почту ваш IP, логин (root) и пароль.

Заветное письмо с моим IP, логином и паролем. Логин всегда root
Заветное письмо с моим IP, логином и паролем. Логин всегда root

Часть 1.5. Обеспечение безопасности сервера

Небольшое пояснение для знающих: если вы разбираетесь в настройке серверов linux, данная часть для вас бесполезна, вы не увидите здесь ничего нового, а некоторые важные для профессиональной настройки пункты и вовсе пропущены, вроде настройки iptables, фаервола или даже настройки входа в SSH по ключу. Сделано это в угоду упрощения настройки сервера для тех, кто в этом не понимает вовсе.

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

На этом моменте вы можете подумать "да кому я нужен, у меня там нет никаких гос тайн, к чему кому-то тратить время на меня?". На это есть достаточно простой ответ: в современном мире существуют ботнеты, которые в автоматическом порядке пробегают все IP адреса (особенно диапазоны адресов, принадлежащие провайдерам), и если находят сервер, настроенный по умолчанию - пытаются его взломать, чтобы в лучшем случае получить чужую мощность, настроить свой собственный VPN для проведения хакерской атаки от имени вашего сервера или просто включить в ботнет для DDoS атак

Все команды, можно копировать и вставлять, не обязательно переписывать их вручную.

И так, заходим на сервер. Для этого нам понадобится Windows Powershell. Запускаете его, и вводите команду

ssh root@127.0.0.1

где root - это имя пользователя (root в linux - самый главный администратор с неограниченными правами, именно его вам выдадут при регистрации), а 127.0.0.1 - это IP вашего сервера.

Минималистичный вид консоли может создать обманчивое впечатление, что справиться с ней сможет только профи. Поверьте, вам это тоже под силу)
Минималистичный вид консоли может создать обманчивое впечатление, что справиться с ней сможет только профи. Поверьте, вам это тоже под силу)

После этого вводите пароль, который вам выдали при регистрации. Всё, вы вошли на сервер!

1) Для начала скачаем нужные пакеты:

apt install -y sudo fail2ban nano

Пакет sudo нужен, чтобы и рядовые пользователи могли работать от имени администратора. Пакет fail2ban позволяет избежать брутфорса, если какой-то бот попытается перебрать пароль от вашего сервера. А nano - простейший редактор, который понадобится нам чуть позже

2) Создаём нового пользователя и наделяем его правами администратора. Для примера я буду использовать aneugene, вы же можете придумать своё имя из латинских букв

useradd aneugene usermod -aG sudo aneugene passwd aneugene

После команды passwd aneugene придумываете пароль, под которым вы будете входить на этого юзера. Не используйте простой пароль для вашей безопасности! Всё равно вам его редко вводить понадобится, можете записать его где-то.

3) Вносим изменения в настройки SSH. Для начала открываем файл настроек командой

nano /etc/ssh/sshd_config

Теперь перед нами открыт текстовый редактор, в котором указаны настройки подключения SSH. Здесь нам нужно поправить некоторые настройки. Если перед настройкой стоит знак решётки "# " - его следует удалить, чтобы параметр вступил в силу. И так, нам следует поменять следующие настройки:

  • Port 22 - поменять число 22 на любое (желательно четырёхзначное, чтобы не попасть в уже занятые порты) число, которое пожелаете. К примеру, 1337. Это номер порта, через который мы будем подключаться, его следует запомнить.
  • PermitRootLogin yes - поменять yes на no. Таким образом, мы запрещаем попытки подключения под администратором.

Нажимаем комбинацию CTRL+O, чтобы сохранить файл, и CTRL+X, чтобы выйти из редактора. На этом настройки заканчиваем, прописываем команду

shutdown -r now

чтобы сервер перезагрузился. Теперь, чтобы войти на сервер, придётся прописывать не ту команду, которую прописали в самом начале для входа, а эту:

ssh aneugene@127.0.0.1 -p 1337

где aneugene - имя пользователя, которого мы создали, 127.0.0.1 - всё ещё IP нашего сервера, а 1337 - номер порта, который мы придумали для настроек SSH. Пароль в этот раз нужно вводить тот, который вы задали для вашего пользователя.

Часть 2. Установка и настройка самого VPN сервера

Теперь приступаем к настройке самого VPN. Для этого нам нужно зайти на официальный сайт данного VPN, и скачать оттуда Outline Manager на ваш компьютер. Это - программа, через которую мы будем настраивать доступы к нашему VPN.

Менеджер вполне минималистичный, заблудиться в нём будет сложно
Менеджер вполне минималистичный, заблудиться в нём будет сложно

После скачивания и установки, у нас откроется данный менеджер, естественно, без единого сервера внутри. Нажимаем на добавление нового сервера, выбираем пункт "Настройте Outline где угодно". Прямо в менеджере вам выдадут команду, которую нужно будет скопировать и вставить на сервер (можете взять строку здесь, можете из менеджера):

sudo bash -c "$(wget -qO- https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh)"

Опять заходите на сервер (как - описано в начале части 1.5, или вы уже знаете как, если выполнили часть 1.5), и вставляете данную команду. Так как тут уже используется sudo, сервер опять запросит пароль от вашего пользователя - вводим его. Вероятно, в процессе установки скрипт сообщит о необходимости установки Docker - соглашайтесь с выбором и ставьте всё, что он попросит.

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

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

Кто же набьёт больше трафика: я, которому VPN нужен для разных заблокированных сайтов и доступа к различной информации, или мама, которой "VPN не нужен, ну разве что в инстаграме изредка сидеть буду"?
Кто же набьёт больше трафика: я, которому VPN нужен для разных заблокированных сайтов и доступа к различной информации, или мама, которой "VPN не нужен, ну разве что в инстаграме изредка сидеть буду"?

Часть 3. Установка и настройка клиентов с маршрутизацией

Сперва давайте посмотрим на ключи, которые выдаёт нам Outline. Они имеют вид
ss://0J3QtdGCLCDRjdGC0L4g0L3QtSDQvdCw0YHRgtC+0Y/RidC40Lkg0LrQu9GO0Yc@127.0.0.1:73556/?outline=1
Ключи такого же вида (кроме "?outline=1") генерирует и стандартный Shadowsocks сервер. Так что ключи, сгенерированные этим VPN, подходят для любого клиента, работающего с голым Shadowsocks

Я создал репозиторий со всеми нужными ссылками на клиентами и файлами с маршрутами, которые использую и сам, и все мои знакомые тоже используют:

Здесь указаны способы настройки маршрутизации для Windows, Android, iOS. Способ для Linux пока что обкатывается и дорабатывается, а способ для MacOS не обкатывался вовсе по причине отсутствия такого девайса у меня на руках. Если найдутся энтузиасты, которые найдут подходящий клиент и проверят на нём работу - я буду только рад.

Единственное напоминание о том, что я вообще-то VPNом пользуюсь. Надо бы скрыть его в настройках... 
Единственное напоминание о том, что я вообще-то VPNом пользуюсь. Надо бы скрыть его в настройках... 

Добавление ссылки на файл с маршрутами обеспечивает синхронизацию маршрутов, так что вам не придётся заново скачивать файлы из репозитория и рассовывать их по устройствам сначала у себя, а потом и у всех остальных: оно всё само синхронизируется в фоне.

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

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

Небольшое послесловие

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

Когда же я поднял сервер (тогда ещё поднимал Wireguard) - столкнулся с тем, что иногда постоянно дёргать переключатель VPN впадлу и геморройно: пока VPN выключен - ты не можешь на сайт зайти, включил его - отвалилась игра, в которую ты играл в альт-табе (разрыв соединения, что), или ВК музыка отвалилась, потому что авторские права для зарубежных IP работают по другим правилам, видимо. Я перестал посещать инстаграм, ведь чтобы на него зайти, нужно: включить VPN, подождать соединения, зайти, загрузить инсту, посмотреть её, выйти, выключить VPN, а это так впадлу, ведь куда проще... Просто зайти. Я уж молчу, что не только я, но и все пользователи моего VPN постоянно забывали выключать его, из-за чего и трафик начинал набегать приличный, и когда все сидят - грузят канал по полной, а не столько, сколько им нужно.

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

UPD. Было бы более актуальным сделать VPN на VMESS/VLESS/XRAY и ещё куча страшных слов, но я сомневаюсь, что старый добрый Shadowsocks будет быстренько забанен в ближайшее время, это вам не WireGuard или OpenVPN, а ресурсов у РКН не так много, как у китайского Фаервола, чтобы в онлайн режиме анализировать трафик и выявлять аномалии. Да и настройка через Outline проще, а здесь упор был сделан на простоту

251251
11
227 комментариев

Новый пост как-то не напишешь уже, зато можно внести корректировки и рассказать о проекте 3x-ui (https://github.com/MHSanaei/3x-ui), который вместо Outline ставится в одно движение, имеет web интерфейс и поддерживает помимо Shadowsocks ещё уйму протоколов. Так что если произойдёт оказия и Shadowsocks перестанет работать, можно будет не переустанавливая прям в панельке сделать новое подключение и работать дальше

2
1
Ответить
35
Ответить

А ведь когда-то над ним смеялись...

7
Ответить

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

2
Ответить

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

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

А ещё все, кто говорит, что личные VPN будут абсолютно бесполезны, ведь их заблокируют - посмотрите на опыт Китая (SS оттуда и пришёл): на каждый хитрый фаервол находится выход, и блокировка обходится

26
Ответить

смотря какой протокол.вайргуард-да.а шедоусокс ркн врядли когда либо сможет заблочить,есть еще другие протоколы под такое дело

10
Ответить