6

С каждым днем веб-цензура в моей стране набирает силу. Очевидным решением является использование VPN, но оно замедляет соединение, и безопасность общедоступных VPN-сервисов не может быть гарантирована.

Таким образом, я подумал следующее решение:

Маршрутизатор будет обращаться к большинству веб-сайтов обычным способом, но будет поддерживать постоянное VPN-соединение, которое будет представлять собой один дополнительный сетевой интерфейс. Если я захожу на один из цензурированных веб-сайтов, маршрутизатор будет пропускать трафик через этот виртуальный интерфейс.

Это возможно с RouterOS? Как это сделать?

Мой маршрутизатор - RB2011UiAS-2HnD-IN, RouterOS v 6.30.2.

2 ответа2

8

Давайте предположим, что вы будете использовать PPTP VPN только для демонстрации команд, которые вам нужно выполнить.
Поскольку шифрование PPTP уже давно нарушено, я предлагаю вам использовать что-то более безопасное (например, OpenVPN). Принцип один и тот же, независимо от того, какую технологию VPN/ туннеля вы используете.

Итак, сначала вы создаете VPN без добавления маршрута шлюза по умолчанию.

/interface pptp-client
add add-default-route=no allow=pap,chap,mschap1,mschap2 connect-to=VPN_SERVER_IP \
dial-on-demand=no disabled=no max-mru=1440 max-mtu=1440 mrru=dis \
name=VPN_NAME password="MY_STRONG_PASSWORD" profile=default-encryption user=USERNAME

Затем вы создаете новую таблицу маршрутизации, добавляя шлюз по умолчанию через VPN с новой меткой маршрутизации vpn . Это позволит вам маршрутизировать пакеты через VPN.

/ip route add dst-address=0.0.0.0/0 distance=1 gateway=VPN_GATEWAY_IP routing-mark=vpn

Следующий маршрут не обязателен, если вы хотите заблокировать исходящий трафик, если VPN не работает:

/ip route add dst-address=0.0.0.0/0 type=unreachable distance=2 routing-mark=vpn

Нам также нужно сделать NAT для пакетов, которые будут отправляться через интерфейс VPN.

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

Теперь мы добавляем правило mangle которое будет соответствовать целевым IP-адресам, которые мы хотим, и выполняем mark-routing на них, чтобы они использовали созданную нами таблицу маршрутов vpn .

/ip firewall mangle add chain=prerouting dst-address-list=VPN action=mark-routing new-routing-mark=vpn

Наконец, мы создаем список Address List на брандмауэре с IP-адресами, которые мы хотим направить через VPN.

/ip firewall address-list add list=VPN address=1.1.1.1
/ip firewall address-list add list=VPN address=2.2.2.2
/ip firewall address-list add list=VPN address=3.3.3.3
/ip firewall address-list add list=VPN address=4.4.4.4

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

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

Также этот метод будет маршрутизировать целые IP через VPN. Если вам нужно маршрутизировать определенные порты / протоколы через VPN, вы просто создаете дополнительные правила mangle, которые соответствуют всем, что вам нужно, и выполняете mark-routing на них.

-2

Ниже приведен общий ответ Linux. Я не знаю, имеет ли routeros подходящую функциональность в своем пользовательском интерфейсе, и если нет, можете ли вы обойти пользовательский интерфейс и напрямую взаимодействовать с функциями маршрутизации / межсетевого экрана / nat в ядре.

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

Затем вы можете добавить определенные маршруты в таблицу маршрутизации для направления трафика на определенные IP-адреса по VPN.

Вам также необходимо убедиться, что NAT настроен правильно, чтобы исходный адрес пакетов, покидающих ваш маршрутизатор, соответствовал интерфейсу, с которого они выходят. Это можно сделать либо с помощью цели "MASQURADE", либо путем настройки отдельных правил "SNAT" для каждого интерфейса.

В зависимости от точного характера блокировки вы можете посчитать необходимым отправлять часть или весь ваш трафик DNS по VPN. Отправка всего вашего DNS-трафика по VPN должна быть достаточно простой (просто укажите настройки вашего DNS-сервера на IP, который маршрутизируется по VPN). Если (по соображениям производительности или конфиденциальности) вы хотите, чтобы только некоторые из ваших DNS-запросов проходили по VPN, вам понадобится какой-то DNS-прокси для разделения запросов.

Еще одним осложнением является то, что сайты, к которым вы обращаетесь, не имеют стабильных IP-адресов. В этом случае вам понадобится прокси-сервер DNS, который может отслеживать ответы и динамически добавлять маршруты.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .