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