Отдельные сайты через VPN, к которому mikrotik подключен как клиент VPN
Дата обновления: 04.02.2022Задача: настроить так, чтобы клиенты локальной сети, находящейся за 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-сервера нет. Маркировать пакеты можно по разным признакам. Например, только от конретных клиентов локальной сети. Или только беспроводных клиентов и только в рабочее время. Минусов пока не нашел.
Авторизуйтесь для добавления комментариев!