В нашем случае будет использоваться OpenVPN сервер на базе бесплатного VPS от Oracle с расположением в США. Вы можете использовать любой доступный вариант, а о настройке Mikrotik в качестве VPN-клиента для различных типов подключения вы можете более подробно прочитать в нашей статье.
При создании подключения в обязательном порядке снимите флаг Add Default Route, нам не требуется направлять весь трафик в VPN-канал, а маршрутизацию мы настроим позже вручную.
Для того, чтобы клиенты нашей локальной сети могли выходить в интернет через VPN-подключение, следует настроить NAT. Для этого перейдем в IP – Firewall – NAT и создадим новую запись со следующими параметрами: Chain – srcnat, Src. Address – диапазон вашей локальной сети, Out. Interface – интерфейс вашего VPN-подключения, в нашем случае это выглядит так:
Затем перейдите на закладку Action и укажите требуемое действие: masquerade. Также можно быстро выполнить все это в командной строке:
/ip firewall nat
add action=masquerade chain=srcnat out-interface=ovpn-out1 src-address=192.168.186.0/24
Следующим шагом создадим список сайтов, которые должны будут выходить в интернет через VPN-подключение и добавим в него какой-нибудь сайт. Для этого перейдем в IP – Firewall – Address Lists и добавим новую запись. В поле Name следует указать имя списка, либо выбрать его, если список существует, в Address укажите IP-адрес или доменное имя, в последнем случае роутер сам будет определять требуемые IP-адреса.
Эта же настройка через консоль:
/ip firewall address-list
add address=2ip.ru list=US_only
Теперь промаркируем все необходимые пакеты, для этого переместимся в IP – Firewall – Mangle и добавим новое правило: на закладке General укажем Chain – prerouting, In. Interface – bridge1, на закладке Advanced выберем Dst. Address List – US-only, а на закладке Action укажем Action – mark routing, New Routing Mark – произвольное имя метки – в нашем случае ORA и ниже снимаем флаг Passthrough.
Это же действие в консоли:
/ip firewall mangle
add action=mark-routing chain=prerouting dst-address-list=US_only in-interface=bridge1 new-routing-mark=ORA passthrough=no
Таким образом мы добавим к пакетам, направляемым к сайтам из списка специальную метку, на основании которой будет приниматься решение о их маршрутизации.
И наконец перейдем к самой маршрутизации, перейдем в IP – Routes и создадим новый маршрут. В качестве адреса назначения Dst. Address укажем 0.0.0.0/0, а в поле Gateway укажем интерфейс VPN-соединения, ниже выберем поле Routing Mark и укажем там нашу метку ORA.
Через командную строку данное действие можно выполнить так:
/ip route
add distance=1 gateway=ovpn-out1 routing-mark=ORA
Только что мы создали дополнительную таблицу маршрутизации, в которую будут попадать все промаркированные нами пакеты. Если шлюз, указанный в данной таблице недоступен, то пакет перейдет в основную таблицу маршрутизации – main – и уйдет в интернет через шлюз провайдера. Если это по каким-либо причинам нежелательно, то следует выполнить еще одну настройку. Перейдем в IP – Routes – Rules и создадим новое правило: Routing mark – ORA, Action – lookup only in table, Table – выберите имя, соответствующее вашей метке маршрутизации, в нашем случае также ORA.
В консоли для создания правила выполните:
/ip route rule
add action=lookup-only-in-table routing-mark=ORA table=ORA
Таким образом мы замкнем промаркированные пакеты в собственной таблице маршрутизации и при недоступности VPN-соединения эти сайты также окажутся недоступны. Через основного провайдера эти пакеты отправлены не будут.
Теперь самое время проверить, что все работает как надо. Мы не даром добавили в список сайт 2ip, перейдем на него и убедимся, что доступ к нему был осуществлен через наш VPN c выходом в США.
В дальнейшем вам потребуется только добавлять необходимые сайты в список, либо убирать из него. Также вы можете настроить несколько VPN-каналов с разными точками выхода и несколько таблиц маршрутизации, направляя пакеты к различным сайтам через разные туннели.