Не хотел отвечать на данный вопрос, так как обычно в низкой скорости VPN винят кого угодно, кроме как себя, не желающего разобраться в техчасти, но да ладно.
0. Я, будучи гражданином РФ, за использование VPN в законных целях (например, защита соединения до рабочего места при удаленной работе), и против использования для подрывной деятельности и связи с запрещенными экстремисткими, террористическими и прочими плохими организациями.
1. Для начала для быстрого VPN надо определиться скорость до куда измерять будете.
Если вам необходимо быстро скачивать файлы с условного сервера Москве, а вы находитесь в Нижневартовске, то брать для этой задачи виртуальную машину в Германии - вздор. Изучите свои потребности и берите под VPN машину/вычислительные ресурсы так, чтобы скорость от вас до этой машины была не меньше необходимой, а так же от машины до целевого сервера, откуда вы собираетесь что-то скачивать с большими скоростями, так же не меньше необходимой.
При этом убедитесь, что в принципе этот удаленный сервер имеет достаточно быстрый канал. Если он подключен с физлинком в 100мбит, то 1гбит вы из этого соединения никогда не выжмите.
2. Дальше важно правильно выбрать софт
OpenVPN - это классика, но он без DCO имеет кучу накладных расходов, ибо работает в user-space. Но с DCO он работает либо с шифрованием chacha20/poly1305, либо AES-GCM
WG - он уже работает в пространстве ядра, но только с Chacha20/poly1305
по остальным программным реализациям сами пробегитесь, там скорее всего плюс минус эти же алгоритмы увидите.
3. Что не так с шифрованиями Chacha20/poly1305 и AES-GCM?
Все с ними так, но
Chacha20/poly1305 - тупо программные алгоритмы, приемлемо и даже относительно бодро работают на слабом железе, но 1гбит/с чтобы выжать - нужен шустрый процессор. Аппаратного ускорения тут нет, и если процессор чем то параллельно подгрузить - скорость VPN соединения будет проседать заметно.
AES-GCM - на первый взгляд отличный выбор. Аппаратное ускорение AES есть чуть ли не у каждого второго утюга на рынке. Но вот этот GCM - вот там проблема. Тут еще аппаратно надо ускорить GHASH, но с ним уже проблемы, его просто так взять и ускорить не получится, ибо в нем кроется 128-битная математика в поля Галуа.
Но благо уже давно есть инструкция PCLMULQDQ - но и тут подстава, она работает с 64-битными полями. Так что костылить придется, либо в 4 итерации, либо в 3. За вас все накостылили давно, но от этого не легче, когда надо выжать большие скорости.
В ARMv8 процессорах та же фигня - там есть PMULL, но суть ровно та же.
На помощь реально приходит AVX-512, который далеко не у каждого процессор поддерживает, но там VPCLMULQDQ - то что доктор прописал для GHASH
4. Что делать?
Если со скоростями физлинка все просто, то с выбором шифрования уже есть над чем подумать:
вариант А: убедиться, что клиент и сервер VPN поддерживают AVX-512 и инструкцию VPCLMULQDQ и использовать OpenVPN с DCO и шифрованием AES-GCM (128/192/256 - для скорости тут не важно)
вариант Б: при наличии аппаратного ускорения AES, но без AVX-512 искать программную реализацию, которая работает на уровне ядра и которой достаточно AES-CTR или AES-CBС.