На моем VPS (Ubuntu 14.04 - 64-бит), на котором установлен OpenVPN 2.3.2-сервер, я получаю разочаровывающую производительность. VPN-сервер использует шифр AES-128-CBC для шифрования, и у меня не установлен межсетевой экран.
Проблема в том, что скорость загрузки / выгрузки довольно низкая. При проведении некоторых тестов скорости средняя скорость составляет около 45 Мбит / с. Фактическая скорость упадет до 20 Мбит / с и достигнет 50 Мбит / с. При выполнении этих тестов загрузка процессора и сервера кажется довольно низкой.
Я пробовал изменить значение tun-mtu как на сервере, так и на клиенте, используя разные шифры (blowfish и т. Д.), Увеличивая размер буфера и т. Д. Моя скорость загрузки без VPN-соединения составляет около 180 - 190 Мбит / с (мой провайдер обещает 200 Мбит / с), моя загрузка - 10 Мбит / с. Как видите, разница довольно существенная, и я бы хотел как можно больше увеличить скорость загрузки.
Использование таких программ, как hasged от генерации доступной энтропии, похоже, не дает увеличения производительности. Моя доступная энтропия всегда рядом 700-800 бит 3000 с активным hasged, чего достаточно?
Сам сервер имеет соединение 1 Гбит. Тест загрузки на сервер подтверждает эту скорость (около 800+ Мбит / с). Я также протестировал загрузку случайного файла размером 1 ГБ с сервера на один из VPN-клиентов без использования VPN-соединения, и это дало мне скорость загрузки в среднем 180 Мбит / с (мой максимум).
Я не смог найти в Интернете много информации о медленных / низких скоростях загрузки с помощью OpenVPN-сервера, который помогал. Меня беспокоит то, что загрузка ЦП и сервера очень низкая (загрузка ЦП составляет около 16% только на одном ядре (OpenVPN не поддерживает многопоточность и многопоточность?) При проведении тестов скорости).
Если вам нужна дополнительная информация или подробности о моей установке или конфигурации, спросите.
РЕДАКТИРОВАТЬ 2015-02-28:
Я снова пытаюсь использовать OpenVPN-сервер только с тремя (3) клиентами. Опять же, я сталкиваюсь с проблемой, когда скорость загрузки не достигает максимальной (даже половины) скорости моего интернет-соединения на клиентах.
Я тестировал установку OpenVPN-сервера на самом хосте, и это дало мне неплохие результаты! Но мне нужно использовать VPN-сервер на VPS (виртуальной машине), а не на хост-машине. При загрузке файла размером 10 ГБ я могу достичь 10 МБ / с (800 МБ / с) и в среднем около 7,5 МБ / с (60 МБ / с). Мое интернет-соединение, с которого подключаются клиенты, - это соединение со скоростью 200 Мбит / с. При проведении различных тестов скорости без подключения к VPN я могу достичь в среднем 180 Мбит / с. При подключении через VPN-сервер (на VPS!) Скорость даже вдвое меньше той, которую я должен получить. При подключении через VPN-сервер (на ХОСТЕ!) Я могу достичь 120 Мбит / с.
Оба сервера используют примерно одинаковую загрузку ЦП при выполнении тестов, и оба имеют поддержку aesni на ЦП. Я провел несколько тестов скорости с openssl, но они кажутся очень хорошими и максимальными. из ядер процессора. Я также запустил watch -n 1 cat / proc / sys / kernel / random / entropy_avail при выполнении этих тестов, но доступная энтропия, похоже, не сильно изменилась при выполнении теста загрузки. И на хосте, и на VPS это около 850-900.
У меня нет идей относительно того, почему сервер (ы) VPS так сильно отличается по скорости от хоста. Может быть, это виртуализированный сетевой интерфейс Qemu (qemu-kvm)?
Всякий раз, когда я вижу кого-то на VPS, и он упоминает о проблемах с шифрованием или SSL, первое, что приходит в голову, - это то, что они запускают случайный пул всухую.
Попробуйте установить "hasged" и посмотрите, решит ли это проблему. Если это так, внимательно прочтите документацию и предостережения от использования генератора псевдослучайных чисел и его последствий для безопасности.
Зачем устанавливать «кованый»? Любая операция шифрования сильно зависит от случайных чисел высокого качества. Следовательно, ваша пропускная способность в конечном итоге будет ограничена скоростью, с которой вы можете их генерировать. На VPS вы может не иметь всех доступных источников энтропии, которые были бы на голом металле. Это может истощить бассейн (попробуйте cat /proc/sys/kernel/random/entropy_avail
), в результате чего ваша программа блокируется, в то время как в пул вносится больше случайности. Haveged использует алгоритм HAVEGE, который, в зависимости от вашего варианта использования, может быть менее безопасным. Вам решать, стоит ли рисковать в вашей ситуации. :) Haveged - это демон, который работает в фоновом режиме, чтобы поддерживать пул энтропии ядра заполненным и перемешанным. Никаких изменений в вашем программном обеспечении не требуется, кроме, возможно, перезагрузки вашего VPS (зависит от ваших настроек).
OpenVPN через UDP
Если вы используете OpenVPN через UDP, вы можете получить лучший опыт, установив фиксированные значения буфера. Попробуйте эти строки в файле конфигурации вашего клиента (* .ovpn или * .conf).
sndbuf 393216
rcvbuf 393216
push "sndbuf 393216"
push "rcvbuf 393216"
https://winaero.com/blog/speed-up-openvpn-and-get-faster-speed-over-its-channel/