Сервер в кармане, или просто о сложном!

главная - Статьи - Mikrotik



Отдельные сайты через VPN, к которому mikrotik подключен как клиент VPN

Дата обновления: 04.02.2022

Теги: VPN OpenVPN Mikrotik

Задача: настроить так, чтобы клиенты локальной сети, находящейся за mikrotik, на отдельные сайты выходили бы через внешний VPN-сервер (т.е. чтобы mikrotik трафик до определенных сайтов направлял бы через сторонний VPN-сервер).

Т.е. mikrotik не является VPN-сервером, он - клиент VPN-сервера. Это может быть нужно для самых разных задач, одна из которых - защита трафика от возможного перехвата (с подменой сертификатов, к примеру, со стороны вышестоящих маршрутизаторов или просто защита plain-трафика (ftp, http и др.)). Но если отправлять через VPN весь трафик, то может существенно упасть скорость. Тот же youtube и другие "тяжелые" сайты можно спокойно смотреть и без всяких VPN. А можно весь рабочий трафик (до конкретных серверов компании) заворачивать через VPN, а домашний трафик - через шлюз по-умолчанию. А можно... впрочем, сами придумайте, что еще можно.

Предложу достаточно простой вариант:

1. Подразумеваем, что mikrotik уже настроен как VPN-клиент (например, подключен к удаленному серверу OpenVPN и при подключении в микротике становится доступен новый сетевой интерфейс ovpn-out1).

2. IP - Firewall - Address List. Здесь создается список ip-адресов (сейчас можно и доменные имена вписывать, а не только ip), например, с именем "TO-VPN".

/ip firewall address-list
add address=1.2.3.4/24 list=TO-VPN
add address=contoso.com list=TO-VPN

3. IP - Firewall - Mangle, chain prerouting. Создается правило маркировки пакетов, идущих наружу на ip или доменные имена нужных нам сайтов (список "TO-VPN"). Маркироваться пакеты должны ДО принятия решения о маршрутизации, поэтому - именно prerouting. Маркировать будем меткой "TO-VPN-MARK".

/ip firewall mangle
add action=mark-routing chain=prerouting comment=TO-VPN-MARK 
    dst-address-list=TO-VPN in-interface=!ether1-gateway new-routing-mark=
    TO-VPN-MARK passthrough=yes

Обратите внимание на in-interface=!ether1-gateway. Пакеты до нужных нам адресов не могут возникнуть на внешнем интерфейсе, соотв. такие пакеты (даже если они возникнут) маркировать не следует.

4. IP - Routes. Создаем маршрут: любые пакеты (dst 0.0.0.0/0), маркированные меткой "TO-VPN-MARK", направлять в интерфейс ovpn-out1 с distance 1. Если VPN канал активен, то маршрут будет также активен. Если VPN "ляжет", то и маршрут станет неактивен и весь трафик пойдет через вашего обычного провайдера.

/ip route
add comment="TO VPN" distance=1 gateway=ovpn-out1 routing-mark=TO-VPN-MARK

5. IP - Firewall - NAT. Не забываем включить маскарад через интерфейс ovpn-out1.

/ip firewall nat
add action=masquerade chain=srcnat out-interface=ovpn-out1

Если у вас firewall настроен правильно, то ничего большего добавлять не придется, но на всякий случай проанализируйте, защищен ли ваш микротик от левого входящего трафика со стороны VPN-сервера. Помните, что в общем случае input должен по-умолчанию разрешать established и related, но не new.

На самом деле все, трафик до нужных вам ip или доменов должен уже идти через VPN. Проверяйте traceroute.

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



Авторизуйтесь для добавления комментариев!


    забыли пароль?    новый пользователь?