Меню
Контакты
109147, Москва, ул.Воронцовская, 35Б, корп.2 офис.11, 4 этаж
Пн-Пт: с 9-00 до 17-00   Сб-вс: выходной
Интернет-магазин
сетевого оборудования
Москва +7 (495) 103-41-03 +7 (915) 420-28-94
109147, Москва, ул.Воронцовская, 35Б, корп.2 офис.11, 4 этаж
Пн-Пт: с 9-00 до 17-00   Сб-вс: выходной
Заказать звонок

Обход блокировки сайтов со стороны провайдера на Mikrotik (RouterOS) при помощи Policy Based Routing

 26 Июнь 2017    Новости ASP24, MikroTik, О настройках и установке оборудования производителя Mikrotik, Scripts

В рамках данной публикации мне хотелось бы поговорить об одном из методов обхода блокировки сайтов со стороны провайдера на маршрутизаторах Mikrotik под управлением RouterOS.

Бывают такие ситуации, когда провайдер блокирует доступ к некоторым ресурсам. Зачастую, блокировка ресурсов осуществляется на базе URL, IP и DNS, многое, конечно же, зависит от типа и возможностей оборудования, применяемого самим провайдером.

Блокировка по IP – один из популярных методов, при котором запрет осуществляется на базе конечного IP-адреса ресурса, это также может быть диапазон IP или же несколько диапазонов (для очень больших проектов).

Блокировка по DNS сводится к запрету, исключению либо подмене конечного IP для заданного домена. По сути, данный метод блокировки обходится довольно просто, путем замены DNS провайдера на сторонние, к примеру Google DNS (8.8.8.8, 8.8.4.4), Yandex DNS (базовый: 77.88.8.8, 77.88.8.1; безопасный: 77.88.8.88, 77.88.8.2; семейный 77.88.8.7, 77.88.8.3) или любой другой, который вашей душе угоден.

Серьезные провайдеры могут использовать так называемый DPI (Deep packet inspection), который по-сути, является глубоким анализов пакетов. DPI способен блокировать ресурсы не только по IP или DNS, но и при использовании прокси-серверов (Proxy) или других незащищенных каналов передачи.

В случае с простой блокировкой IP, обход осуществляется без проблем при помощи любого прокси-анонимайзера или любого VPN.

В случае с DPI, всё куда более сложнее, т.к. система анализирует не только заголовки пакетов, конечного получателя и т.д., но и содержимое пакета, копаясь в передаваемых данных, тем самым может даже нарушать законодательство, если, конечно же, в пользовательском соглашении нет мелкого шрифта. Возможности DPI очень широки и при желании, провайдер может даже запретить вам использовать OpenVPN.

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

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


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

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

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

Есть у данного способа и недостаток – поиск оптимального VPN-сервиса, как вариант, покупка премиум-аккаунта.

Создание списка адресов (пример)

К примеру, у нас есть листинг из заблокированных адресов. В качестве примера у нас 4 списка: ВКонтакте, Одноклассники, Yandex и Mail.ru.

Все диапазоны в виде команд для Mikrotik, для простоты добавление. Некоторые спросят, а почему не объединить все ресурсы в один список? Ответ очень простой, при изменении всего одного интернет-ресурса, вы будете вынуждены пересматривать весь список, т.к. по одним подсетям вы ориентироваться будет сложно.

Адреса можно добавлять как вручную через терминал из WinBox > New Terminal.


Список подсетей для ресурсов ВКонткте

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

Либо предварительно загрузив в память микротика необходимые списки в виде командных файлов с разрешением RSC. Файлы в Mikrotik загружаются путем обычного петаскивания на окно WinBox > Files. Или же при помощи кнопки Upload, если Drag-n-Drop по каким-то причинам не работает. После чего импортируете списки командой:

import file=vkcom.rsc

Список подсетей для ресурсов Яндекса (в т.ч. КиноПоиск)

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

Список подсетей для Одноклассники.ru

/ip firewall address-list
add address=5.61.16.0/21 list=okru
add address=5.61.232.0/21 list=okru
add address=79.137.157.0/24 list=okru
add address=79.137.183.0/24 list=okru
add address=94.100.176.0/20 list=okru
add address=95.163.32.0/19 list=okru
add address=128.140.168.0/21 list=okru
add address=178.22.88.0/21 list=okru
add address=178.237.16.0/20 list=okru
add address=185.5.136.0/22 list=okru
add address=185.6.247.0/24 list=okru
add address=185.16.244.0/22 list=okru
add address=188.93.56.0/21 list=okru
add address=194.186.63.0/24 list=okru
add address=195.211.20.0/22 list=okru
add address=195.218.168.0/24 list=okru
add address=195.218.190.0/23 list=okru
add address=217.20.144.0/20 list=okru
add address=217.69.128.0/20 list=okru

 

Список подсетей для ресурсов Mail.ru

/ip firewall address-list
add address=5.61.16.0/21 list=mailru
add address=5.61.232.0/21 list=mailru
add address=79.137.157.0/24 list=mailru
add address=79.137.183.0/24 list=mailru
add address=94.100.176.0/20 list=mailru
add address=95.163.32.0/19 list=mailru
add address=128.140.168.0/21 list=mailru
add address=178.22.88.0/21 list=mailru
add address=178.237.16.0/20 list=mailru
add address=185.5.136.0/22 list=mailru
add address=185.6.247.0/24 list=mailru
add address=185.16.244.0/22 list=mailru
add address=188.93.56.0/21 list=mailru
add address=194.186.63.0/24 list=mailru
add address=195.211.20.0/22 list=mailru
add address=195.218.168.0/24 list=mailru
add address=195.218.190.0/23 list=mailru
add address=217.20.144.0/20 list=mailru
add address=217.69.128.0/20 list=mailru
add address=195.211.21.0/24 list=mailru
add address=195.211.22.0/24 list=mailru
add address=195.211.20.0/24 list=mailru
add address=208.87.94.0/24 list=mailru
add address=195.211.130.0/23 list=mailru
add address=195.211.128.0/24 list=mailru
add address=195.211.128.0/23 list=mailru
add address=195.211.128.0/22 list=mailru
add address=185.16.244.0/23 list=mailru
add address=185.16.148.0/22 list=mailru
add address=128.140.170.0/24 list=mailru

Списки адресов находятся в разделе IP – Firewall – Address Lists.

Маркировка пакетов

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

При создании указываем следующие параметры:

chain=prerouting

action=mark-routing

dst-address-list=mailru (список адресов)

src-address=192.168.106.0/24 (локальная подсеть)

 

Вместо 192.168.106.0/24 необходимо указывать свою локальную подсеть, из которой будут идти обращения. Как несложно догадаться, dst-address-list это конечный адрес (из списка). Для всего трафика, удовлетворяющего данным условиям, будет установлена соответствующая метка Traffic_XXXXX.

Обход блокировки сайтов со стороны провайдера на Mikrotik (RouterOS) при помощи Policy Based Routing

/ip firewall mangle
add action=mark-routing chain=prerouting comment="Mark mail.ru" dst-address-list=mailru new-routing-mark=Traffic_mailru passthrough=no src-address=192.168.106.0/24
add action=mark-routing chain=prerouting comment="Mark ok.ru" dst-address-list=okru new-routing-mark=Traffic_okru passthrough=no src-address=192.168.106.0/24
add action=mark-routing chain=prerouting comment="Mark vk.com" dst-address-list=vkcom new-routing-mark=Traffic_vkcom passthrough=no src-address=192.168.106.0/24
add action=mark-routing chain=prerouting comment="Mark Yandex" dst-address-list=yandex new-routing-mark=Traffic_yandex passthrough=no src-address=192.168.106.0/24

Создание VPN-подключения

В качестве примера воспользуемся бесплатным сервисом VPN PPTP – SuperFreeVPN. Для примера выберем сервер, расположенный в Лондоне (Великобритания) – IP 77.92.68.65 (uk.superfreevpn.com), логин free, пароль 1891. Обратите внимание, тип подключения PPTP либо L2TP. Минусом конкретно данного сервиса является то, что он постоянно меняет пароли для подключения к серверу, мы же используем его исключительно в качестве примера.

Обход блокировки сайтов со стороны провайдера на Mikrotik (RouterOS) при помощи Policy Based Routing

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

/interface pptp-client
add comment="VPN Failover" connect-to=uk.superfreevpn.com disabled=no name=pptp-to-freevpn password=1891 user=free

Обход блокировки сайтов со стороны провайдера на Mikrotik (RouterOS) при помощи Policy Based Routing 

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

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

Обход блокировки сайтов со стороны провайдера на Mikrotik (RouterOS) при помощи Policy Based Routing

Лучшим вариантом будет использование OpenVPN, в частности с премиум-аккаунтом. Также не забывайте, что RouterOS не поддерживает пока TLS для OpenVPN.

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

Настройка маскарадинга

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

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

/ip firewall nat
add action=masquerade chain=srcnat out-interface=pptp-to-freevpn

Обход блокировки сайтов со стороны провайдера на Mikrotik (RouterOS) при помощи Policy Based Routing 

Добавление статических маршрутов

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

/ip route
add comment="Route MAIL.RU" distance=1 gateway=pptp-to-freevpn routing-mark=Traffic_mailru
add comment="Route OK.RU" distance=1 gateway=pptp-to-freevpn routing-mark=Traffic_okru
add comment="Route VK.COM" distance=1 gateway=pptp-to-freevpn routing-mark=Traffic_vkcom
add comment="Route YANDEX" distance=1 gateway=pptp-to-freevpn routing-mark=Traffic_yandex

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

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

Как узнать IP определенного сайта?

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

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

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

nslookup <домен>

Использование команды nslookup в Windows

Недостатком такого метода является получение неполного списка адресов - некоторые сервисы могут отдавать всего 2 записи из Х, а на следующий день они уже могуть стать другими. Для поиска наиболее полного списка всех адресов, можно воспользоваться специальными сервисами. При помощи поиска от Hurricane Electric, можно производить поиск, как по доменному домену (например, youtube.com), так и по названию компании, которая владеет пулом адресов (например, Youtube либо YouTube, LLC).

Редактирование, обновление и добавление новых ресурсов

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


Список подсетей для Лаборатории Касперского

/ip firewall address-list
add address=93.159.230.0/23 list=kaspersky
add address=93.159.228.0/23 list=kaspersky
add address=93.159.224.0/22 list=kaspersky
add address=91.103.64.0/21 list=kaspersky
add address=77.74.183.0/24 list=kaspersky
add address=77.74.180.0/22 list=kaspersky
add address=77.74.178.0/23 list=kaspersky
add address=77.74.177.0/24 list=kaspersky
add address=77.74.176.0/24 list=kaspersky
add address=185.85.15.0/24 list=kaspersky
add address=185.85.14.0/24 list=kaspersky
add address=185.85.12.0/24 list=kaspersky
add address=185.54.221.0/24 list=kaspersky
add address=185.54.220.0/24 list=kaspersky

 

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

Что делать, если Policy Based Routing медленно работает?

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

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

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

Что делать, если провайдер делает подмену DNS-записей?

Для того, чтобы показывать клиенту страницу-заглушку, вместо конечного URL, провайдеры практикуют подмену DNS-записей. Проверить это очень легко: открываем командную строку и делаем tracert для необходимого домена, после чего проверяем whois для конечного IP, который асоциирован с доменным именем. Если IP не принадлежит конечному ресурсу, значит имеет место подмена DNS-записи.

В таком случае, если вы используете DNS провайдера, при подключении по VPN, для конечного домена будет использоваться IP, предоставленный провайдером. Поэтому, при обращении к домену даже через VPN, в конечном итоге, вы обратно попадете на страницу с заглушкой (если это внешний IP) либо получите ошибку "сервер не найден" (если IP недоступен). В этом случае необходимо отказаться от использования DNS провайдера (use-peer-dns=no), например:


/ip dhcp-client
add comment="default configuration" dhcp-options=hostname,clientid disabled=no interface=ether1-gateway use-peer-dns=no

Либо через интерфейс Winbox: зайти в подменю IP - DHCP Client, выбрать свое подключение к Интернет и отключить в его профиле опцию "Use Peer DNS".

Далее необходимо задействовать сторонние DNS-серверы, например Google DNS (8.8.8.8, 8.8.4.4), Яндекс DNS (77.88.8.8, 77.88.8.1) и/или любой другой сервер:

/ip dns
set allow-remote-requests=yes cache-size=1024KiB query-server-timeout=1s servers=8.8.8.8,8.8.4.4,77.88.8.8,77.88.8.1

После чего выполняетм очистку кеша DNS-записей:

/ip dns cache flush

Либо в Winbox: в разделе IP - DNS - Cache - Flush Cache.

 

Что делать, если провайдер перехватывает обращения к стороннему DNS?

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

/ip firewall address-list
add address=8.8.8.8 list=dns
add address=8.8.4.4 list=dns
add address=77.88.8.8 list=dns
add address=77.88.8.1 list=dns

/ip firewall mangle
add action=mark-routing chain=prerouting comment="Mark DNS traffic" new-routing-mark=Traffic_dns passthrough=no src-address=192.168.106.0/24

/ip route
add check-gateway=ping comment="Route DNS" distance=1 gateway=l2tp-to-germany routing-mark=Traffic_dns

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

Источник