OpenVPN через pfSense работает очень медленно.

Вопрос или проблема

У меня есть фаервол pfsense (2.7.2-RELEASE), работающий в облаке с 4 выделенными CPU и 16GB RAM. За фаерволом находится сервер с доступом в интернет через pfSense. Я также могу подключить свой ноутбук с помощью OpenVPN Client и получить доступ к серверу по локальному IP.

Если я протестирую с помощью iperf3 с ноутбука до сервера через интернет, моя скорость ВВЕРХ и ВНИЗ составляет не менее 500 Мбит/сек.

Если я использую внутренний IP через OpenVPN, моя скорость на ВВЕРХ составляет около 30 Мбит/сек, а на ВНИЗ — около 3 Мбит/сек с многими падениями до 0.

Для полноты картины я провел этот тест также со всевозможными комбинациями между серверами за фаерволом, внешними серверами и несколькими ноутбуками, используя внутренние и внешние IP, и все скорости находятся в пределах от 500 Мбит/сек до 1,5 Гбит/сек.

Единственная проблема возникает через OpenVPN.

OpenVpn/pfSense:

Шифры данных: AES-256-GCM, CHACHA20-POLY1305
Суммирование: SHA256
Параметры D-H: 2048 бит

Тип процессора    AMD EPYC Processor
4 CPU: 1 пакет(ы) x 2 ядра x 2 аппаратных потока
AES-NI CPU Crypto: Да (активно)
QAT Crypto: Нет 

Аппаратное шифрование     AES-CBC, AES-CCM, AES-GCM, AES-ICM, AES-XTS, SHA1, SHA256

Загрузка процессора и памяти менее 10%

Есть идеи, как ускорить соединение через VPN?

Конфигурация сервера config.ovpn

dev ovpns1
verb 1
dev-type tun
dev-node /dev/tun1
writepid /var/run/openvpn_server1.pid
script-security 3
daemon
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
proto udp4
auth SHA256
up /usr/local/sbin/ovpn-linkup
down /usr/local/sbin/ovpn-linkdown
client-connect /usr/local/sbin/openvpn.attributes.sh
client-disconnect /usr/local/sbin/openvpn.attributes.sh
multihome
engine rdrand
tls-server
server 10.33.30.0 255.255.255.0
client-config-dir /var/etc/openvpn/server1/csc
username-as-common-name
plugin /usr/local/lib/openvpn/plugins/openvpn-plugin-auth-script.so /usr/local/sbin/ovpn_auth_verify_async user ##PASS## false server1 1194
tls-verify "/usr/local/sbin/ovpn_auth_verify tls '##HOST##' 1"
lport 1194
management /var/etc/openvpn/server1/sock unix
push "route 10.33.0.0 255.255.0.0"
push "register-dns"
duplicate-cn
capath /var/etc/openvpn/server1/ca
cert /var/etc/openvpn/server1/cert
key /var/etc/openvpn/server1/key
dh /etc/dh-parameters.2048
tls-auth /var/etc/openvpn/server1/tls-auth 0
data-ciphers AES-256-GCM:CHACHA20-POLY1305
data-ciphers-fallback CHACHA20-POLY1305
allow-compression no
topology subnet
fast-io
explicit-exit-notify 1

Клиент.ovpn

dev tun
persist-tun
persist-key
data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305:AES-256-CBC
data-ciphers-fallback AES-256-CBC
auth SHA256
tls-client
client
resolv-retry infinite
remote ##HOST## 1194 udp4
nobind
verify-x509-name "##HOST##" name
auth-user-pass
remote-cert-tls server
explicit-exit-notify

<ca>
-----BEGIN CERTIFICATE-----
##@@@##
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
##@@@##
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
##@@@##
-----END PRIVATE KEY-----
</key>
key-direction 1
<tls-auth>
#
# 2048 бит статический ключ OpenVPN
#
-----BEGIN OpenVPN Static key V1-----
##@@@##
-----END OpenVPN Static key V1-----
</tls-auth>

Ответ или решение

Рассматривая возникшую проблему медленной работы OpenVPN через pfSense, стоит принять во внимание несколько аспектов конфигурации и производительности, которые могут быть источником проблемы.

Теория

OpenVPN функционирует как виртуальная частная сеть, создающая защищенный канал связи между клиентом и сервером. Ключевые параметры, влияющие на скорость VPN-соединения, включают алгоритмы шифрования и целостности, настройки MTU (Maximum Transmission Unit), метод передачи данных (TCP или UDP), а также оборудование, используемое для обработки трафика.

Пример

Помимо вашей конфигурации, лучший практический опыт показывает, что использование более легких шифров и оптимизация параметров трансфера может значительно улучшить производительность соединения:

  1. Шифрование: В вашей конфигурации используются алгоритмы AES-256-GCM и CHACHA20-POLY1305. Это современные и надежные алгоритмы, но они могут требовать значительных вычислительных ресурсов. Иногда уменьшение сложности шифра, например, использование AES-128-GCM, может облегчить нагрузку на процессор без существенного снижения безопасности.

  2. Транспортный протокол: Вы используете UDP, что является правильным выбором для OpenVPN, так как он обеспечивает меньшую задержку по сравнению с TCP.

  3. MTU: Неправильная настройка размера MTU может привести к фрагментации пакетов и, как следствие, снижению производительности. Стоит протестировать различные значения MTU, чтобы найти наиболее оптимальное для ваших условий.

  4. Параметры keepalive: У вас активирован keepalive с интервалом 10 60. Пробуйте увеличить значения, чтобы снизить частоту проверок связи и уменьшить нагрузку.

Применение

  1. Оптимизация шифрования: Рассмотрите возможность использовать AES-128-GCM на обеих сторонах связи — как серверной, так и клиентской. Это может улучшить производительность без существенных компромиссов по безопасности из-за сильных преимуществ AES.

  2. Настройка MTU: Добавьте в файл конфигурации параметр mssfix или fragment и протестируйте значения начиная с 1300, постепенно увеличивая или уменьшая, оценивая изменения в скорости соединения.

  3. Анализ логов и QoS: Проверьте логи OpenVPN и pfSense на наличие ошибок и предостережений, связанных с переработанным или потерянным трафиком. Убедитесь, что политики качества обслуживания (QoS) не ограничивают скорость OpenVPN.

  4. Тест производительности: Очистите отладочную информацию и временно повысьте уровень детализации до verb 3, чтобы более подробно отслеживать процессы и выявить узкие места.

  5. Альтернативные алгоритмы: Попробуйте временно переключиться на менее жесткие параметры целостности, например SHA1, и оцените изменения в производительности. Это особенно актуально, если ресурсы на вычисления ограничены.

Применение перечисленных предложений позволит выявить слабые места в текущей настройке и улучшить производительность OpenVPN на вашем pfSense, обеспечивая более стабильное и быстрое соединение.

Оцените материал
Добавить комментарий

Капча загружается...