Просили пост, пилю пост.
Цель поста - рассказать, как на роутерах 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
Затем переключаемся на вкладку 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.
Добро пожаловать в интернет!