stranichko.org.ua feedback на платформе

Обход блокировки ВКонтакте, Одноклассников на роутере Mikrotik

В интернете уже итак существует множество статей, в которых описана настройка обхода блокировки ВКонтакте, Одноклассников и mail.ru с помощью настройки RouterOS. Но все они, как правило, сводятся к тому, чтобы вручную указывать IP-адреса для каждого ресурса. Адреса эти могут устаревать, и вообще, такой метод слишком трудоёмок. Сегодня я расскажу как настроить микротик таким образом, чтобы он сам отслеживал необходимые ip-адреса и пропускал трафик к ним через шифрованный туннель. В конце статьи приведен скрипт, который за один запуск настроит роутер для обхода блокировок через бесплатный VPN. Кому лень читать весь смысл проделываемых настроек может просто запустить его в консоли, и скорее всего блокированные ресурсы магическим образом сразу заработают.

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

/system backup save name=current dont-encrypt=yes

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

/system backup load name=current.backup

Далее в статье будут приводится примеры скриптов и некоторые из них могут быть «свернуты». Чтобы увидеть полный текст скрипта необходимо нажать на кнопку +expand source в блоке с текстом листинга.

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

Для нашего примера воспользуемся бесплатным VPN сервисом freevpn.me. Протоколы работы с VPN сервисами бывают самые разные, это и L2TP/IPSEC, SSTP, IKEv2, OpenVPN. Сервисы для предоставления шифрованных каналов могут работать на разных протоколах. Бывает, один сервис может поддерживать сразу несколько протоколов. Чтобы не усложнять материал, подключение будем настраивать по протоколу PPTP, т.к. он самый распространенный и один из самых простых в настройке. Итак, откроем раздел «PPP», и добавим интерфейс типа PPTP Client:

Для лучшего восприятия назовем наш только что созданный 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 или веб-панель:

Для дальнейшей настройки нам необходимо определиться со списком IP-адресов, при переходе на которые роутер будет перенаправлять нас через только что созданный VPN-туннель. В других статьях это делается как правило вручную, и обычно для одного только домена vk.com нужно добавить порядка 20ти айпишников, на которых этот домен хостится. Но мы то знаем, что домен для того и нужен, что ip меняются, а вот домен всегда остается одним и тем же. Поэтому создадим скрипт, который с некоторой периодичностью (например, раз в 2 минуты) будет выбирать список адресов из кеша DNS и постепенно наполнять нужный нам список.

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

:local myServers {
"vk.com";
"vk.cc";
"vkontakte";
"kinopoisk";
"ya.ru";
"yandex";
"ok.ru";
"odnoklassniki"
}

:foreach j in $myServers do {
  :foreach i in=[/ip dns cache all find where (name~$j) && (type="A") ] do={
    :local tmpAddress [/ip dns cache get $i address];
    delay delay-time=10ms
    #prevent script from using all cpu time
    :if ( [/ip firewall address-list find where address=$tmpAddress] = "") do={
      :local cacheName [/ip dns cache get $i name] ;
      :log info ("added entry: $cacheName  $tmpAddress");
      /ip firewall address-list add address=$tmpAddress list=bypass_block comment=$cacheName;
    }
  }
}

В самом начале мы заполняем массив myServers нужными нам доменами (или только частями названий этих доменов), ip которых нужно собрать. Т.е. мы можем, например, указать как и полное FQDN имя: vk.com, так и только часть названия сайта: vkontakte и скрипт таким образом выделит ip как и для vkontakte.ru так и для vkontakte.com и т.д. Следует, правда, очень аккуратно задавать такого рода шаблоны, т.к. чем короче будет шаблон, тем большее количество доменов попадет под условие, увеличивая таким образом нагрузку на процессор роутера при выполнении скрипта и перенаправляя все больше доменов через шифрованный туннель.

Скрипт в цикле обходит массив доменов myServers, и для каждой строки массива запускает команду поиска данного DNS-имени в кеше DNS. Результат вывода этой команды поиска также обходится в цикле при этом каждый раз сверяясь с уже существующим списком ip-адресов, и в случае, если такой адрес еще не занесен в список – делает запись в лог и дополняет список найденным айпишником. При этом всем каждая итерация цикла происходит с 10 миллисекундной задержкой дабы сильно не нагружать процессор роутера.

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

:log info ("added entry: $cacheName  $tmpAddress");

Если скрипт, например, сильно «вешает» домашний роутер со слабым процессором – можем увеличить время задержки перед каждой итерацией цикла, изменив число миллисекунд в этой строчке:

delay delay-time=10ms

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

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

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

:local myServers {
"vk.com";
"vk.cc";
"vkontakte";
"kinopoisk";
"ya.ru";
"yandex";
"ok.ru";
"odnoklassniki"
}

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

/ip firewall address-list add address=$tmpAddress list=bypass_block comment=$cacheName;

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

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

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

/system script add name=fetch_dns_ips source=":local myServers {\r\n\
\"vk.com\";\r\n\
\"vk.cc\";\r\n\
\"vkontakte\";\r\n\
\"kinopoisk\";\r\n\
\"ya.ru\";\r\n\
\"yandex\";\r\n\
\"ok.ru\";\r\n\
\"odnoklassniki\"\r\n\
}\r\n\
\r\n\
:foreach j in \$myServers do {\r\n\
\_\_:foreach i in=[/ip dns cache all find where (name~\$j) && (type=\"A\") ] do={\r\n\
\_\_\_\_:local tmpAddress [/ip dns cache get \$i address];\r\n\
\_\_\_\_delay delay-time=10ms\r\n\
\_\_\_\_#prevent script from using all cpu time\r\n\
\_\_\_\_:if ( [/ip firewall address-list find where address=\$tmpAddress] = \"\") do={\r\n\
\_\_\_\_\_\_:local cacheName [/ip dns cache get \$i name] ;\r\n\
\_\_\_\_\_\_:log info (\"added entry: \$cacheName  \$tmpAddress\");\r\n\
\_\_\_\_\_\_/ip firewall address-list add address=\$tmpAddress list=bypass_block comment=\$cacheName;\r\n\
\_\_\_\_}\r\n\
\_\_}\r\n\
}"

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

Здесь добавляем новое задание на выполнение команд по расписанию, нажимая на синий плюсик. Указываем имя расписания (например, fetch_dns_ips), указываем в поле Interval 00:02:00, что будет означать запуск раз в 2 минуты и в поле On Event прописываем «/system script run fetch_dns_ips» и, естественно, нажимаем ОК:

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

/system scheduler add name=fetch_dns_ips interval=00:02:00 on-event="/system script run fetch_dns_ips"

Теперь, если мы перейдем с любого устройства в сети, например, по адресу vk.com, то микрот получит ip-адрес этого домена и сохранит его в DNS кеш. Через 2 минуты или ранее сработает скрипт, который заберет этот адрес и поместит в список bypass_block, таким образом, если мы откроем список адресов через меню IP -> Firewall -> Address Lists, то увидим примерно такую картину:

Мы видим, что автоматически создался список адресов с названием bypass_block (указан в скрипте), в него добавился один IP-адрес и комментарий у данной записи указан как vk.com, что дает нам подсказку, для какого доменного имени используется этот айпишник. Чтобы комментарии отображались более компактно, следует клацнуть правой кнопкой мыши в списке и выбрать в контекстном меню пункт Inline comments.

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

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

На вкладке General в поле Chain выбираем (установлено по-умолчанию) значение цепочки: «prerouting». На вкладке Advanced параметру Dst. Address List (список адресов назначения) указываем наш автоматически созданный список bypass_block. А на вкладке Action параметру с таким же названием Action выбираем из списка действие «mark routing». В параметр New Routing Mark (новая метка маршрута) вписываем какое-нибудь название, например, все такое же bypass_block. Галочку Passtrough оставляем взведённой:

/ip firewall mangle
add chain=prerouting dst-address-list="bypass_block"\
action="mark-routing"\
new-routing-mark="bypass_block" comment="bypass block"  

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

Здесь в поле Dst. Address оставляем заполненное по-умолчанию значение 0.0.0.0/0 (что означает: адрес назначения – любой), в качестве шлюза (Gateway) выбираем созданный нами в самом начале интерфейс PPTP-соедиения с VPN-сервером – bypass_block, а в поле Routing Mark указываем пометку, которой обозначаются все маршруты к заблокированным ресурсам, правило для которой мы настроили в предыдущем шаге и назвали эту метку все тем же названием «bypass_block»:

/ip route add gateway=bypass_block routing-mark=bypass_block

Следующим шагом необходимо настроить маскарадинг для нашего VPN-канала, т.к. роутер после вышеописанных настроек в принципе уже умеет «ходить» по заблокированным ресурсам, но мы хотим чтобы и устройства в локальной сети (за NAT) также имели к доступ к нужным нам сайтам. Для этого заходим в меню IP, подпункт Firewall, переходим на вкладку NAT и создаем новое правило трансляции адресов:

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

/ip firewall nat add chain=src-nat out-interface=bypass_block action=masquerade

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

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

Например, на момент написания статьи, для домена vk.com адреса определились как подсети 87.240.128.0/18, 95.213.0.0/18, поэтому с помощью консоли роутера добавим их в список:

/ip firewall address-list
add address=87.240.128.0/18 list=bypass_block comment="vk.com"
add address=95.213.0.0/18 list=bypass_block comment="vk.com"

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

/ip firewall address-list
add address=95.213.0.0/18 list=bypass_block comment="vkontakte"
add address=95.142.207.0/24 list=bypass_block comment="vkontakte"
add address=95.142.206.0/24 list=bypass_block comment="vkontakte"
add address=95.142.204.0/23 list=bypass_block comment="vkontakte"
add address=95.142.203.0/24 list=bypass_block comment="vkontakte"
add address=95.142.202.0/24 list=bypass_block comment="vkontakte"
add address=95.142.201.0/24 list=bypass_block comment="vkontakte"
add address=95.142.200.0/21 list=bypass_block comment="vkontakte"
add address=95.142.192.0/21 list=bypass_block comment="vkontakte"
add address=95.142.192.0/20 list=bypass_block comment="vkontakte"
add address=93.186.232.0/21 list=bypass_block comment="vkontakte"
add address=93.186.224.0/21 list=bypass_block comment="vkontakte"
add address=87.240.128.0/18 list=bypass_block comment="vkontakte"
add address=185.32.251.0/24 list=bypass_block comment="vkontakte"
add address=185.32.250.0/24 list=bypass_block comment="vkontakte"
add address=185.32.248.0/23 list=bypass_block comment="vkontakte"
add address=185.32.248.0/22 list=bypass_block comment="vkontakte"
add address=185.29.130.0/24 list=bypass_block comment="vkontakte"

/ip firewall address-list
add address=95.108.128.0/17 list=bypass_block comment="yandex"
add address=93.158.134.0/24 list=bypass_block comment="yandex"
add address=93.158.128.0/18 list=bypass_block comment="yandex"
add address=87.250.255.0/24 list=bypass_block comment="yandex"
add address=87.250.254.0/24 list=bypass_block comment="yandex"
add address=87.250.251.0/24 list=bypass_block comment="yandex"
add address=87.250.250.0/24 list=bypass_block comment="yandex"
add address=87.250.247.0/24 list=bypass_block comment="yandex"
add address=87.250.224.0/19 list=bypass_block comment="yandex"
add address=84.201.128.0/18 list=bypass_block comment="yandex"
add address=77.88.8.0/24 list=bypass_block comment="yandex"
add address=77.88.55.0/24 list=bypass_block comment="yandex"
add address=77.88.54.0/24 list=bypass_block comment="yandex"
add address=77.88.44.0/24 list=bypass_block comment="yandex"
add address=77.88.35.0/24 list=bypass_block comment="yandex"
add address=77.88.21.0/24 list=bypass_block comment="yandex"
add address=77.88.0.0/18 list=bypass_block comment="yandex"
add address=77.75.159.0/24 list=bypass_block comment="yandex"
add address=77.75.152.0/22 list=bypass_block comment="yandex"
add address=5.45.240.0/24 list=bypass_block comment="yandex"
add address=5.45.232.0/24 list=bypass_block comment="yandex"
add address=5.45.229.0/24 list=bypass_block comment="yandex"
add address=5.45.217.0/24 list=bypass_block comment="yandex"
add address=5.45.213.0/24 list=bypass_block comment="yandex"
add address=5.45.205.0/24 list=bypass_block comment="yandex"
add address=5.45.196.0/24 list=bypass_block comment="yandex"
add address=5.45.192.0/18 list=bypass_block comment="yandex"
add address=5.255.255.0/24 list=bypass_block comment="yandex"
add address=5.255.200.0/24 list=bypass_block comment="yandex"
add address=5.255.196.0/24 list=bypass_block comment="yandex"
add address=5.255.195.0/24 list=bypass_block comment="yandex"
add address=5.255.192.0/18 list=bypass_block comment="yandex"
add address=37.9.64.0/18 list=bypass_block comment="yandex"
add address=37.9.112.0/24 list=bypass_block comment="yandex"
add address=37.140.128.0/18 list=bypass_block comment="yandex"
add address=213.180.204.0/24 list=bypass_block comment="yandex"
add address=213.180.202.0/24 list=bypass_block comment="yandex"
add address=213.180.199.0/24 list=bypass_block comment="yandex"
add address=213.180.193.0/24 list=bypass_block comment="yandex"
add address=213.180.192.0/19 list=bypass_block comment="yandex"
add address=199.36.240.0/22 list=bypass_block comment="yandex"
add address=199.21.96.0/22 list=bypass_block comment="yandex"
add address=185.71.76.0/22 list=bypass_block comment="yandex"
add address=185.32.186.0/24 list=bypass_block comment="yandex"
add address=185.32.185.0/24 list=bypass_block comment="yandex"
add address=178.154.170.0/24 list=bypass_block comment="yandex"
add address=178.154.131.0/24 list=bypass_block comment="yandex"
add address=178.154.128.0/17 list=bypass_block comment="yandex"
add address=141.8.128.0/18 list=bypass_block comment="yandex"
add address=130.193.32.0/19 list=bypass_block comment="yandex"
add address=109.235.160.0/21 list=bypass_block comment="yandex"
add address=100.43.87.0/24 list=bypass_block comment="yandex"
add address=100.43.64.0/19 list=bypass_block comment="yandex"

/ip firewall address-list
add address=217.20.144.0/20 list=bypass_block comment="ok.ru"
add address=5.61.16.0/21 list=bypass_block comment="ok.ru"
add address=217.20.144.0/20 list=bypass_block comment="ok.ru"

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

либо указать, чтобы оно срабатывало для всех адресов, кроме тех, что указаны в списке блокированных ресурсов bypass_block. Для этого нужно открыть это правило для редактирования, перейти на вкладку Advanced, выбрать для параметра Dst. Address List значение «bypass_block» и обязательно клацнуть слева в квадратике, после чего в нём установится знак восклицания «!». Знак восклицания следует читать как «не», дословно – не список bypass_block:

/ip firewall filter set [ find action=fasttrack-connection ] dst-address-list=!bypass_block

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

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

/ip dhcp-client set [ find where interface~"ether1" || comment~"def" ] use-peer-dns=no

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

/ip dns set servers=8.8.8.8,8.8.4.4

Также необходимо очистить кеш DNS. Для этого в том же окне настроек DNS нажать кнопку Cache и в открывшемся окне «DNS Cache» нажать кнопку Flush Cache:

/ip dns cache flush

Но и это еще не все. После проделывания всех вышеописанных настроек может пропасть доступ вообще ко всем сайтам, в том случае, если провайдер блокирует доступ к сторонним DNS-серверам. Поэтому нам придется пустить DNS-запросы тоже через шифрованное соединение, правда, со всеми вытекающими отсюда недостатками – если vpn-сервер публичный, то скорее всего скорость там будет желать лучшего и в целом сайты в первый раз будут открываться с некой задержкой. Также этот метод на самом первом описанном шаге создания vpn-интерфейса вынуждает использовать только IP-адрес. Нельзя будет использовать для подключения доменное имя, например, что-нибудь типа pptp.freevpn.com (на самом деле можно, если прописать ip для этого доменного имени вручную в настройках DNS Static, но тогда теряется весь смысл затеи).

Перенаправить в защищенный туннель запросы к DNS-серверам очень легко. Достаточно добавить их адреса 8.8.8.8 и 8.8.4.4 в список bypass_block на закладке Address List в настройках IP -> Firewall:

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

/ip firewall address-list
add address=8.8.8.8 list=bypass_block comment="Google DNS"
add address=8.8.4.4 list=bypass_block comment="Google DNS"

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

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

/system backup save name=current dont-encrypt=yes

/interface pptp-client add\
connect-to=51.15.151.165\
disabled=no name=bypass_block\
password=l6yNbrTsz user=pptp

/system script add name=fetch_dns_ips source=":local myServers {\
\"vk.com\";\r\n\
\"vk.cc\";\r\n\
\"vkontakte\";\r\n\
\"kinopoisk\";\r\n\
\"ya.ru\";\r\n\
\"yandex\";\r\n\
\"ok.ru\";\r\n\
\"odnoklassniki\"\r\n\
}\r\n\
\r\n\
:foreach j in \$myServers do {\r\n\
\_\_:foreach i in=[/ip dns cache all find where (name~\$j) && (type=\"A\") ] do={\r\n\
\_\_\_\_:local tmpAddress [/ip dns cache get \$i address];\r\n\
\_\_\_\_delay delay-time=10ms\r\n\
\_\_\_\_#prevent script from using all cpu time\r\n\
\_\_\_\_:if ( [/ip firewall address-list find where address=\$tmpAddress] = \"\") do={\r\n\
\_\_\_\_\_\_:local cacheName [/ip dns cache get \$i name] ;\r\n\
\_\_\_\_\_\_:log info (\"added entry: \$cacheName  \$tmpAddress\");\r\n\
\_\_\_\_\_\_/ip firewall address-list add address=\$tmpAddress list=bypass_block comment=\$cacheName;\r\n\
\_\_\_\_}\r\n\
\_\_}\r\n\
}"

/system scheduler add name=fetch_dns_ips interval=00:02:00 on-event="/system script run fetch_dns_ips"

/ip firewall mangle
add chain=prerouting dst-address-list="bypass_block"\
action="mark-routing"\
new-routing-mark="bypass_block" comment="bypass block"  

/ip route add gateway=bypass_block routing-mark=bypass_block  

/ip firewall nat add chain=src-nat out-interface=bypass_block action=masquerade

/ip firewall address-list
add address=95.213.0.0/18 list=bypass_block comment="vkontakte"
add address=95.142.207.0/24 list=bypass_block comment="vkontakte"
add address=95.142.206.0/24 list=bypass_block comment="vkontakte"
add address=95.142.204.0/23 list=bypass_block comment="vkontakte"
add address=95.142.203.0/24 list=bypass_block comment="vkontakte"
add address=95.142.202.0/24 list=bypass_block comment="vkontakte"
add address=95.142.201.0/24 list=bypass_block comment="vkontakte"
add address=95.142.200.0/21 list=bypass_block comment="vkontakte"
add address=95.142.192.0/21 list=bypass_block comment="vkontakte"
add address=95.142.192.0/20 list=bypass_block comment="vkontakte"
add address=93.186.232.0/21 list=bypass_block comment="vkontakte"
add address=93.186.224.0/21 list=bypass_block comment="vkontakte"
add address=87.240.128.0/18 list=bypass_block comment="vkontakte"
add address=185.32.251.0/24 list=bypass_block comment="vkontakte"
add address=185.32.250.0/24 list=bypass_block comment="vkontakte"
add address=185.32.248.0/23 list=bypass_block comment="vkontakte"
add address=185.32.248.0/22 list=bypass_block comment="vkontakte"
add address=185.29.130.0/24 list=bypass_block comment="vkontakte"
add address=95.108.128.0/17 list=bypass_block comment="yandex"
add address=93.158.134.0/24 list=bypass_block comment="yandex"
add address=93.158.128.0/18 list=bypass_block comment="yandex"
add address=87.250.255.0/24 list=bypass_block comment="yandex"
add address=87.250.254.0/24 list=bypass_block comment="yandex"
add address=87.250.251.0/24 list=bypass_block comment="yandex"
add address=87.250.250.0/24 list=bypass_block comment="yandex"
add address=87.250.247.0/24 list=bypass_block comment="yandex"
add address=87.250.224.0/19 list=bypass_block comment="yandex"
add address=84.201.128.0/18 list=bypass_block comment="yandex"
add address=77.88.8.0/24 list=bypass_block comment="yandex"
add address=77.88.55.0/24 list=bypass_block comment="yandex"
add address=77.88.54.0/24 list=bypass_block comment="yandex"
add address=77.88.44.0/24 list=bypass_block comment="yandex"
add address=77.88.35.0/24 list=bypass_block comment="yandex"
add address=77.88.21.0/24 list=bypass_block comment="yandex"
add address=77.88.0.0/18 list=bypass_block comment="yandex"
add address=77.75.159.0/24 list=bypass_block comment="yandex"
add address=77.75.152.0/22 list=bypass_block comment="yandex"
add address=5.45.240.0/24 list=bypass_block comment="yandex"
add address=5.45.232.0/24 list=bypass_block comment="yandex"
add address=5.45.229.0/24 list=bypass_block comment="yandex"
add address=5.45.217.0/24 list=bypass_block comment="yandex"
add address=5.45.213.0/24 list=bypass_block comment="yandex"
add address=5.45.205.0/24 list=bypass_block comment="yandex"
add address=5.45.196.0/24 list=bypass_block comment="yandex"
add address=5.45.192.0/18 list=bypass_block comment="yandex"
add address=5.255.255.0/24 list=bypass_block comment="yandex"
add address=5.255.200.0/24 list=bypass_block comment="yandex"
add address=5.255.196.0/24 list=bypass_block comment="yandex"
add address=5.255.195.0/24 list=bypass_block comment="yandex"
add address=5.255.192.0/18 list=bypass_block comment="yandex"
add address=37.9.64.0/18 list=bypass_block comment="yandex"
add address=37.9.112.0/24 list=bypass_block comment="yandex"
add address=37.140.128.0/18 list=bypass_block comment="yandex"
add address=213.180.204.0/24 list=bypass_block comment="yandex"
add address=213.180.202.0/24 list=bypass_block comment="yandex"
add address=213.180.199.0/24 list=bypass_block comment="yandex"
add address=213.180.193.0/24 list=bypass_block comment="yandex"
add address=213.180.192.0/19 list=bypass_block comment="yandex"
add address=199.36.240.0/22 list=bypass_block comment="yandex"
add address=199.21.96.0/22 list=bypass_block comment="yandex"
add address=185.71.76.0/22 list=bypass_block comment="yandex"
add address=185.32.186.0/24 list=bypass_block comment="yandex"
add address=185.32.185.0/24 list=bypass_block comment="yandex"
add address=178.154.170.0/24 list=bypass_block comment="yandex"
add address=178.154.131.0/24 list=bypass_block comment="yandex"
add address=178.154.128.0/17 list=bypass_block comment="yandex"
add address=141.8.128.0/18 list=bypass_block comment="yandex"
add address=130.193.32.0/19 list=bypass_block comment="yandex"
add address=109.235.160.0/21 list=bypass_block comment="yandex"
add address=100.43.87.0/24 list=bypass_block comment="yandex"
add address=100.43.64.0/19 list=bypass_block comment="yandex"
add address=217.20.144.0/20 list=bypass_block comment="ok.ru"
add address=5.61.16.0/21 list=bypass_block comment="ok.ru"
add address=217.20.144.0/20 list=bypass_block comment="ok.ru"

/ip firewall filter set [ find action=fasttrack-connection ] dst-address-list=!bypass_block

Указанный в скрипте адрес VPN-сервера был актуален только на момент написания статьи, поэтому он может быть не работоспособен. Бесплатные vpn-сервера можно найти, например, здесь. Проверить, работает ли подключение к VPN серверу а также изменить его адрес и логин/пароль можно через меню PPP, вкладка Interface. Далее в списке необходимо открыть двойным кликом интерфейс bypass_block и проверить есть ли внизу окна надпись Status: connected. Если нет – нужно менять VPN сервер на вкладке Dial out.

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

/ip dhcp-client set [ find where interface~"ether1" || comment~"def" ] use-peer-dns=no
/ip dns set servers=8.8.8.8,8.8.4.4
/ip dns cache flush

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

/ip firewall address-list
add address=8.8.8.8 list=bypass_block comment="Google DNS"
add address=8.8.4.4 list=bypass_block comment="Google DNS"

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

/system backup load name=current.backup

Эта инструкция конечно же не претендует на истину в последней инстанции. Если есть какие-нибудь идеи или размышления по поводу – милости прошу в комментарии.

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

VN:F [1.8.8_1072]
Rating: 5.0/5 (4 votes cast)
Обход блокировки ВКонтакте, Одноклассников на роутере Mikrotik5.054
703 просмотров

Комментарии (9) на “Обход блокировки ВКонтакте, Одноклассников на роутере Mikrotik”

  • Андрей:

    Подскажите, пожалуйста, в чем может быть проблема!
    Выполнил все согласно инструкции в статье. Скрипт работает, список адресов заполняется IP-адресами заблокированных ресурсов, но НЕ ОТКРЫВАЮТСЯ СТРАНИЦЫ ЗАБЛОКИРОВАННЫХ САЙТОВ. Работает только яндекс и кинопоиск.
    При этом с ПК находящегося за NAT пинг на заблокированные ресурсы проходит и трассировка показывает что трафик к заблокированным сайтам проходит через VPN-сервер.
    А результатом пинга с терминала WinBox установленном на этом же ПК является значение «timeout» и Tools -> Traceroute показывает что трафик идет через pppoe соединение провайдера(укртелеком). Адреса DNS серверов провайдера заменил на 8.8.8.8 и 8.8.4.4
    Правило Firewall: Fasttrack connection в списке Filter Rules отсутствует.
    Заранее спасибо!

  • Андрей:

    https://pastebin.com/B5KDYN22

    Подскажите в чем может быть проблема?

    • Так. Загрузил файл, пока особо не вникал. Попробуйте передвинуть в самое начало списка правило маскарадинга

      # bypass_block not ready
      add action=masquerade chain=srcnat out-interface=bypass_block
      

      Кстати, приписка к комментарию «not ready» означает, что PPTP-соединение по адресу 51.15.151.165, указанному в статье – не работает. Пока нет возможности проверить, но, возможно, Вам нужно попробовать другой VPN-сервис, на другом IP, работающий на том же протоколе PPTP. При открытии свойств PPTP-соединения обязательно внизу должен быть статус Connected, как на скриншоте:

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

      • Андрейё:

        По поводу комментария «bypass_block not ready» решил – там просто пароль поменялся. Теперь статус подключения «connected».
        Правило маскарадинга «add action=masquerade chain=srcnat out-interface=bypass_block» передвинул на первое место в списке, но при этом все равно грузится только yandex.ru и kinopoisk.ru, а остальные запрещенные ресурсы нет. Так же с устройств находящихся за NAT пинг к этим ресурсам проходит, а с WinBox уже нет. Что не так не могу понять…
        Заранее спасибо за помощь!

  • Юзер:

    скрипт не отрабатывает – в IP-Firewall-Address list не появляется список адресов, ни при ручном запуске, ни по шедулеру

Оставить комментарий

(обязательно)