Гайд, благодаря которому вы получите:
- Свой собственный VPN сервер на базе Outline, не зависимый от прихоти Роскомнадзора устроить облаву на очередной популярный VPN сервис
- Возможность генерировать ключи для своих родственников, знакомых и друзей, ограничивать им объём трафика (а то что они пользуются как не в себя), и отзывать действующие ключи, если человек впал в немилость
- Клиент на каждом своём устройстве, который не придётся постоянно включать и выключать, когда вы хотите куда-то попасть. Наконец-то инста, в которую можно просто зайти без переключения VPN, и вернувшиеся аватарки ютуба!
Перед тем, как приступить ко всему, помните, что гайд не обязательно будет актуальным через год или даже месяц (но с высокой вероятностью он останется актуальным). Цель гайда — дать возможность настроить свой собственный VPN сервер безо всяких знаний в области администрирования linux серверов и в целом безо всяких серьёзных компьютерных знаний.
Часть 1. Поиск и приобретение сервера
Для начала нам нужно купить VPS сервер. Главным условием должно быть нахождение сервера за пределами Российской Федерации. Нидерланды, Германия, Польша — выбирайте по вкусу и наименьшему пингу, в большинстве случаев особой разницы не будет. В идеале, если вы, всё же, имеете зарубежную карту банка или криптокошелёк — купите VPS в европейской стране, чтобы провайдер вашего сервера находился в юрисдикции другой страны, так вы себя на 100% обезопасите от самодеятельности российских провайдеров и в принципе от факта того, что к провайдеру придут и спросят о трафике с вашего сервера. Однако, такая возможность есть далеко не у всех, а VPN поднимать нужно, выбираем из того, что есть.
Из известных мне провайдеров есть вот эти:
- Timeweb (один из очень популярных провайдеров, но много их айпишников светятся в GeoIP)
- Aéza (не всегда стабильная работа)
- WeaselCloud (лично не пробовал)
Существует ещё ряд менее известных провайдеров, далее уже ищите самостоятельно, если есть желание.
После выбора провайдера, покупайте VPS или виртуальный сервер себе по душе. Если ваша «клиентская база» — вы, пяток друзей, родители и дедушка с бабушкой — обычно вам спокойно хватит самого дешёвого тарифа. Если же сервера будет не хватать — можно будет через поддержку провайдера перейти на другой тариф, не бойтесь экспериментировать.
Важно: при покупке выбирайте операционную систему Ubuntu 20.04. Наш будущий сервер однозначно встанет на такую конфигурацию без вопросов.
После оплаты ожидаете где-то 5-30 минут — и ваш сервер готов, вам уже показали или прислали на почту ваш IP, логин (root) и пароль.
Часть 1.5. Обеспечение безопасности сервера
Небольшое пояснение для знающих: если вы разбираетесь в настройке серверов linux, данная часть для вас бесполезна, вы не увидите здесь ничего нового, а некоторые важные для профессиональной настройки пункты и вовсе пропущены, вроде настройки iptables, фаервола или даже настройки входа в SSH по ключу. Сделано это в угоду упрощения настройки сервера для тех, кто в этом не понимает вовсе.
Для работы VPN эта часть не обязательна, вы можете целиком и полностью пропустить эту часть, и VPN всё равно будет работать. Но вы же не храните ключ от двери под ковриком, а облегчать жизнь хакерам нам ни к чему.
Все команды, можно копировать и вставлять, не обязательно переписывать их вручную.
И так, заходим на сервер. Для этого нам понадобится Windows Powershell. Запускаете его, и вводите команду
где root — это имя пользователя (root в linux — самый главный администратор с неограниченными правами, именно его вам выдадут при регистрации), а 127.0.0.1 — это IP вашего сервера.
После этого вводите пароль, который вам выдали при регистрации. Всё, вы вошли на сервер!
1) Для начала скачаем нужные пакеты:
2) Создаём нового пользователя и наделяем его правами администратора. Для примера я буду использовать aneugene, вы же можете придумать своё имя из латинских букв
После команды passwd aneugene придумываете пароль, под которым вы будете входить на этого юзера. Не используйте простой пароль для вашей безопасности! Всё равно вам его редко вводить понадобится, можете записать его где-то.
3) Вносим изменения в настройки SSH. Для начала открываем файл настроек командой
Теперь перед нами открыт текстовый редактор, в котором указаны настройки подключения SSH. Здесь нам нужно поправить некоторые настройки. Если перед настройкой стоит знак решётки «# » — его следует удалить, чтобы параметр вступил в силу. И так, нам следует поменять следующие настройки:
- Port 22 — поменять число 22 на любое (желательно четырёхзначное, чтобы не попасть в уже занятые порты) число, которое пожелаете. К примеру, 1337. Это номер порта, через который мы будем подключаться, его следует запомнить.
- PermitRootLogin yes — поменять yes на no. Таким образом, мы запрещаем попытки подключения под администратором.
Нажимаем комбинацию CTRL+O, чтобы сохранить файл, и CTRL+X, чтобы выйти из редактора. На этом настройки заканчиваем, прописываем команду
чтобы сервер перезагрузился. Теперь, чтобы войти на сервер, придётся прописывать не ту команду, которую прописали в самом начале для входа, а эту:
где aneugene — имя пользователя, которого мы создали, 127.0.0.1 — всё ещё IP нашего сервера, а 1337 — номер порта, который мы придумали для настроек SSH. Пароль в этот раз нужно вводить тот, который вы задали для вашего пользователя.
Часть 2. Установка и настройка самого VPN сервера
Теперь приступаем к настройке самого VPN. Для этого нам нужно зайти на официальный сайт данного VPN, и скачать оттуда Outline Manager на ваш компьютер. Это — программа, через которую мы будем настраивать доступы к нашему VPN.
После скачивания и установки, у нас откроется данный менеджер, естественно, без единого сервера внутри. Нажимаем на добавление нового сервера, выбираем пункт «Настройте Outline где угодно». Прямо в менеджере вам выдадут команду, которую нужно будет скопировать и вставить на сервер (можете взять строку здесь, можете из менеджера):
Опять заходите на сервер (как — описано в начале части 1.5, или вы уже знаете как, если выполнили часть 1.5), и вставляете данную команду. Так как тут уже используется sudo, сервер опять запросит пароль от вашего пользователя — вводим его. Вероятно, в процессе установки скрипт сообщит о необходимости установки Docker — соглашайтесь с выбором и ставьте всё, что он попросит.
По окончанию работы скрипта вы получите в ответ строчку, которую будет достаточно скопировать и вставить в соответствующее поле в Outline Manager. Всё, можно выходить с сервера и больше никогда на него не заходить) Можете сохранить строчку доступа, которую вы добавили в Outline Manager, и использовать её для доступа с другого компа (к примеру, поставить менеджер как на рабочий, так и на домашний компьютер).
Теперь вы можете генерировать через менеджер ключи для себя, друзей, знакомых, и использовать их через Outline клиент. Вот только клиент Outline не предоставляет маршрутизацию, а мы хотим ничего не жать и чтобы всё работало, а значит нам нужно что-то другое.
Часть 3. Установка и настройка клиентов с маршрутизацией
Сперва давайте посмотрим на ключи, которые выдаёт нам Outline. Они имеют вид
ss://0J3QtdGCLCDRjdGC0L4g0L3QtSDQvdCw0YHRgtC+0Y/[email protected]:73556/?outline=1
Ключи такого же вида (кроме «?outline=1») генерирует и стандартный Shadowsocks сервер. Так что ключи, сгенерированные этим VPN, подходят для любого клиента, работающего с голым Shadowsocks
Я создал репозиторий со всеми нужными ссылками на клиентами и файлами с маршрутами, которые использую и сам, и все мои знакомые тоже используют:
https://github.com/An-Eugene/ss_conditions/
Здесь указаны способы настройки маршрутизации для Windows, Android, iOS. Способ для Linux пока что обкатывается и дорабатывается, а способ для MacOS не обкатывался вовсе по причине отсутствия такого девайса у меня на руках. Если найдутся энтузиасты, которые найдут подходящий клиент и проверят на нём работу — я буду только рад.
Добавление ссылки на файл с маршрутами обеспечивает синхронизацию маршрутов, так что вам не придётся заново скачивать файлы из репозитория и рассовывать их по устройствам сначала у себя, а потом и у всех остальных: оно всё само синхронизируется в фоне.
Если у вас телефон на Android, настоятельно рекомендую добавить в приложение один ключ дважды: в первом профиле указать пользовательские правила маршрутизации, а во втором указать весь трафик, так вы сможете быстро переключиться на полный VPN, если в маршрутах пока отсутствует нужный вам файл, или вам по какой-то причине нужно включить VPN на весь трафик, а не только на заблокированные его части.
Если у вас есть какие-то сайты, про которые вам известно, что они заблокированы, но почему-то у меня они отсутствуют — можете сообщить мне о них через личные сообщения или через github, я обязательно добавлю. А если вам в принципе не нравится пользоваться чужим репозиторием, в который я могу добавить что захочу без вашего ведома — можете создать форк репозитория, и вести список маршрутов самостоятельно.
Небольшое послесловие
Данная инструкция родилась из того, что мне хотелось поднять собственный сервер VPN, чтобы не зависеть от разных организаций, чтобы у меня за скромную плату был быстрый VPN, которым я могу поделиться со всеми моими родными и друзьями.
Когда же я поднял сервер (тогда ещё поднимал Wireguard) — столкнулся с тем, что иногда постоянно дёргать переключатель VPN впадлу и геморройно: пока VPN выключен — ты не можешь на сайт зайти, включил его — отвалилась игра, в которую ты играл в альт-табе (разрыв соединения, что), или ВК музыка отвалилась, потому что авторские права для зарубежных IP работают по другим правилам, видимо. Я перестал посещать инстаграм, ведь чтобы на него зайти, нужно: включить VPN, подождать соединения, зайти, загрузить инсту, посмотреть её, выйти, выключить VPN, а это так впадлу, ведь куда проще… Просто зайти. Я уж молчу, что не только я, но и все пользователи моего VPN постоянно забывали выключать его, из-за чего и трафик начинал набегать приличный, и когда все сидят — грузят канал по полной, а не столько, сколько им нужно.
Так и родилась идея маршрутизации трафика, ведь проще клиента, в котором нужно жать только на одну кнопку, только клиент, в котором вообще ничего жать не нужно. Ну и моё любимое — аватарки ютуба, ведь всё это затевалось только ради них) Оказалось, найти нужные рабочие клиенты, и довести всё до почти полной автоматизации — достаточно тяжёлая задача, ведь некоторые клиенты не поддерживают маршрутизацию, некоторые — откровенно сломаны и забагованы, а некоторые клиенты просто вырезаны из магазина приложений (привет айфонам). Но по большей части результат оправдал все затраченные силы, и, надеюсь, поможет не только мне.
UPD. Было бы более актуальным сделать VPN на VMESS/VLESS/XRAY и ещё куча страшных слов, но я сомневаюсь, что старый добрый Shadowsocks будет быстренько забанен в ближайшее время, это вам не WireGuard или OpenVPN, а ресурсов у РКН не так много, как у китайского Фаервола, чтобы в онлайн режиме анализировать трафик и выявлять аномалии. Да и настройка через Outline проще, а здесь упор был сделан на простоту