Обход блокировок провайдера при помощи собственного сервера VPN Wireguard

В данном гайде мы рассмотрим как обойти блокировки местного/регионального провайдера на доступ к контенту который нам стал не доступен — при помощи Wireguard.
Рассмотрим два варианта.
Первый с установкой клиента на ваше устройство, например телефон. Удобен если вы много перемещаетесь, но вам нужен доступ к так называемому «запрещенному контенту»
Второй — это если вы счастливый обладатель роутера Mikrotik и дома куча устройств на которых не поставишь VPN-клиент
Оба варианта могут работать как по отдельности, так и вместе.
Для любого из вариантов вам понадобится собственный vpn-сервер, через который вы будете выходить в мир, минуя вашего провайдера.
Где взять?
За несколько лет лучшим решение по соотношению цена/качество остается Hetzner
Из плюсов:
Стоимость сервера от 3,5 евро в месяц на скорости в 1Gb/sec. Трафик считается только в одну сторону. И трафика этого дается 20Тб в месяц, чего хватит с большим, большим запасом
Обход блокировок провайдера при помощи собственного сервера VPN
Если зарегистрируетесь по моей ссылке — сразу получаете 20 евро себе на счет, после прохождения KYC, и тут же можете их использовать на аренду сервера, без всяких предварительных условий. Т.е. просто нажав на рефф.ссылку вы получаете сервер на несколько месяцев бесплатно.
Оплата на сервере — почасовая. Т.е. если вам нужен сервер на 2 часа — вы платите за 2 часа работы сервера. Потом, если не нужно — удаляете сервер — и деньги остаются на вашем счету
Из минусов:
В данный момент зарегистрироваться и оплатить сервер с документами РФ официально не возможно.
Однако.
Регистрация, оплата и дальнейшая работа ни как между собой не связаны. Что я имею ввиду?
Регистрация — можете просто купить регистрацию в Сети. Есть куча ресурсов которые продают просто готовые регистрации. (Конкретно посоветовать не могу, ибо не имею такой проблемы)
Предположим, у вас появился какой ни будь вьетнамский аккаунт. Вполне подойдет. Далее
Оплата.
(еще раз напомню, что по рефф.ссылке оплачивать вам не придется несколько месяцев)
Карты РФ к оплате не принимают. Но, ничего не мешает любому другому человеку в мире оплатить хостинг за вас. Хоть разово, хоть на постоянной основе.
Как рассчитаться с человеком который оплатил за вас? Самый простой способ — крипта. Просто и понятно. Конечная стоимость хостинга немного вырастит, но она возможно, останется по прежнему ниже того что вы найдете в Сети, где принимают карты РФ.
Если не нравится Хецнер, ищите хостинг где принимаются ваши карты. Естественно за пределами страны.
После того как вы определитесь с хостингом — выбираем OC. Нам подойдет Ubuntu, она есть у всех хостеров, или Debian, если вам эта OC привычней.
Установку самой OC мы опускаем (возможно оформим отдельным гайдом позже)
Итак мы попали в консоль сервера. поднимаемся до рута, если заход дают от простого пользователя.  Черный экран — белые буквы — красота 🙂

Устанавливаем Wireguard.

Скриптов для установки в Сети существует великое множество. Делают они примерно одно и тоже. Можете поискать сами, можете воспользоваться уже готовым

cd /root
wget https://git.io/wireguard -O wireguard-install.sh

Запускаем скрипт следующей командой  и отвечаем на немногочисленные вопросы.

bash /root/wireguard-install.sh

Обход блокировок провайдера при помощи собственного сервера VPN

Port — можно оставить по умолчанию. Можно поменять. Только тогда нужно учитывать это при настройки микрота

Name — произвольное имя

При выборе DNS рекомендую выбрать AdGuard. Сейчас объясню почему. Это DNS от команды Adblock которая поставляет продукт — резалку баннеров и рекламы, которой многие из вас наверняка пользуются на ПК и ноутбуках. Но счастливые обладатели телевизоров которые не могут установить данный плагин вынуждены смотреть надоедливую рекламу при просмотре, того же YouTube. Выбрав данный DNS вы срежете рекламу уже на уровне запросов. Это такой дополнительный бонус. Если что то не понравится, всегда можно поменять сервера DNS в конфигурационном файле.

Во время создания пользователя скрипт генерит и QR-код. Т.е. если вы будете устанавливать vpn на телефон — все что вам нужно будет — это просто отсканировать этот код телефоном и ваше устройство настроится автоматом.
Обход блокировок провайдера при помощи собственного сервера VPN

По окончанию работы скрипта у нас создадутся 2 файла
/root/galayda.conf — это настройки конкретного локального пользователя. Файл можно скачать на локальный ПК и импортировать в клиент. И из этого файла мы будем брать настройки для нашего микротика.
/etc/wireguard/wg0.conf — это глобальные настройки на сервере
С серверной частью все

Вот содержимое файла /root/galayda.conf что бы было визуально понятно что откуда берется и что куда вставляется

Обход блокировок провайдера при помощи собственного сервера VPN

Переходим непосредственно к настройке микротика.
(можно скачать этот файл и просто импортировать его в микротик, но мы пойдем по длинному маршруту не обходя косяки и грабли)
Нажимаем на «Wireguard» и за тем на «+»
В открывшемся окне заполняем одно единственное поле — а именно «Privat Key» Порты не меняем, если вы вдруг использовали не стандартный порт
Privat Key берем из файла конфигурации выше
Обход блокировок провайдера при помощи собственного сервера VPN
В поле Public Key появится ключ. Он должен совпадать с ключом из файла /etc/wireguard/wg0.conf
Нажимаем «OK» — клиента создали
Переходим на вкладку «Peers», нажимаем на «+»
Обход блокировок провайдера
И заполняем следующие поля
Public Key — вот тут берем ключ из файла/root/galayda.conf
Endpoint — это ip адрес вашего сервера
Endpoint Port — если оставляли по умолчанию то ставим 51820. Если меняли, то на тот что меняли.
Allowed Address — это с каких ip адресов вы разрешаете пользоваться vpn. Если отовсюду то ставим 0.0.0.0/0
Preshared Key — из того же конфигурационного файла
Keepalive — 00:00:25
Нажимаем на «Aplly»
В идеале в нижней части в разделе «Client Config» Должны появиться данные. Но!
Я настраивал людям микроты удаленно и данное поле оставалось не заполненным, хотя VPN работал исправно. Не знаю баг это или фича. Если данные не появились — это не значит что вы ошиблись.
Будем считать что это особенность вашего конкретного микрота. Нажимаем «ОК» и переходим к следующей настройке.
Как видим из конфигурационного файла /root/galayda.conf нашему микроту выделен ip адрес 10.7.0.2/24
Давайте назначим этот адрес на самом микроте.
IP — Addresses — нажимаем «+»
Обход блокировок провайдера
Добавляем ip и подсеть и выбираем интерфейс wireguard (в моем примере это wireguard3 у вас это скорее всего будет wireguard1 Обратите на это внимание)
Переходим IP-Routes
У вас должен появиться автоматический маршрут до вашего VPN сервера
Обход блокировок провайдера при помощи собственного сервера VPN

Открываем «New Terminal» и пингуем наш vpn сервер по серому ip. Если пинг пошел — можно пойти покурить. Сделали самое главное. Наш микрот и наш VPN видят друг друга.
Теперь лирическое отступление.
Итак, мы хотим что бы то что не едет через основного провайдера заворачивалось в VPN, остальное же шло в нашего провайдера. Как это теоретически работает. Мы создаем таблицу с адресами которые не любит наш провайдер. (как это сделать расскажу позже) Эта таблица хранится внутри самого микрота. Далее на телевизоре или ПК вы набираете, например, youtube.com. Микрот видит что данный адрес есть в нашей табличке и ставит метку на этот пакет. Пакет поступает дальше в очередь на отправку. И в момент отправки микрот видит что стоит метка при которой нужно завернуть этот пакет не по маршруту по умолчанию, а на ваш VPN. Это в общих чертах.
Итак на м нужна таблица с «плохими» адресами, что то что будет маркировать пакеты из этого списка и правило которое будет отправлять пакеты по нужному маршруту

Создаем таблицу
IP-Firewall-Addresses List
В моем примере таблица называется «spotify»
И прописываем туда один единственный домен для примера 2ip.ru
Обход блокировок провайдера
Нажимаем «Ок» и видим как в таблице появился не только домен, но и микрот сам разрезолвил его ip

Помечаем пакеты которые будут отправляться на адреса из нашей таблицы

IP-Firewall-Mangle «+»
Вкладка General
Поле Chain выбираем — «prerouting»
Поле Dst. Address List — «spotify»

Вкладка Action
Поле Action выбираем «mark routing»
Поле New Routing Mark прописываем произвольное название. В моем примере это mark_vpn
И вот ту еще одни грабли! В некоторых микротиках в это поле дает писать, а в некоторых только выбрать из того что есть. А поскольку там только основная таблица, то выбирать не из чего. 🙁
Не знаю, возможно эту настройку куда то перенесли в другую вкладку, но я обошел эту проблему просто создав данную таблицу из командной строки
Если у вас дало написать — замечательно — нажимаем «Applay» и пропускаем несколько строк ниже.
Неудачники же идут в «New Terminal» и выполняют такую команду

/routing table
add disabled=no fib name=mark_vpn

Таки нашел куда запрятали эту настройку в седьмой версии.
Идем «Routing» — «Tables»
Обход блокировок провайдера
Нажимаем на «+» и добавляем название нашей таблицы
Обход блокировок провайдера

В итоге у вас в поле  Action появится маркер mark_vpn, который мы можем выбрать.

Обход блокировок провайдера

Прописываем маршрут для этих пакетов

Переходим IP-Routes «+»
Создаем новый маршрут. Обращаем внимание что поле Gateway прописывается руками, а не выбирается (вы же помните что у вас в конце, вероятнее всего цифра 1)
И в поле «Routing Table» выбираем таблицу «mark_vpn»
Нажимаем «Applay»
Осталось совсем чуть чуть.
Ip — Firewall -Nat «+»
Создаем правило
Обход блокировок провайдера при помощи собственного сервера VPN
Вкладка General
Поле Chain выбираем «srcnat»
Поле Out Interface выбираем интерфейс wireguard
Переходим на вкладку Action и выбираем параметр masquerade
Нажимаем «Applay»
Обход блокировок провайдера при помощи собственного сервера VPN
Берем это правило (мышкой) и перетягиваем на первое место

И еще один штрих
Переходим Ip-Firewall-Filter rules
И деактивируем следующее правило (если этого не сделать, все поедет, но будет дико тормозить)

Обход блокировок провайдера при помощи собственного сервера VPN
Прям с настройками уже все. Можем переходить к тестированию
Итак, помним, что сейчас у нас в таблице которая отправляется на VPN пока один единственный адрес — 2ip.ru Для тестов нам вполне  хватит.
Набираем в браузере сначала какой ни будь сервис который покажет наш реальный ip
Например https://www.yougetsignal.com/what-is-my-ip-address/

Теперь в том же браузере набираем 2ip.ru и должны увидеть ip нашего vpn сервера
Обход блокировок провайдера

 

Если все и тут прошло нормально то переходим к заключительному шагу -заполнению таблицы с ресурсами которые наш провайдер не дает посещать. В случае если это отдельный сайт, который, как правило, имеет один ip адрес все просто идем
IP-Firewall-Addresses List
Выбираем таблицу «spotify» и добавляем домен ресурса, например, rutracker.org
Wireguard
Нажимаем на «Aplly»
Как видим у данного сайта есть зеркало на другом ip и микротик добавил оба ip-адреса в нашу таблицу.
Wireguard
С такими сайтами все просто и понятно. Однако с такими ресурсами как YouTube дело обстоит немного сложнее. Там могут быть сотни ip-адресов.
Поэтому мы будем вносить не конкретный домен. Точнее не только конкретный домен но и все подсети которые принадлежат компании Google. Где брать списки сетей? Конечно же искать в интернете. Я приложу сюда базовый список, которые собрали пользователи моего телеграм-канала. За что им огромное спасибо.

64.233.160.0/19
66.102.0.0/20
66.249.64.0/19
72.14.192.0/18
74.125.0.0/16
209.85.128.0/17
216.239.32.0/19
64.18.0.0/20
108.177.8.0/21
172.217.0.0/19
173.194.0.0/16
207.126.144.0/20
216.58.192.0/19

Вносить подсети можно как способом выше, по одной.
Так и при помощи одной команды, через терминал. Что вам удобней — то и делайте.

/ip firewall address-list
add address=64.233.160.0/19 list=spotify
add address=66.102.0.0/20 list=spotify
add address=66.249.64.0/19 list=spotify
add address=72.14.192.0/18 list=spotify
add address=74.125.0.0/16 list=spotify
add address=209.85.128.0/17 list=spotify
add address=216.239.32.0/19 list=spotify
add address=64.18.0.0/20 list=spotify
add address=108.177.8.0/21 list=spotify
add address=172.217.0.0/19 list=spotify
add address=173.194.0.0/16 list=spotify
add address=207.126.144.0/20 list=spotify
add address=216.58.192.0/19 list=spotify

Так же привожу список подсетей которые принадлежат компании Meta (Facebook и Instagram)

31.13.0.0/16
45.64.0.0/16
57.141.0.0/16
57.144.0.0/16
66.220.0.0/16
69.171.0.0/16
69.63.0.0/16
74.119.0.0/16
102.132.0.0/16
103.4.0.0/16
129.134.0.0/16
147.75.0.0/16
157.240.0.0/16
163.70.0.0/16
163.77.0.0/16
173.252.0.0/16
179.60.0.0/16
185.60.0.0/16
185.89.0.0/16
204.15.0.0/16
"Discord заблокировали в России за нарушение требований законодательства – «Роскомнадзор»"
Вот диапазон ip серверов Дискорда. Кому нужно - добавляйте в лист и ходите дальше.
104.16.0.0/12 
104.16.51.111/32 
104.17.0.0/12 
104.17.192.0/18 
104.18.0.0/15 
104.19.192.0/18 
108.61.169.0/24 
108.61.173.0/24 
108.61.174.0/24 
108.61.175.0/24 
128.116.0.0/16 
162.159.128.0/18 
162.159.128.233/32 
162.159.129.233/32 
162.159.130.233/32 
162.159.131.233/32 
162.159.132.233/32 
162.159.133.233/32 
162.159.134.233/32 
162.159.135.233/32 
162.159.136.233/32 
162.159.137.233/32 
162.159.138.233/32 
162.159.139.233/32 
162.159.140.233/32 
162.159.141.233/32 
162.159.142.233/32 
162.159.143.233/32 
192.64.174.0/24 
198.41.128.0/17

Вариант первый — нужен в основном если ваше устройство покидает зону вашего домашнего FiWi.
Или если вы возьмете сервер вскладчину, например.
Скачать клиент Wireguard можно на официальном сайте. Клиенты есть под все платформы.
Устанавливаете нужный вам клиент и дальше или сканируете QR-код, если есть камера. Либо скачиваем конфигурационный файл с сервера (если не знаете как скачать то можно при помощи этого гайда)
Тут все банально просто — устанавливаем клиент. Нажимаем «Добавить туннель» — выбираем скачанный конфигурационный файл. И нажимаем кнопку «Подключить»

Wireguard
Wireguard
Теперь весь трафик с вашего ПК или телефона отправляется в туннель.
(Не забывайте выключать его, если трафик у вашего хостера сильно ограничен)
Как бы все. Желаю приятного посещения «запрещенных» ресурсов.

P.S. К сожалению, данный способ не универсальный. Есть провайдеры которые уже режут протокол wireguard. Поэтому следующий гайд будем писать под новый протокол.

Если у вас есть вопросы по тексту статьи или вы просто хотите «напихать» автору — добро пожаловать в мой телеграм-канал 

Ну, и если вдруг вам почему то показалось, что автор этого опуса достоин чашки кофе, можете стимулировать написание следующего гайда

Сеть: Tron (TRC20) Адрес кошелька: TBvvHTTdJDmEhMeUnxCZiCcvzNqRxh8wQA