Долго я к этому шел, но наконец вроде взлетело. Давно пытался реализовать разруливание траффика по разным каналам с автоматизацией. Но то времени нет, то не работает чего-нибудь, то еще какая напасть. Однако наконец мой микротик удалось скрестить с сервисом antifilter.download и настроить в приемлемом виде. Шпаргалка в общих чертах, как всегда
Во-первых, нам нужен сервер где-нибудь, где РКН не властен. Во-вторых, надо там настроить VPN-сервер. В-третьих, нужен роутер, который в автоматическом режиме прожуёт списки и направит нас в нужном направлении.
Первый пункт опустим, сервисов подобных сейчас множество, выбирай на вкус. VPN-сервер тоже выбираем по вкусу. Главное, чтобы он был совместим с роутером. Я выбрал привычный себе OpenVPN AS. Роутер, в моем случае, это MIKROTIK MAP 2ND – компактный и вообще можно запитать от любой повербанки и подключить через переходник в 4G-свисток Обязательна RouterOS 7 версии. Ладно, ближе к настройкам.
- После установки OpenVPN AS нужно отключить TLS, потому что Mikrotik’овый клиент не умеет с ним работать. Печаль, но делать нечего. Заходим в Advanced VPN -> TLS Control Channel Security и вместо tls-crypt ставим none.
- Дальше создаем профиль для роутера и выгружаем OVPN-профиль для него.
- Из профиля добываем и сохраняем в файлы сертификат центра сертификации (секция CA, файл .cert), сертификат клиента (секция cert, файл .cert) и приватный ключ (секция key, файл .key).
- Загружаем файлы сертификатов в Mikrotik и по очереди их импортируем в раздел сертификатов. Сертификат клиента после загрузки ключа должен получить статус КТ.
- Создаем PPP-соединение типа OVPN Client со следующими параметрами:
Параметр | Значение |
Name | По вкусу |
Connect to | Указываем адрес нашего OpenVPN-сервера |
Port | Порт подключения для TCP-демона |
Mode | IP (по-другому роутер не умеет, фактически) |
Protocol | TCP (по-другому роутер не умеет, фактически) |
User / Password | Данные, которые были указаны при создании пользователя на сервере |
Profile | По умолчанию, ничего не меняем |
Certificate | Импортированный сертификат из предыдущего шага |
Verify Server Certificate | Вообще, без разницы (мы же отключили TLS), но я бы включал |
TLS Version | Only v1.2 |
Auth | SHA1 |
Cipher | aes256cbc |
Use peer DNS | Есть смысл выбрать Exclusively, потому что (хочется верить) на сервере VPN стоит DNS, который не блокирует запросы из России. Ну и неплохо было бы маршрут до DNS провесить тоже через этот туннель |
Add Default Router | Отключить, нам не надо весь траффик гнать через VPN |
Don’t Add Pushed Routes | Отключить. Во-первых, оно не работает нормально. А, во-вторых, мы их все равно использовать не будем |
- Настраиваем NAT через свежесозданный PPP-интерфейс. Проще всего добавить его в группу WAN-интерфейсов и не париться
Осталось настроить получение списка заблокированных адресов. Инструкция честно утащена с https://forummikrotik.ru/viewtopic.php?t=14126
/routing bgp connection
add as=64514 disabled=no hold-time=4m input.ignore-as-path-len=yes keepalive-time=1m local.address=192.168.220.220 .role=ebgp multihop=yes name=bgp1 remote.address=45.154.73.71/32 .as=65432 routing-table=main
Фильтр создается в Routing-Filters вкладка Rule. Синий плюсик.
В поле Chain впишите название вашего фильтра (придумайте сами).
А в поле Rule впишете текст (где my-vpn – это название вашего PPP-соединения):
set gw my-vpn; accept
Осталось в созданной записи BGP выбрать фильтр. Routing-BGP, далее щелкните дважды нужную строчку с параметрами BGP подключения. Перейдите на вкладку Filter. В поле Input Filter выберите нужный фильтр.
Да, и неплохо бы пустить получение BGP все через тот же VPN, а то мало ли заблочат
/ip route add dst-address=45.154.73.71/32 gateway=my-vpn
Вообще, рекомендую почитать оригинальную тему – там даже картинки есть.
Да, и последнее – для DNS’а и прочих руками забитых маршрутов сквозь VPN есть смысл использовать рекурсивные маршруты, чтобы целевой хост хотя бы пытался открыться через обычное соединение при неработающем VPN’е.