Обход блокировки сайтов на 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 на логин и пароль выданный мною)
: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.
/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, нажимаем синий плюс и выбираем необходимый тип подключения.
/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-подключения.
/ip firewall nat
add action=masquerade chain=srcnat out-interface=pptp-vpn comment="PPTP VPN"
Добавление статических маршрутовПосле настройки маскарадинга переходим к завершающему шагу – созданию статических маршрутов. Делается это в разделе
IP – Routers./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) можно использовать стандартную команду:
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
/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 как исключение
/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 и защитить от подмены или вставок.
Для этого маркируем трафик:
/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"
И потом не забываем добавить его в маршрут роутера:
/ip route
add dst-address=0.0.0.0/0 gateway=pptp-vpn routing-mark=DNS_Traffic distance=1 comment="Route DNS traffic"