321

Настройка VPN на MikroTik и маршрутизация только определенного трафика

Просили пост, пилю пост.


Цель поста - рассказать, как на роутерах MikroTik настроить VPN и пускать через него только определенный трафик. Например, только instagram, youtube, при этом весь остальной "интернет" не трогать.


В интернете есть инструкции, но постараюсь рассказать понятным языком, с блекджеком и картинками. Я не являюсь специалистом по сетям и, в частности, по MikroTik-ам, но постараюсь поделиться той инфой, которую сам нашел и теми подводными камнями, с которыми сам столкнулся. Критика и советы в комментариях приветствуются, но давайте жить дружно.

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

https://superuser.com/questions/999196/mikrotik-and-vpn-for-specific-web-sites-only


Настраивать будем через winbox на примере роутера RB4011iGS+5HacQ2HnD (много буков, но настройка, скорее всего, для всех микротиков будет одинаковая).


В качестве VPN провайдера я использую frootvpn, подключение типа PPTP.

Через Winbox подключение к VPN создается очень просто:

Заходим на вкладку PPP -> Interface нажимаем на синий плюсик, выбираем PPTP Client (здесь можно посмотреть инструкции конкретно у вашего VPN провайдера, если он предоставляет не PPTP, а что-то еще)


Указываем имя соединения на вкладке General, так же я сразу несколько опустил значение MTU.

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

Важно! - здесь нужно обязательно снять галку Add Default Route, если хотите пускать через VPN только определенный трафик. Если ее поставить, через VPN пойдет весь трафик.

Тыкаем Apply, если все хорошо, соединение пройдет успешно (как на картинке выше - running, Status: connected).


Далее нам нужно открыть вкладку IP -> Routes и снова нажать на синий плюсик. Если в предыдущем пункте не была убрана галка Add Default Route, здесь будет прописан маршрут, но мы ее убрали, поэтому добавим его сами только для определенной метки, которую настроем позже.

В качестве Gateway указываем имя созданного нами подключения, в Dst. Adres оставляем дефолтные нолики, обязательно указываем Routing Mark и запоминаем, чего мы тут указали.

Теперь идем в IP -> Firewall -> NAT.

Добавляем правило с Chain srcnat, указываем наш интерфейс, в Action - masquerade.


Вкладка General

Вкладка Action

Затем переключаемся на вкладку IP -> Firewall -> Mangle. Тут для Chain prerouting будем помечать нужный нам трафик меткой, которую мы запомнили.

На вкладке General указываем только Chain prerouting

На вкладке Advanced придумываем и указываем название списка адресов в Dst. Adress List (в дальнейшем в него добавим как раз те адреса, которые хотим пускать через VPN)

На вкладке Action выбираем mark routing и вводим название метки New Routing Mark, которую все еще помним.

Тут готово.


Осталось заполнить наш список адресов. Делается это на вкладке IP -> Firewall -> Address Lists. Сюда можно добавить как хосты (они автоматом зарезолвятся до айпишника), так и IP или даже маски подсетей.

Не буду показывать тут весь список, но в итоге получим что-то схожее.

Не знаю, как на пикабу красиво добавить список сетей, который я добавил для работы инстаграма и фейсбука (которым не пользуюсь, это была тренировка перед ютубом))) ), но все это дело можно найти в интернете, например, тут

https://buananetpbun.github.io/mikrotik/IP-Address-list-Facebook.html

Если что, смогу поделиться своим списком адресов, но еще не знаю, как.

Однако, мне этого не хватило.

Но про это чуть позже.

На данном этапе у нас уже должно все работать и указанные хосты должны у нас работать через VPN.


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


Теперь про подводные камни.


Добавили хосты из списка, а картинки в инстаграме все равно не грузятся (это пример, не кидайтесь сразу тапками:) ).

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


Все сделал как надо, а провайдер показывает страницу "доступ заблокирован", либо просто страница не грузится.

Тут проблема может быть в DNS, если провайдер выдает собственные DNS сервера.

На вкладке IP -> DNS нужно посмотреть, есть ли там Dynamic Servers. Если есть, значит используются сервера провайдера. Я указал гугловские 8.8.8.8, 8.8.4.4 (так же у меня стоит галка Allow Remote Requests, так как роутер выступает в качестве локального DNS сервера).

На вкладке IP -> DHCP Client при этом нужно убрать галку Use Peer DNS, именно она отвечает за получение DNS серверов от провайдера.

Чтобы остальные локальные устройства использовали роутер в качестве DNS сервера, нужно не забыть в IP -> DHCP Server -> Networks -> Ваша подсеть, указать адрес роутера.

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


Добро пожаловать в интернет!

0
Автор поста оценил этот комментарий

а статья будет дополнена или здесь напишите как че сделать, чтобы закрыть 53 порт

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

Firewall -> Filter rules -> + -> Chain input, protocol 17, Dst port 53, In Interface - тот, где провайдер входит, Action - drop, и желательно поместить правило на самый верх в списке.

Иллюстрация к комментарию
показать ответы
0
Автор поста оценил этот комментарий

Спасибо! Я как бы не специалист - можете посоветовать толковые гайды по настройке VPN-сервера на VPS? У меня был свой сайт, мои знания ограничиваются как поставить CentOS/Ubuntu, поднять сборку Апач с SQL и накатить Wordpress. :)

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Да я тоже не спец, я разраб, а не сетевик :) Но с vpn-ом, благо, все предельно просто, если не нужно делать что-то особенное.

Настраивается сервер в пару строк:


https://github.com/angristan/wireguard-install

https://github.com/angristan/openvpn-install

https://github.com/hwdsl2/setup-ipsec-vpn


Выбираете, какой впн вам нужен (или находите какой-то еще скрипт для настройки / настраиваете сами) и в целом все.

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

WG сейчас настраивается импортом конфигурации, которую выдаст скрипт.

показать ответы
0
Автор поста оценил этот комментарий

Есть наводка на хостинг за пределами России чтобы отсюда оплачивать можно было?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

4vps, vdsina, timeweb cloud -- я на этих трех сижу

показать ответы
0
Автор поста оценил этот комментарий

я перед этим нагуглил вот это https://gorizont-it.ru/articles/zakryvaem_porty_na_mikrotik....
не подскажете зачем тут предлагается создавать еще одно правило которое:

Chain – input
Protocol – 17(udp)
Dst.port – 53
In.interface – ваш интерфейс, куда включен шнурок провайдера. В моем случае это pppoe-соединение Ростелекома.
Action – add src to address list
Address List – DNS_FLOOD (название может быть любым)

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

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

0
Автор поста оценил этот комментарий

Просто ни в одном попсвом мануале это не указано, а потом можно с удивлением обнаружить нехилый трафик снаружи на свой 53й порт.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

У меня он закрыт со времен первоначальной настройки, поэтому про это не вспомнил даже :)

показать ответы
0
Автор поста оценил этот комментарий

Автор, подскажи. пожалуйста. На первом же этапе микрот hap ac3 пишет: PPTP connections are considered unsafe, it is suggested to use a more modern VPN protocol instead. Состояние disconnect, и даже не пытается соединиться.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Тут лучше гуглить, я сам без гугла не подскажу. Но можете попробовать использовать wireguard протокол вместо всего этого, он настраивается в микроте довольно просто.

0
Автор поста оценил этот комментарий

Можно вас ещё немного побеспокоить? Я сделал себе VPS в Нидерландах, поднял там WG - всё работает через приложение. Но не пойму как маршрутизатор настроить. Я загрузил конфигурационный файл в микротик, но что делать дальше? Есть гайды?

Иллюстрация к комментарию
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Гайды гуглятся, конечно :) В целом, все аналогично моей инструкции в самом посте.

Все упирается в то, чтобы выставить корректный адрес для подсети тоннеля (если сервер выдал этой конфигурации условный 10.66.66.2, на вкладке addresses для этого интерфейса стоит это указать) и корректные маршруты (до подсети 10.66.66.0 и для 0.0.0.0). Сейчас нет возможности написать более подробно, а по памяти могу ошибиться - я ваще не сетевик :) но, если гугл не поможет, завтра-послезавтра постараюсь расписать детальнее.

показать ответы
0
Автор поста оценил этот комментарий

@DrBraXo, всё ещё пользуетесь frootvpn? Ищу себе VPN-провайдер для своего микротика - frootvpn пойдёт? Или может быть что-то другое посоветуете?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Привет, нет, перешел на виртуальные сервера с собственным впном, чего и вам советую - удобнее :)

показать ответы
0
Автор поста оценил этот комментарий

А не поделитесь списком сетей для ютуба, фесбука и т.д, которые вы добавили?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Есть ответ? )
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Можно попробовать на этапе создания правила mangle routing задать src address и маркировать все пакеты, которые потом отправлять через впн. Но я не пробовал. Я не сетевик, дальше гайда из поста в плане познания router os меня особо не хватило))

показать ответы
0
Автор поста оценил этот комментарий

Сделал сам. Сорян за длинный текст.

Как говорится, просто вставь в консоль:
/ip/firewall/address-list add address=157.240.0.0/16 list=froot_list

/ip/firewall/address-list add address=31.13.24.0/21 list=froot_list

/ip/firewall/address-list add address=31.13.64.0/18 list=froot_list

/ip/firewall/address-list add address=31.13.64.0/19 list=froot_list

/ip/firewall/address-list add address=31.13.64.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.65.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.66.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.67.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.68.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.69.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.70.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.71.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.72.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.73.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.74.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.75.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.76.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.78.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.80.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.81.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.82.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.83.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.84.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.85.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.86.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.87.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.90.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.91.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.92.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.94.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.95.0/24 list=froot_list

/ip/firewall/address-list add address=31.13.96.0/19 list=froot_list

/ip/firewall/address-list add address=45.64.40.0/22 list=froot_list

/ip/firewall/address-list add address=66.220.144.0/20 list=froot_list

/ip/firewall/address-list add address=66.220.144.0/21 list=froot_list

/ip/firewall/address-list add address=66.220.152.0/21 list=froot_list

/ip/firewall/address-list add address=69.63.176.0/20 list=froot_list

/ip/firewall/address-list add address=69.63.176.0/21 list=froot_list

/ip/firewall/address-list add address=69.63.184.0/21 list=froot_list

/ip/firewall/address-list add address=69.171.224.0/19 list=froot_list

/ip/firewall/address-list add address=69.171.224.0/20 list=froot_list

/ip/firewall/address-list add address=69.171.239.0/24 list=froot_list

/ip/firewall/address-list add address=69.171.240.0/20 list=froot_list

/ip/firewall/address-list add address=69.171.255.0/24 list=froot_list

/ip/firewall/address-list add address=74.119.76.0/22 list=froot_list

/ip/firewall/address-list add address=157.240.0.0/17 list=froot_list

/ip/firewall/address-list add address=157.240.1.0/24 list=froot_list

/ip/firewall/address-list add address=157.240.2.0/24 list=froot_list

/ip/firewall/address-list add address=157.240.3.0/24 list=froot_list

/ip/firewall/address-list add address=157.240.6.0/24 list=froot_list

/ip/firewall/address-list add address=157.240.7.0/24 list=froot_list

/ip/firewall/address-list add address=157.240.8.0/24 list=froot_list

/ip/firewall/address-list add address=157.240.9.0/24 list=froot_list

/ip/firewall/address-list add address=157.240.10.0/24 list=froot_list

/ip/firewall/address-list add address=157.240.11.0/24 list=froot_list

/ip/firewall/address-list add address=157.240.12.0/24 list=froot_list

/ip/firewall/address-list add address=157.240.13.0/24 list=froot_list

/ip/firewall/address-list add address=157.240.14.0/24 list=froot_list

/ip/firewall/address-list add address=157.240.15.0/24 list=froot_list

/ip/firewall/address-list add address=157.240.16.0/24 list=froot_list

/ip/firewall/address-list add address=157.240.18.0/24 list=froot_list

/ip/firewall/address-list add address=157.240.20.0/24 list=froot_list

/ip/firewall/address-list add address=157.240.21.0/24 list=froot_list

/ip/firewall/address-list add address=157.240.22.0/24 list=froot_list

/ip/firewall/address-list add address=173.252.64.0/19 list=froot_list

/ip/firewall/address-list add address=173.252.88.0/21 list=froot_list

/ip/firewall/address-list add address=173.252.96.0/19 list=froot_list

/ip/firewall/address-list add address=185.60.216.0/22 list=froot_list

/ip/firewall/address-list add address=185.60.216.0/24 list=froot_list

/ip/firewall/address-list add address=185.60.218.0/24 list=froot_list

/ip/firewall/address-list add address=185.60.219.0/24 list=froot_list

/ip/firewall/address-list add address=204.15.20.0/22 list=froot_list

/ip/firewall/address-list add address=102.132.96.0/20 list=froot_list

/ip/firewall/address-list add address=102.132.112.0/21 list=froot_list

/ip/firewall/address-list add address=102.132.120.0/23 list=froot_list

/ip/firewall/address-list add address=102.132.122.0/24 list=froot_list

/ip/firewall/address-list add address=102.132.124.0/22 list=froot_list

/ip/firewall/address-list add address=102.221.188.0/22 list=froot_list

/ip/firewall/address-list add address=103.4.96.0/22 list=froot_list

/ip/firewall/address-list add address=129.134.0.0/16 list=froot_list

/ip/firewall/address-list add address=147.75.208.0/20 list=froot_list

/ip/firewall/address-list add address=163.114.128.0/20 list=froot_list

/ip/firewall/address-list add address=164.163.191.64/26 list=froot_list

/ip/firewall/address-list add address=173.252.64.0/18 list=froot_list

/ip/firewall/address-list add address=179.60.192.0/22 list=froot_list

/ip/firewall/address-list add address=185.89.216.0/22 list=froot_list

/ip/firewall/address-list add address=199.201.64.0/22 list=froot_list

/ip/firewall/address-list add address=193.135.128.0/20 list=froot_list

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Собирался после работы сейчас запилить, но не успел, извини :)

0
DELETED
Автор поста оценил этот комментарий
fix mss
автор просто про это в посте не написал
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Автор не в курсе. Расскажете?

показать ответы
0
Автор поста оценил этот комментарий

Дружище, выложи пожалуйста список подсетей, или инструкцию как их вытянуть. Всю голову уже сломал, все равно каких то не хватает

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
0
Автор поста оценил этот комментарий
Залей на pastebin плиз и дай ссылку
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Надеюсь, не сочтут за политоту :D Мой список подсетей таков, может быть, в нем много лишнего - каждую подсетку сам не проверял, брал из инета + дополнял сам.

https://pastebin.com/CiyCZ4j3

показать ответы
0
Автор поста оценил этот комментарий
Надо подумать как выгрузить все подсети инсты и в адрес лист добавить все это для заворота. Неудобно конечно. Но дефолтроут тоже включать не хочется.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Я могу отправить на почту свой лист.

показать ответы
0
Автор поста оценил этот комментарий
Пробовал и это. Картинки в инстаграмме все равно не грузятся.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

А вы посмотрите, на какие айпишники соединения идут. У меня было такое, просто надо было добавить еще одну подсеть, которой в списке не было.

показать ответы
1
Автор поста оценил этот комментарий
Здравствуйте. На работе мучаюсь с микротиком. Моих знаний не хватает. Интернет жутко тормозит. Спецы приходили и линию меняли, и что-то там ещё проверяли. Сошлись на том, что во всем виноват Микротик. Вы могли бы с этим помочь? Хотя бы подтвердить, что причина в нем. Моя почта 79227457777@ya.ru
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Для подобной диагностики, боюсь, моих знаний не хватит. :(

3
Автор поста оценил этот комментарий

В феврале купил себе RB4011 за 18.5 на смену hAP ac2. Сейчас на сайте более 50к висит )

А hAP ac2 за 25к.

Вот это я понимаю инвестиция.

Иллюстрация к комментарию
Иллюстрация к комментарию
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Я тоже вовремя обновился :) На дачу успел где-то за 17~20 взять hAP ac³ LTE6 kit

показать ответы
0
Автор поста оценил этот комментарий

ip -> routes, запихиваешь такое и всё, все запросы к подсетям которые использует инста автоматом летят в впн. Без ебли с поиском доменных имён и прочего с занесением в address-листы

Иллюстрация к комментарию
Иллюстрация к комментарию
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Спасибо, интересно.

показать ответы
0
Автор поста оценил этот комментарий

@drbraxo, ты же закрыл 53й порт снаружи фаерволом?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Так точно, дельное замечание.

показать ответы
0
Автор поста оценил этот комментарий
У меня нубский вопрос: а на кинетиках такое возможно?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

скорее всего, да, но не подскажу, как)

3
Автор поста оценил этот комментарий
а не проще было бы в тупую подсетями зароутить инсту/твиттер в впн?

маркировка эт конечно хорошо, но надо ещё тогда днс в впн заворачивать.
раскрыть ветку (1)
Автор поста оценил этот комментарий

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

показать ответы