Каскад из двух серверов: российский трафик напрямую, остальное за границу
Каскад (двойной VPN) связывает два сервера AmneziaWG в цепочку. Клиент подключается к серверу-входу; российский трафик уходит напрямую с него, а остальное - через второй сервер за границей. Деление на стороне сервера, на клиенте ничего особого настраивать не нужно.
Как это работает
Одно подключение клиента, два сервера, трафик делится по месту назначения.
Сервер-вход (в России)
Сюда подключаются клиенты. Этот сервер решает, куда направить каждый поток, и держит всю логику каскада. Российские сайты идут напрямую с его IP, поэтому открываются быстро и принимают подключение.
Сервер-выход (за границей)
Обычный сервер AmneziaWG за границей. Сервер-вход подключается к нему как клиент и пересылает всё, что не относится к российским сетям, - зарубежные сайты видят чистый зарубежный IP.
Деление по назначению
Список российских сетей загружается в ipset. Трафик к этим адресам идёт напрямую, остальной помечается и уходит через выход. Без правил под каждое приложение и без списков на клиенте.
Когда это полезно
Обычный VPN гонит весь трафик через один выход. Каскад даёт сразу два.
Нужен одновременно быстрый доступ к российским ресурсам с российского адреса и зарубежный выход для всего остального - с одного подключения на клиенте. Так выглядит впн наоборот: не спрятать российский адрес, а показать его российским сайтам, оставив зарубежным чистый иностранный выход. Российские сайты перестают видеть иностранный адрес: трафик к ним уходит с адреса российского сервера. Мешает такой адрес чаще всего банковским приложениям и оплате, Госуслугам и налоговой, маркетплейсам. Одну оговорку стоит знать сразу: страну каскад меняет, а признак дата-центра у российского VPS остаётся почти всегда - по моему замеру 77 диапазонов из 78 помечены хотя бы одной геобазой. Сервис, который смотрит на тип хостинга, а не на страну, может по-прежнему просить подтверждение. Зарубежные сайты при этом получают свой выход, а всё решение принимается на сервере, одинаково для всех клиентов. Если хватает обычной установки на один сервер или раздельную маршрутизацию проще задать на клиенте - это не нужно. Каскад - для случая, когда деление должно жить на сервере.
На проверенной основе
Инструкция не набросок - маршрутизацию проверили вживую.
Маршрутизацию проверяли на живом стенде из двух серверов: и сам сплит, и повторные запуски скрипта, и восстановление после ребута. В инструкции лежит идемпотентный скрипт маршрутизации и systemd-юнит, чтобы деление поднималось само. Схему предложил @glfenix в обсуждении сообщества, а пошаговая инструкция лежит в репозитории.
Частые вопросы
Что такое каскад из двух серверов?
Зачем отделять российский трафик от остального?
Это впн с русскими серверами?
Это впн наоборот - когда нужен российский IP, а не зарубежный?
Нужна ли особая настройка на клиенте?
Каскад входит в установщик?
Откуда берётся список российских сетей?
Почему YouTube тормозит, а Google Play не работает в каскаде?
Почему отдача намного ниже приёма?
iperf3 -s, со входа - iperf3 -c IP-выхода для отдачи и iperf3 -c IP-выхода -R для приёма. Низкая первая цифра при нормальной второй подтверждает, что душит участок между серверами, а не сами серверы.