Автор Тема: Обход блокировки сайтов на Mikrotik при помощи Policy Based Routing v2  (Прочитано 1466 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Дмитрий

  • Global Moderator
  • Jr. Member
  • *****
  • Сообщений: 70
  • Country: ua
  • Karma: +1/-0
  • Пол: Мужской
  • ICQ: 41488731
Обход блокировки сайтов на Mikrotik при помощи Policy Based Routing. v2

Сегодня мы не будем рассматривать все методы обхода всех видов блокировки, а лишь рассмотрим один из вариантов реализации обхода, который предложен в официальной документации Mikrotik (Policy Based Routing).

Предполагается, что заранее у вас уже должен быть маршрутизатор на RouterOS, если такого не имеется - по выгодной цене маршрутизаторы Mikrotik можно приобрести You are not allowed to view links. Register or Login или You are not allowed to view links. Register or Login ;)

Наиболее простой вариант обхода – использовать серверы VPN. Причем заблокированные ресурсы можно открывать через VPN, а все оставшиеся – через провайдера.
У данного метода существует ряд преимуществ. Одно из главных достоинств данного метода состоит в том, что вы будете использовать лишь часть пропускной способности VPN. Дело в том, что сервисы VPN обычно находятся далеко заграницей и каналы к ним сильно загружены, поэтому направляя через тоннель весь трафик, скорость доступа будет падать, причем как для заблокированных ресурсов, так и для всех остальных.
Из дополнительных преимуществ данного метода можно отметить отсутствие необходимости настройки VPN на всех клиентских устройствах, особенно если это смартфон. Хотя для смартфонов существует достаточное количество бесплатных приложений, реализующих необходимый функционал. Есть у данного способа и недостаток – поиск оптимального VPN-сервиса, как вариант, покупка премиум-аккаунта.

Создание списка адресов
К примеру, у нас есть листинг из заблокированных адресов.
В качестве примера у нас список, ВКонтакте, Одноклассники, Yandex и Mail.ru +kinopoisk.ru
Адреса можно добавлять и вручную через терминал из WinBox > New Terminal, но это мучительно долго и муторно)
Все диапазоны в виде скрипта закачки и добавления в Mikrotik для простоты уже созданы на сайте You are not allowed to view links. Register or Login

В микротике создаем скрипт zaboronaBlockLiST закачки и установки списка диапазонов IP заблокированных сайтов
и копируем туда этот код (заменяем xxxx на логин и пароль выданный мною)

Код: You are not allowed to view links. Register or Login
:local sblPath "/zaboronaBL.rsc"
:log warning "Downloading zaboronaBL.rsc to $sblPath"
/tool fetch address=blacklist.pp.ua host=blacklist.pp.ua user=xxxx mode=https password=xxxxx src-path=/bl/zaboronaBL.rsc dst-path=$sblPath;

:log warning "Importing zaboronaBL.rsc from $sblPath"
/import  $sblPath;

И смотрим появившийся список адресов в разделе IP – Firewall – Address Lists.

Маркировка пакетов
Для того, чтобы отобрать только заблокированные ресурсы, необходимо найти и промаркировать необходимые пакеты.
Делается это в IP – Firewall – Mangle. При создании указываем следующие параметры: chain=prerouting action=mark-routing dst-address-list=zaboronaBL (список адресов) src-address=192.168.1.0/24 (локальная подсеть) Вместо 192.168.1.0/24 необходимо указывать свою локальную подсеть, из которой будут идти обращения.

Как несложно догадаться, dst-address-list это конечный адрес (из списка).

Для всего трафика, удовлетворяющего данным условиям, будет установлена соответствующая метка Traffic_zaboronaBL.

Код: You are not allowed to view links. Register or Login
/ip firewall mangle
add action=mark-routing chain=prerouting comment="Mark Zaborona BlockList" dst-address-list=zaboronaBL new-routing-mark=Traffic_zaboronaBL passthrough=no src-address=192.168.1.0/24

Создание VPN-подключения
Покупаем себе VPS сервер в любо свободной стране) устанавливаем систему и любой из VPN PPTP, 2LTP+IPSEC или OpenVPN ;)

Создание подключения к VPN осуществляется в разделе PPP – Interface, нажимаем синий плюс и выбираем необходимый тип подключения.

Код: You are not allowed to view links. Register or Login
/interface pptp-client
add comment="PPTP VPN" connect-to=ВАШ ДОМЕН disabled=no name=pptp-vpn password=xxx user=xxx

Важно! Не используйте опцию «Add Default Route», в противном случае весь трафик пойдет через VPN.

Обратите внимание, некоторые серверы могут, как требовать шифрование, так и не использовать его вовсе, поэтому если соединение не удалось – проверьте используемый профиль подключения (PPP – Profiles). Для PPTP, в лучшем случае, используется MPPE 128-bit, который уже давным-давно скомпрометирован.

Лучшим вариантом будет использование OpenVPN, L2TP+IPsec или модный и самый шустрый IKEv2 (IPSec)

Большинство бесплатных серверов могут быть нестабильны как в плане доступности, так и в плане скорости. К тому же, никто не гарантирует сохранности ваших личных данных. С учетом вышесказанного, к выбору поставщика услуг стоит подойти ответственно. Как минимум, всегда используйте защищенное соединение (HTTPS) при работе с сайтами. Самый лучший вариант, это купить свой личный VPS и там установить любую Linux/Unix систему. ;)

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

Делается это в разделе IP – Firewall – NAT. Для out-interface обязательно следует указать правильное название вашего VPN-подключения.

Код: You are not allowed to view links. Register or Login
/ip firewall nat
add action=masquerade chain=srcnat out-interface=pptp-vpn comment="PPTP VPN"

Добавление статических маршрутов
После настройки маскарадинга переходим к завершающему шагу – созданию статических маршрутов. Делается это в разделе IP – Routers.

Код: You are not allowed to view links. Register or Login
/ip route
add comment="Route zaboronaBL" distance=1 gateway=pptp-vpn routing-mark=Traffic_zaboronaBL

При создании маршрутов конечный адрес задаем как и для обычного интернет подключения –0.0.0.0/0, в качестве шлюза (gateway) необходимо указать VPN-подключение (в нашем случае pptp-vpn). Обязательно выбираем routing-mark из выпадающего списка. Таким образом мы создаем статический маршрут для промаркированного трафика.

Вот собственно и всё, если всё проделано верно, а VPN рабочий – вы сможете получить доступ к необходимым ресурсам.
Также можете почитать официальную документацию Mikrotik по Policy Base Routing.

Как узнать IP определенного сайта?
Чуть выше, в качестве примера, опубликованы общие списки IP-адресов и диапазонов, принадлежащих соответствующим ресурсам. Списки предоставлен как есть, без претензий к их точности. Настоятельно рекомендую формировать список самостоятельно, так сказать «под себя».
В случае с обычными интернет-сайтам, обычно требуется добавить всего 1-2 IP-адреса, в то время как для больших проектов может использоваться несколько диапазонов. Как же найти все IP по определенному сайту?

В качестве наиболее простого варианта, из под Windows (вызов командной строки – комбинация Win+R) можно использовать стандартную команду:

Код: You are not allowed to view links. Register or Login
nslookup <домен>
Недостатком такого метода является получение неполного списка адресов.
Для поиска наиболее полного списка всех адресов, можно You are not allowed to view links. Register or Login. При помощи поиска от Hurricane Electric, можно производить поиск, как по доменному домену (например, youtube.com), так и по названию компании, которая владеет пулом адресов (например, Youtube либо YouTube, LLC).


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


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

Что делать, если Policy Based Routing медленно работает?
На некоторых конфигурациях может возникнуть проблема, суть которой состоит в том, что при прямом подключении по VPN на ПК – всё работает быстро, но если настроить Policy Based Routing по вышеуказанному примеру в Mikrotik, сайты начинают открываются медленно.

Проблема решается отключением FastTrack в IP – Firewall – Filter Rules.

Но это не наш путь! :)  Нам нужен FastTrack в дешевых слабеньких по процессорам роутерах типа RB951 серии)
Есть вполне элегантное решение ввести дополнительно маркировку для пакетов в обход FastTrack-ка ;)

Маркируем пакеты connection_zaboronaBL для листа zaboronaBL
Код: You are not allowed to view links. Register or Login
/ip firewall mangle add action=mark-connection chain=prerouting connection-state=new dst-address-list=zaboronaBL \
new-connection-mark=connection_zaboronaBL passthrough=yes comment="Mark Zaborona for scipping FastTrack connection"

И правим запись FastTrack, добавляя connection-mark=!connection_zaboronaBL как исключение
Код: You are not allowed to view links. Register or Login
/ip firewall filter add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \
connection-mark=!connection_zaboronaBL connection-state=established,related comment="defconf: fasttrack"





Поддержка FastTrack была добавлена, начиная с RouterOS 6.29, если кратко, функция позволяет пересылать некоторые пакеты без дополнительно обработки. В некоторых конфигурациях, данная функция позволяет существенно (в несколько раз) ускорить обработку пакетов и понизить нагрузку на процессор.


PS. Так же есть готовый сервис OpenVPN с настроками под Mikrotik:  You are not allowed to view links. Register or Login
      Но там минусы в том, что IP-ы не часто обновляются и их изменить никак) они создаются при подключении в роутинге :)
      И для параноиков так же очевидно, что на серверах РФ могут перехватывать ssl трафик и получать Ваши пароли :(

      И ввиду большой популярности сервиса у него уже начинаются You are not allowed to view links. Register or Login) потому свой VPS всегда надежнее и безопаснее)


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

Для этого маркируем трафик:

Код: You are not allowed to view links. Register or Login
/ip firewall mangle
add chain=prerouting action=mark-routing new-routing-mark=DNS_Traffic passthrough=no protocol=udp dst-port=53 comment="Mark DNS Traffic"

И потом не забываем добавить его в маршрут роутера:

Код: You are not allowed to view links. Register or Login
/ip route
add dst-address=0.0.0.0/0 gateway=pptp-vpn routing-mark=DNS_Traffic distance=1 comment="Route DNS traffic"


« Последнее редактирование: Июля 03, 2022, 05:37:59 pm от Дмитрий »


Contact You are not allowed to view links. Register or Login