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

Обновлено: 05.07.2024

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

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

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

Для лучшего восприятия назовем наш только что созданный PPTP-интерфейс bypass_block. Для этого перейдем на вкладку General и заполним поле Name:

На вкладке Dial Out нужно заполнить адрес VPN-сервера, логин и пароль подключения к нему. В нашем примере эти данные находятся по адресу freevpn.me/accounts/:

Переписываем полученные данные в поля Connect To, User и Password и нажимаем Apply. Если сервер работоспособен, то внизу окна должна отобразиться надпись Status: connected. Если там другое значение, значит сервер недоступен и нужно искать другой VPN-сервис. На момент написания статьи ip-адрес сервера был 51.15.151.165, пользователь pptp и пароль l6yNbrTsz:


Ни в коем случае не ставьте флажок Add Default Route, иначе весь трафик пойдет через только что созданный VPN. Статический маршрут мы пропишем позже вручную.

Все вышеперечисленное можно сделать одной строкой в консоли. Консоль запускается командой New terminal в главном меню интерфейса, будь то winbox или веб-панель:


Скрипт я нашел на форуме микротик, и очень благодарен автору navidrasi (который таким образом обходил блокировку facebook в Иране 😯 ):

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

Вообще, стоит понаблюдать за нагрузкой процессора при выполнении скрипта. Сделать это мы можем двумя способами. Первый, если для подключения к роутеру используется утилита winbox: добавить индикатор загрузки процессора на панель, размещенной в верхней части программы, сразу под главным меню winbox. Для этого нужно клацнуть правой кнопкой мыши по панели и выбрать пункт Add CPU:


Второй способ, более информативный, работает как и в случае подключения к роутеру с помощью утилиты winbox, так и с помощью веб-интерфейса webfig. Заключается он в следующем. Следует перейти в меню System, выбрать подпункт Resources, откроется соответствующее окно, в котором будет видна загрузка процессора и далее, по желанию, можем нажать кнопку CPU, в результате чего увидим расшифровку загрузки процессора в разрезе каждого ядра, в случае если этих ядер у процессора Mikrotik несколько:

Ну и конечно же можем изменить на свой вкус список доменов, переход к которым должен осуществляться через шифрованный канал, откорректировав данный список. Заметьте, что после последней записи не должно быть точки с запятой:

По умолчанию скрипт ищет/создает список адресов под названием bypass_block. Изменить это название мы можем в нижеприведенной строке, изменив параметр list:

Нужно сохранить этот скрипт в роутере, поэтому переходим в подменю System главного меню и выбираем подпункт Scripts:


Далее добавляем новый скрипт нажав на плюсик, указываем имя скрипта (например, fetch_dns_ips) для пущей информативности, и копируем в поле Source собственно сам исходник, приведенный выше и нажимаем ОК:

Либо можем добавить его через консоль скопировав в нее следующий текст и нажав Enter:

Далее нужно указать роутеру чтобы скрипт выполнялся по расписанию, например, раз в 2 минуты. Для этого снова переходим в подменю System и выбираем подпункт Scheduler:



То же самое можно проделать через консоль таким вот образом:

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

Теперь нам нужно промаркировать те маршруты, которыми будет пытаться пойти роутер для достижения заблокированного ресурса, чтобы потом эти маршруты завернуть в шифрованный канал. Для этого идем в меню IP, выбираем подпункт Firewall, переходим на вкладку Mangle и добавляем новое правило маркировки:

Чтобы помеченные маршруты к заблокированным ресурсам пошли через VPN канал нам нужно прописать статический маршрут. Делается это через подменю IP и подпункт Route:

На вкладке General задаем цепочку (Chain): srcnat и указываем исходящий интерфейс (Out. Interface) наш интерфейс PPTP-туннеля: bypass_block. На вкладке Action в одноименном параметре нужно указать действие masquerade (маскарадинг):



В целом можно считать наш роутер готовым к обходу заблокированных ресурсов, но есть еще несколько нюансов. Во-первых список ip-адресов у нас еще не заполнен, поэтому при переходе на заблокированный ресурс впервые он не будет доступен. Только через <2 минуты отработает скрипт и роутер начнет заворачивать трафик к ресурсу через VPN. Тут два варианта развития событий. Можно либо запускать скрипт вручную, через меню System, подпункт Scripts, выделяя наш созданный скрипт и нажимая после этого кнопку Run Script:


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

Следует отметить, что на вышеприведенном сервисе можно производить поиск по названию компании, тогда список будет наиболее полный. Приведу скрипт, актуальный на момент написания статьи, который заполняет список для ресурсов ВКонтакте, Одноклассники, Яндекс и Кинопоиск:

Во-вторых, в процессе написания этого материала я подсматривал в эту статью, где было резонно обращено внимание на правило Firewall: Fasttrack connection, из-за которого сайты могут медленно открываться, поэтому это правило, если оно присутствует, нужно либо отключить:


В-третьих, в той же статье была приведена инструкция на тот случай, если провайдер блокирует ресурсы с помощью подмены DNS. Первым делом нужно отказаться от использования провайдерских DNS-серверов, сняв в настройках DNS-клиента флажок Use Peer DNS:

Впрочем, конкретно эта настройка актуальна только в том случае, если в настройках получения интернета у нас стоит динамическое получение провайдерских настроек.

Далее необходимо настроить использование сторонних DNS-серверов, например от Google: 8.8.8.8 и 8.8.4.4. Для этого необходимо в меню IP, выбрать подпункт DNS и заполнить поле Servers:


Ну, или по аналогии с тем, как мы добавляли адреса заблокированных ресурсов через консоль:

Для нетерпеливых привожу способ настройки через консоль, куда достаточно скопировать весь код приведенный ниже и нажать Enter. Чтобы открыть консоль нужно слева в меню нажать на New Terminal:

Чтобы проще было скопировать текст скрипта, можно ниже в окошке с текстом скрипта нажать view plain:

Если в настройках PPTP-интерфейса статус подключения отображается как подключен (Status: connected), но при этом доступ к заблокированным ресурсам все-равно ограничен, необходимо выполнить следующий скрипт в консоли:

Если после этого сайты вообще перестали открываться, то нужно выполнить следующий скрипт:

Все же, если что-то пошло не так и все-все-все поломалось, то восстановить состояние роутера до выполения скрипта можно коммандой:

[для поисковика: обход блокировки вконтакте, одноклассников, одноклассники, яндекс, яндекс карты, mikrotik, микротик, вконтакте в украине, однокласники]

Как известно, Роскомнадзор вносит досадные коррективы в наши жизни, что в значительной степени тратит нервы и снижает удобство использования интернета. В этой статье пойдет речь об автоматизированном обходе блокировок Роскомнадзора с помощью роутера Mikrotik. Я, как человек, который любит технику индустриального масштаба (а Mikrotik именно к такой и относится!) просто не мог пройти мимо того, как можно использовать мощности такого замечательного промышленного роутера. В моем случае это мой домашний Mikrotik CRS125, но эта инструкция применима и для другого подобного железа, главное, чтобы объем памяти был достаточен для загрузки файла с выгрузкой заблокированных IP РКН, на совсем уж младших моделях система может работать медленно во время импорта. Например, на hAP, с его памятью в 32M, будет тяжеловато, и, вполне возможно, что нормально не заработает (увы, сейчас нет hAP под рукой, протестировать не могу).

Схема 1) работы выглядит так - на сервере генерируется файл с заблокированными адресами Роскомнадзором (изначально парсится отсюда) в понятном для Mikrotik виде, затем все это импортируется в Mikrotik, и он уже сортирует трафик - IP, которые не заблокированы (следовательно, в списке не находятся) отправляются напрямую, а если IP находится в списке - он идет через VPN. В итоге имеем замечательную схему работы - список обновляется автоматически, в итоге - Роскомнадзор может чудить, что хочет - мы этого не заметим, так как умный роутер свое дело сделает, и все будет открываться и работать так, как это было задумано.

Необходимые ингредиенты

VPN (обязательно, можно использовать поднятый на VPS)

Подготовка сервера

Для того, чтобы выгружать базу заблокированных IP нам нужно использовать свой VPS, я пользуюсь Digital Ocean, но может подойти также и Hetzner (или другие). Брать можно самый дешевый, но если на нем же будет поднят еще и VPN - стоит обратить внимание на то, чтобы трафик был не лимитирован. В качестве операционной системы я использую Debian/Ubuntu, лично мне так удобнее.

Создаем на сервере несколько файлов по пути /usr/local/bin/update-rkn со следующим содержимым:

И делаем его исполняемым:

Этот скрипт формирует в понятном для Mikrotik виде выгрузку IP, теперь нам надо сделать так, чтобы он исполнялся через определенное время. Я для себя решил это делать на сервере раз в час, потому что у меня используется не один роутер, и загружают они данные в разное время.

Создаем файл по пути /etc/systemd/system/update-rkn.service .

Создаем файл таймера (переодичность запуска скрипта и генерации выгрузки IP) /etc/systemd/system/update-rkn.timer .

И выдаем файлам нужные права:

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

Проверить, правильно ли генерируется выгрузка можно следующим образом:

В ответ должен быть показан скрипт выгрузки и последней строчкой дата его генерации:

Если все получилось именно так, значит настройка сервера завершена, и можно переходить к настройке роутера.

Настройка PIA VPN на Mikrotik

Я в своем случае не стал поднимать VPN на сервере, и решил использовать VPN от Private Internet Access.

Заходим в Winbox по пути PPP ⇒ Interface ⇒ L2TP Client ⇒ Add (+) и задаем параметры, как на скриншоте:


Нельзя ставить галочку Add Default Route , иначе весь трафик пойдет через VPN

Соединение с VPN установлено, теперь надо объяснить роутеру, что пускать через него, в этом нам поможет маркировка трафика.

Заходим по пути IP ⇒ Firewall ⇒ Mangle ⇒ Add (+) .




Src. Address - это наша локальная сеть, Dst. Address List - название списка адресов, куда будут импортироваться заблокированные IP, а во вкладке Action ⇒ Mark Routing ⇒ New Routing Mark — имя метки. Теперь все пакеты, которые ходят по адресам из списка rkn помечаются меткой rkn . Но что же делать роутеру с этой меткой? Объясним ему это.

Заходим по пути IP ⇒ Firewall ⇒ NAT ⇒ Add (+)


Указываем все также, как и на скриншоте. Где Gateway - это наш VPN, а где rkn - наша метка.

Теперь нам нужно, чтобы роутер мог использовать VPN, для этого настроем маскарадинг - IP ⇒ Firewall ⇒ NAT ⇒ Add (+) .



Настройка VPN завершена, теперь нам осталось только настроить обновление списка заблокированных адресов в автоматическом режиме, для этого нам помогут Scripts и Scheduler . Сначала добавляем скрипт в System ⇒ Scripts .

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


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

Для этого переходим в System ⇒ Scheduler и настраиваем автоматический запуск скрипта. У меня настроен запуск 1 раз в 4 часа.


Время старта 00:00:02 - это первый запуск в 12:02 ночи, двухминутный запас нужен для того, чтобы сервер успел сгенерировать файл (обычно на это уходит не более 40 секунд). Интервал можно выставить такой, какой вам нужен (главное, чтобы файл успевал обновиться на сервере). Не рекомендую это делать чаще, так как роутер достаточно долго прожевывает базу (около 10 минут на обновление базы заблокированных IP), и в итоге получается так, что раз в 4 часа могут быть на несколько минут недоступны заблокированные сайты. Рекомендуемый интервал - 1 день, ночью.

Проверка работы

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

Прозрачный обход блокировок при помощи Mikrotik и Tor

Привет. Всем известно что каждый день Роскомнадзор блокирует десятки или даже сотни сайтов. Как же быть если в бан попал ваш любимый сайт? Вариантов решения данного вопроса может быть несколько. Например купить VPS за границей, куда цепкие лапы Роскомнадзора не дотянутся, и сделать VPN или SSH туннель до вашего сервера. Либо можно использовать различные анонимайзеры. Либо можно использовать Тор сеть для доступа к заблокированным ресурсам, например можно поставить Tor Browser и радоваться жизни. Все эти методы хороши, но требуют от пользователя дополнительных действий, или дополнительных затрат на VPS.

В общем долго я пользовался Tor Browserом, но в итоге надоело что то дополнительно запускать, буть то даже другой браузер. И решил я подумать, как бы сделать так, что бы блокировки обходились прозрачно. В итоге надумал, что можно поставить tor как прокси, и заворачивать трафик из локальной сети на заблокированные ресурсы, на этот прокси.

Но даже так — уже большое облегчение жизни. Т.к. можно заходить абсолютно с любого устройства из домашней сети на заблокированные сайты.

О том как это сделать, спешу рассказать вам, может кому пригодится.

Видеоуроки по настройке MikroTik
Нет возможности пройти очный тренинг MTCNA? Ему есть альтернатива. Минус – не будет официального сертификата. Плюсов гораздо больше. Во-первых, не надо никуда ехать, смотрите и пересматривайте видеоуроки тогда, когда вам удобно и столько раз, сколько нужно. Во-вторых, в курсе упор на практику, ее примерно в 4 раза больше, чем на очном обучении. Подробнее о курсе на странице « ]]> Настройка оборудования MikroTik ]]> », там же можно заказать бесплатно ]]> первые 25 уроков ]]> .

Я все ставил на Ubuntu Server 16.04. Для других систем процедура не должна сильно отличаться.

находим строчку listen-address, она должна выглядеть примерно так:

Соответсвенно за место 192.168.1.10 нужно вписать адрес вашего сервера, куда ставиться privoxy.
Так же находим следующую строчку, и задаем значение 1 (это нужно для прозрачного проксирования):

И в конец файла добаляем строчки, что бы privoxy подключался к tor proxy.

forward-socks5 / localhost:9050 .
forward-socks4 / localhost:9050 .
forward-socks4a / localhost:9050 .

Обратите внимание, на точки в конце строк. Они обязательны.

Перезапускаем tor и privoxy

Нам нужно заворачивать трафик направленный на заблокированные ресурсы на наш прокси сервер, для этого запускаем winbox и подключаемся к нашему mikrotikу.
Переходим в IP — Firewall — Layer7 Protocol, добавляем новый протокол, в поле Regexp вводим:

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

Layer7 Protocol

Затем переходим во вкладку Mangle и добавляем новое правило:

Во вкладке General:

Chain — prerouting
Src. Address - !192.168.1.10 (это адрес вашего прокси сервера, нужен для того что бы не образовывалось петель)
Protocol — 6 (tcp)
Dst. Prot — 80

mangle general

Во вкладке Advanced задаем:

Dst. Address List: !unblocked
Layer7 Protocol: unblock

mangle advanced

Во владке action:

Action — add dst to address list
Address List — unblocked

mangle action

Далее переходим во вкладку NAT, и добавляем новое правило:
Во влкадке General:

Chain — dstnat
Src. Address - !192.168.1.10
Protocol — 6 (tcp)
Dst. Port: 80

nat general

Во влкадке Advanced:

nat advanced

Во вкладке Action:

Action — dst-nat
To Addresses — 192.168.1.10
To Ports: 8118

nat action

В общем то все, прозрачный обход блокировок у нас готов, можно попробовать проверить. Для проверки удобно пользоваться сайтом ident.me (который вы могли заметить в регулярном выражении приведенном выше).

Сперва скриншот с выключенным правилом:

ip with proxy

Пару слов о том как это работает. Mangle правило - сравнивает dns имя узла назначения с Layer7 списком ресурсов, если dns соответсвует внесенному туда ранее адресу, то IP адрес ресурса добавляется в Address List — unblocked. Далее NAT праавило смотрит на этот список адресов, и если в запросе есть нужный адрес — заворачивает трафик по 80 порту на наш прокси сервер.

UPD: Столкнулся с тем, что выходные ноды могут находиться в России, и как следсвие доступ к ресурсам на них заблокирован, что бы этого избежать нужно в конфиг /etc/tor/torrc добавить строчку:

Как не сложно догадаться, эта сточка указывает, что бы Tor не подключался к exit nodes расположенным в России, Белорусии или Украине.

Request for blocked URL, Block reason: Path matches generic block pattern.

В этот файл нужно добавить строчки:

После чего нужно переезапустить privoxy.

UPD2. Столкнуся с тем, что если на микротике masquerade настроин на использование "выходного" интерфейса, а не внутренней сети, то страницы, которые должны проксироваться в тор сеть не открываются. Т.е. для работы вышеописанной схемы, у вас в srcnat правиле, в котором atcion - masquerade должна быть прописана ваша внутренняя сеть в src address, соответсвенно out interface должен быть пустой.

Недавно я приобрел новый роутер Mikrotik hAP ac lite и услышал что можно настроить бесшовный обход блокировок с автоматической загрузкой заблокированных IP адресов. Т.е. обычный трафик идет как всегда, а вот в случае если мы обращаемся к заблокированному ресурсу, роутер это понимает и направляет трафик через VPN.

Я решил настроить pptp или openvpn на своем сервере, но не вышло, там у меня отключен tun/tap и nat. Потому пришлось обратиться к платным VPN-провайдерам. Первым делом я пошел к TunnelBear которым уже пользовался, но из-за настроек их VPN-сервером, мне не удалось к ним подключиться. К сожалению роутер не поддерживате lzo и SHA256. Пришлось искать другой и я нашел StrongVPN, у них даже есть инструкция как настроить VPN на роутерах Mikrotik. Здесь важно снять или не ставить галочку напротив default route потому что мы будем использовать VPN как запасной канал.

После настройки необходимо добавить правила для роутера, идем IP — Firewall — Mangle — Add

Теперь когда мы пометили пакеты, нужно создать для них правило, идем IP — Routes — ADD и на вкладке General настраиваем:

Теперь единственное что осталось сделать это импортировать Address List.

Импорт Address List

Тут для простоты я опишу как скачивать уже готовый список с моего github, для тех кто не доверяет мне или же по другим причинам хочет сам его генерировать я сделаю отдельный пост.

Обзываем этот скрипт DownloadSubnets и сохраняем, этот скрипт просто скачивает subnets.rsc, следующий скрипт немного сложней, создаем новый скрипт:

:if ([:len [/file find name=subnets.rsc]] > 0) do= /ip firewall address-list remove [/ip firewall address-list find list="rkn"]
import file=subnets.rsc
/file remove subnets.rsc
>

Этот скрипт, проверяет наличие файла subnets.rsc, если файл есть, то он удаляет все старые записи списка rkn и импортирует новые, после чего удаляет файл. Обзываем скрипт SetSubnets и сохраняем.


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

Читайте также: