Перейти к содержимому

Как завернуть трафик в vpn mikrotik

  • автор:

Настройка маршрутизации трафика через VPN в RouterOS

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

mikrotik hap ac2

Один из таких сценариев — настройка автоматического соединение с некоторыми хостами через VPN.

Зачем это может быть нужно:

  • Сайт недоступен из интернета. Например, он находится в корпоративной сети
  • Вы не хотите чтобы провайдер знал что вы посещаете данный сайт
  • У сайта есть ограничения на доступ из вашей локации. Spotify или Telegram

Итак, предположим что у вас уже есть настроенный роутер, вы приобрели доступ к VPN и настроили подключение к нему.

В моем случае используется сервер на Digital Ocean. Для поднятия собственного vpn сервера можно использовать установку в один клик

worked vpn on mikrotik

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

/ip firewall nat add action=masquerade chain=srcnat out-interface=vpn-digitalocean 

Второй вариант, как я уже писал выше, это направление через VPN трафика только до определенных заранее хостов.

Для этого нам необходимо:

  • Создать в firewall лист адресов, трафик до которых будет маршрутизировать через VPN
  • Добавить правило для маркировки нашего трафика определенной меткой
  • Создать правило маршрутизации, чтобы пакеты помеченные меткой направлялись через интерфейс VPN
Добавляем лист адресов в firewall
/ip firewall address-list add address=104.154.127.47 list=spotify add address=78.31.8.0/21 list=spotify 

Теперь у нас появился лист адресов, который мы назвали spotify

spotify list

Создаём правило маркировки трафика
/ip firewall mangle add action=mark-routing \ chain=prerouting \ comment="Mark Spotify" \ dst-address-list=spotify \ new-routing-mark=mark_vpn \ passthrough=no \ src-address=10.0.0.0/24 

Мы создали правило, в котором определяем все обращения к хостам из списка spotify ( dst-address-list=spotify ) и довляем к ним метку mark_vpn ( new-routing-mark=mark_vpn ). src-address=10.0.0.0/24 указан для маршрутизации обращений из нашей локальной сети, возможно у вас другие диапазоны, например 192.168.0.0/24 , тогда нужно исправить.

Параметр passthrough=no нужен для уменьшения потребляемых ресурсов при обработке трафика, подробнее в документации.

Для названия метки я выбрал mark_vpn , это нужно для универсальности. В дальнейшем, когда появятся другие листы адресов, для них не придется создавать отдельные правила.

Настраиваем маршрутизацию маркированных пакетов
/ip firewall nat add action=masquerade chain=srcnat out-interface=vpn-digitalocean routing-mark=mark_vpn 

Мы создали правило, которое аналогичному тому что было в «первом сценарии», за исключением того что оно обрабатывает только пакеты которые помечены специальной меткой routing-mark=mark_vpn .

Дополнительная информация

Заворачиваем весь трафик с бриджа в VPN

Представим ситуацию: к вам часто приходят гости или у вы хотите помочь своим соседям с бесплатным Wi-Fi (без пароля), но не хотите, чтобы все запросы шли через аплинк вашего провайдера, в том числе по причине Cookies.

1. Создаем VRF, в который добавляем: L2TP-client до нашего VPN-сервера и интерфейс, с которого будет идти трафик, например, Wi-Fi-интерфейс или целый Bridge:

/ip route vrf add interfaces=Bridge_Free_Wi-Fi,L2TP-client1 routing-mark=free-wifi-to-vpn

2. Добавляем маршрут по умолчанию с указанием routing-mark, обязательно ставьте distance, отличный от 1, иначе можете потерять другие свои PPP-соединения:

/ip route add distance=3 gateway=L2TP-client1 routing-mark=free-wifi-to-vpn

3. Наконец, создаем правило NAT для ната трафика с нашей сети с Wi-Fi, в моем случае: 192.168.222.0/28 (раздается по DHCP) через L2TP-client1 (remote address: 192.168.77.20):

/ip firewall nat add action=src-nat chain=srcnat out-interface=L2TP-client1 src-address=192.168.222.0/28 to-addresses=192.168.77.20

Подключаемся к SSID Wi-Fi, в котором трафик заворачивается в VPN и проверяем результат:

Mikrotik отправляем выборочно трафик через VPN

В продолжении этой статьи, в которой мы научили Mikrotik подключаться к VPN серверу по протоколу L2TP, в этой заметке рассмотрим выборочное (по списку) перенаправление исходящего трафика через VPN сервер.
В двух словах для чего это может понадобится.
Реальная история, есть прекрасный OpenSource проект архиватора 7-zip, в погоне за блокировкой Telegram местный провайдер прихлопнул и его:).
На этом примере рассмотрим, как получить доступ к 7-zip, соответственно при условии, что данный ресурс доступен из VPN сервера:)

Немного вводных данных:

  • Считаем, что VPN клиент на Mikrotik настроен и работает
  • Имя интерфейса L2TP клиента — marvins
  • Имя списка с IP адресами — rkn
  • Адрес локальной сети — 10.200.6.0/24

Суть материала — мы создадим список (Address List) ресурсов (IP адреса) под именем rkn, далее весь исходящий трафик будет просматриваться и при совпадении из списка rkn данный трафик будет помечаться маркером и при наличии этого маркера будет пересылаться через VPN соединение:)

В списке у нас будет фигурировать всего один IP адрес, для теста нам этого хватит:

/ip firewall address-list add list=rkn address=159.65.89.65

Либо ручками: IP—>Firewall—>Address List
Добавляем mangle правило, которое будет маркировать трафик:

/ip firewall mangle add action=mark-routing chain=prerouting dst-address-list=rkn new-routing-mark=\ rkn passthrough=yes src-address=10.200.6.0/24

Или руками:) IP—>Firewall—>Mangle

Теперь нам осталось настроить роутинг маркированного трафика:

/ip route add distance=1 gateway=marvins routing-mark=rkn

Ну или руками:) IP—>Routes

Проверяйте — должно работать:)

Как в Mikrotik направить весь трафик на VPN кроме определенных адресов?

Всем привет!
Задача завернуть все соединения на VPN.
Однако часть клиентов уже работает под VPN, соответственно два раза заворачивать смысла нет.

Как быть в следующих ситуациях:
1. Завернуть весь трафик в ВПН кроме определенных IP
2. Завернуть весь трафик в ВПН кроме определенных доменов *.host.com или поддоменов *
3. Завернуть весь трафик в ВПН кроме определенных IP + за исключением определенных устройств (клиентов)

  • Вопрос задан более трёх лет назад
  • 18436 просмотров

Комментировать
Решения вопроса 0
Ответы на вопрос 3

nops

Системный инженер.

5cfb4e07235fe534993131.png

Маркировать трафик.
Для примера возьми статейки, на хабре как раз есть, по настройке 2-3 провайдеров на микротик.
По аналогии сделай так же. Представь что VPN — это второй провайдер и в путь.
Все делается за 30 минут.
Только когда будешь делать через винбокс, нажми вот эту кнопку:

Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать

Jump

Системный администратор со стажем.

Для начала нужно промаркировать интересующий вас трафик в соответствии с перечисленными вами задачами.
После чего написать маршрут для маркированного трафика.

Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Uragiremono @Uragiremono

Исходные данные:
WAN — ether1, выход к провайдеру
172.20.10.2/24 — адрес полученный от провайдера
172.20.10.1 — его шлюз
LAN — 192.168.1.0/24
VPN — ovpn_client
10.10.10.2/32 — адрес полученный от VPN-сервера
10.10.10.1 — его шлюз
с опцией add-default-route=yes, весь трафик по-умолчанию должен уходить через VPN

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

1. Завернуть весь трафик в ВПН кроме определенных IP

# создать список адресов, которые не должны идти через VPN ip firewall address-list add list=exclude_list address=192.168.1.10 ip firewall address-list add list=exclude_list address=192.168.1.11 # маркируем пакеты ip firewall mangle add chain=prerouting action=mark-routing dst-address-list=exclude_list new-routing-mark=ether1_route_mangle passthrough=no src-address=192.168.1.0/24 # изменяем маршрут, который идёт к провайдеру ip route add dst-address=0.0.0.0/0 gateway=172.20.10.1 distance=1 routing-mark=ether1_route_mangle

2. Завернуть весь трафик в ВПН кроме определенных доменов *.host.com или поддоменов *
Тоже самое, что и в 1 варианте, только вместо IP, вводить домен

ip firewall address-list add list=exclude_list address=host.com ip firewall address-list add list=exclude_list address=test.host.com

3. Завернуть весь трафик в ВПН кроме определенных IP + за исключением определенных устройств (клиентов)
Это ведь тоже самое, что и первый вариант?
«определенных устройств» есть IP/домен, просто их добавить в список

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

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