Не знал, как правильно назвать эту статью. Она появилась в результате экспериментов, когда я делал определенные сайты через другой интерфейс. В процессе обнаружил, что на facebook.com не работает направление через VPN, с указанием только адреса сайта. Там задействованы и другие сети\ip заблокированные в России. Потому и были проведены различные эксперименты, результатом которых и стала эта статья. Итак, вариант первый.

1. Отправим определенных пользователей через VPN

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

Что для этого требуется? Правильно, маршрутизировать их ip через VPN

В первую очередь нам надо добавить их ip в Address Lists. Подключаемся к нашему роутеру и открываем раздел ip->firewall->address list. Нажимаем на «+», чтоб добавить их ip в список.

Придумываем название нашему списку, естественно понятное, в address пишем ip нашей рабочей станции, которая должна иметь доступ через VPN, нажимаем ОК

В терминале:

ip firewall address-list add address=10.20.2.22 list=VPN-route

Создаем таблицу маршрутизации, открываем раздел Routing->Tables и нажимаем на «+», даем имя нашей таблице и ставим галочку fib

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

Нажимаем ОК. В терминале:

routing table add disabled=no fib name=VPN-out

Следующим шагом пропишем маршрут. У меня отдельно поднят VPN на ubuntu, изначально создан был для скачивания обновлений clamav, (его ip пусть будет 10.20.1.2, на нем надо настроить nat но это отдельная статья), и мы направим трафик через него

2. Настраиваем маршрут

Открываем раздел IP->Routes, нажимаем «+» , прописываем адрес нашего VPN и указываем таблицу маршрутизации, созданную на предыдущем шаге

Если у Вас это другой WAN интерфейс, или VPN — прописываем здесь имя этого интерфейса. В терминале:

ip route add comment="Route to VPN " distance=1 dst-address=0.0.0.0/0 gateway=10.20.1.2 routing-table=VPN-out

3. Помечаем пакеты

Теперь нам надо пометить наш пакет, чтобы направить его в нужный маршрут

Открываем раздел IP->Firewall->Mangle и нажимаем «+» для создания правила.

Chain — prerouting, Src. Address List выбираем наш лист, созданный на шаге 1.

ip firewall mangle add action=mark-routing chain=prerouting new-routing-mark=VPN-out passthrough=yes src-address-list=VPN-route comment="Route to VPN marking"

Всё! Готово, теперь наш хост будет выходить в сеть через маршрут, созданный на шаге 2.

4. Разделение траффика

Вроде бы и все, у наш хост отправляется в сеть через VPN, все замечательно, но.. Скорость VPN ограничена, и нам это не очень подходит. Я реализовал вот такой вариант — на российские IP идем через шлюз провайдера, а на иностранные — через VPN.

Для этого гуглим и натыкаемся на вот такой ресурс https://mikrotikconfig.com/firewall/#address с которого можно скачать .rsc для добавления всех ip сетей в Address List. Вот часть такого файла:

/ip firewall address-list
add address=45.4.0.0/22 comment="CHILE" list=CountryIPBlocks
add address=45.4.168.0/22 comment="CHILE" list=CountryIPBlocks
add address=45.5.120.0/21 comment="CHILE" list=CountryIPBlocks
add address=45.7.228.0/22 comment="CHILE" list=CountryIPBlocks
add address=45.65.240.0/22 comment="CHILE" list=CountryIPBlocks
add address=45.68.16.0/22 comment="CHILE" list=CountryIPBlocks
add address=45.68.44.0/22 comment="CHILE" list=CountryIPBlocks
add address=45.71.8.0/22 comment="CHILE" list=CountryIPBlocks
add address=45.71.44.0/22 comment="CHILE" list=CountryIPBlocks
add address=45.160.4.0/22 comment="CHILE" list=CountryIPBlocks
add address=45.160.12.0/22 comment="CHILE" list=CountryIPBlocks
add address=45.160.72.0/22 comment="CHILE" list=CountryIPBlocks
add address=45.160.188.0/22 comment="CHILE" list=CountryIPBlocks
add address=45.160.212.0/22 comment="CHILE" list=CountryIPBlocks
add address=45.161.44.0/22 comment="CHILE" list=CountryIPBlocks
add address=45.161.108.0/22 comment="CHILE" list=CountryIPBlocks
add address=45.161.112.0/22 comment="CHILE" list=CountryIPBlocks
add address=45.161.188.0/22 comment="CHILE" list=CountryIPBlocks

Да, да, почему Чили в примере, спросите вы. Отвечу — мой почтовый сервер начали спамить из этой страны, и я просто ее заблокировал. Зачем мне она?

Но есть один момент, если вы блокируете страну по ip то нам надо создать другой список.. Поэтому открываем файл любым текстовым редактором и делаем замену CountryIPBlocks на то, что Вам будет понятно. Я поменял на RussianIP:

/ip firewall address-list
add address=2.56.24.0/22 comment="RUSSIAN FEDERATION" list=RussianIP
add address=2.56.88.0/22 comment="RUSSIAN FEDERATION" list=RussianIP
add address=2.56.112.0/22 comment="RUSSIAN FEDERATION" list=RussianIP
add address=2.56.180.0/22 comment="RUSSIAN FEDERATION" list=RussianIP
add address=2.57.0.0/24 comment="RUSSIAN FEDERATION" list=RussianIP
add address=2.57.36.0/22 comment="RUSSIAN FEDERATION" list=RussianIP
add address=2.57.52.0/22 comment="RUSSIAN FEDERATION" list=RussianIP
add address=2.57.80.0/22 comment="RUSSIAN FEDERATION" list=RussianIP
add address=2.57.112.0/22 comment="RUSSIAN FEDERATION" list=RussianIP
add address=2.57.184.0/22 comment="RUSSIAN FEDERATION" list=RussianIP
add address=2.58.68.0/22 comment="RUSSIAN FEDERATION" list=RussianIP

Загружаем его на наш роутер просто перетаскиванием в окно WinBox. Но, скажу честно, не знаю, как через WinBox делать импорт файлов конфигурации, потому в терминале набираем:

import Russian-Address-List.rsc

Итак, мы получили список всех IP России в адрес листе, теперь немного изменим правило Mangle, чтоб в него не попадали адреса из этого списка:

Открываем раздел IP->Firewall->Mangle и находим наше правило (по комментарию, не зря же мы его добавили) Route to VPN marking. Двойным кликом открываем его для редактирования и в dst-Address-List указываем наш лист RussianIP, и, важно, кликаем на маленькое окошко перед полем с именем , чтоб в нем появился «!»

Теперь наш хост на российские ip будет оправляться через дефолтный маршрут — шлюз провайдера

P.S. сайт 2ip.ru находится на хостинге в Германии, потому зайдя туда мы увидим ip нашего VPN. И, я думаю, он не один такой. Так что этот вариант тоже не идеален.

5. А теперь попробуем поэкспериментировать с работой интернет ресурсов

Как же быть. Неужели смотреть youtube через медленный vpn канал? А если это не один хост? А давайте добавим все ip youtube в нас список? (надо было его назвать по-другому, придется переделать) Но как? А все тем же ip->firewall->mangle. Добавим правило

/ip firewall mangle add action=add-dst-to-address-list address-list=RussianIP address-list-timeout=10m chain=forward comment="Find youtube ip addresses and add it to list" content=youtube.com disabled=no dst-port=443 in-interface=!WAN protocol=tcp

Что делает это правило? Оно добавляет в наш список все адреса yotube, на которые обратиться наш хост (хосты) на 10 минут. И трафик пойдет через шлюз провайдера, не нагружая наш vpn канал!

Продолжение следует..

Categories:

No responses yet

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *