Вопрос или проблема
Я установил VPN сервер с strongswan 5.4.0 на FreeBSD 11.0-RELEASE-p1 на RaspberryPi 2. Пока что всё работает нормально, но скорость варьируется и значительно ниже, чем на Raspian, который я использовал до этого.
Вот конфигурация:
/etc/rc.conf
hostname="rpi2"
ifconfig_ue0="DHCP"
sshd_enable="YES"
powerd_enable="YES"
# Хорошо, если у вас есть сеть, иначе мешает.
ntpd_enable="YES"
strongswan_enable="YES"
pf_enable="YES"
pf_rules="/etc/pf.conf"
pflog_enable="YES"
pflog_logfile="/var/log/pflog" # здесь pflogd должен хранить файл журнала
gateway_enable="YES" # Включить как шлюз LAN
dnsmasq_enable="YES"
/usr/local/etc/ipsec.conf
# ipsec.conf - файл конфигурации strongSwan IPsec
config setup
charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2, mgr 2"
uniqueids = never
conn ikev2
left=%defaultroute
leftid=example.com
leftcert=VPN.crt
leftsendcert = always
leftsubnet=0.0.0.0/0
# leftfirewall=yes
right=%any
rightsourceip=10.0.0.1/24
keyexchange=ikev2
auto=add
fragmentation=yes
ike=aes128-sha256-ecp256!
esp=aes128gcm16!
/usr/local/etc/strongswan.conf
# strongswan.conf - файл конфигурации strongSwan
charon {
dns1 = 192.168.1.58
plugins {
include strongswan.d/charon/*.conf
}
}
include strongswan.d/*.conf
/etc/pf.conf
nat on ue0 from 10.0.0.1/24 to any -> (ue0)
Скорость загрузки на подключенной машине примерно 5 Mbit/s, на Raspian она была около 20 Mbit/s. (Использование ЦП около 33 % на одном ядре и использование памяти 44MB, так что это не должно быть препятствием для более высокой пропускной способности)
У меня вопрос: сделал ли я какие-то ошибки в своей конфигурации? Что я могу сделать, чтобы ускорить это?
Также VPN сервер иногда вызывает сбой XNU. Могла ли это быть проблема сервера?
Редактировать:
Я только что снова проверил скорости соединения. Скорость загрузки по VPN составляет около 5-8 Mbps, а скорость загрузки по VPN составляет около 13-18 Mbps. Интернет-соединение на Raspberry должно быть нормальным, я проверил его с помощью wget, который дает мне около 6 MBps, вероятно, ограниченным ядром ЦП. На Debian скорость загрузки и выгрузки по VPN составляет около 20 Mbps. Так что должны быть некоторые улучшения на FreeBSD? Дополнительный вопрос: если я выясню, в чем проблема, есть ли способ использовать несколько ядер ЦП, чтобы еще больше улучшить скорость?
Редактировать2:
Я только что проверил производительность AES-GCM, используя OpenSSL 1.0.2j, который дает мне скорости около 7000kB/s. Может быть, кто-то может объяснить мне, почему я могу или не могу иметь такие скорости на ESP?
Я только что снова проверил Raspian и включил параллельное шифрование. Теперь я получаю около 50 Mbps. Я думаю, что не смогу достичь этого с FreeBSD, поэтому останусь на Linux.
Ответ или решение
Оптимизация скорости VPN на StrongSwan в FreeBSD
У вас возникла проблема со скоростью VPN-сервера на базе StrongSwan версии 5.4.0 на FreeBSD 11.0-RELEASE-p1, установленного на Raspberry Pi 2. Данная ситуация требует анализа и оптимизации конфигурации для достижения лучших результатов по скорости.
1. Оценка конфигурации
Ваша текущая конфигурация включает настройки, которые могут влиять на производительность:
-
Сертификаты и ключи: Убедитесь, что сертификаты оптимально настроены и не требуют слишком много расчетных ресурсов для их обработки. Использование более легких алгоритмов аутентификации, таких как
aes128-sha256
, может положительно сказаться на производительности, но необходимо учитывать компромисс между безопасностью и производительностью. -
Уровень отладки: Наличие высоких значений в
charondebug
(ike 2, knl 2 и т. д.) может приводить к увеличенной нагрузке на систему. Попробуйте установить более низкий уровень отладки на этапе тестирования.
2. Настройки сети
-
PF: Убедитесь, что ваш файрвол не создает узкие места. Временное отключение
pf
для тестирования может помочь вам определить, негативно ли влияет он на скорость. -
Настройка NAT: Убедитесь, что правила NAT оптимально настроены. Комплексные правила могут замедлять передачу пакетов.
3. Замеченные проблемы с производительностью
Вы указали, что наблюдается скачкообразная скорость в диапазоне 5-8 Мбит/с для загрузки и 13-18 Мбит/с для выгрузки. Необходимо учитывать следующие моменты:
-
ЦП и память: Хотя загрузка ЦП в 33% и использование памяти в 44 МБ не указывают на узкие места, необходимо учесть, что однопоточные процессы могут зацикливаться на использовании одного ядра. Ваша Raspberry Pi 2 имеет 4 ядра, но StrongSwan может не использовать их все должным образом.
-
AES-GCM: Вы упомянули, что производительность AES-GCM достигает 7000 кБ/с, в то время как фактическая скорость VPN ниже. Это может быть связано с потери пакетов, настройками шифрования на уровне сетевого интерфейса или ограничениями в передаче данных через IPsec.
4. Оптимизация конфигурации и возможные изменения
-
Улучшение многопоточности: Убедитесь, что StrongSwan настроен на использование нескольких ядер. Возможно, вам нужно будет обновить версию StrongSwan или использовать более новые версии FreeBSD, поскольку они могут предлагать лучшую многопоточность.
-
Тестирование других шифров: Попробуйте использовать другие алгоритмы шифрования, такие как
aes256
илиchacha20
, и посмотрите, насколько они влияют на производительность. -
Отключение ненужных функций: Убедитесь, что отключены ненужные плагины и функции в конфигурации StrongSwan, которые могут увеличивать накладные расходы.
-
Мониторинг трафика: Используйте инструменты типа
iftop
илиtcpdump
, чтобы проверить, не замедляет ли что-то трафик.
5. Заключение
Ваша текущая конфигурация может быть оптимизирована с помощью некоторых вышеописанных шагов. При необходимости дальнейшего углубленного анализа, стоит рассмотреть возможность перехода на более новую версию StrongSwan или использование Linux-дистрибутивов, которые уже продемонстрировали лучшую производительность в вашем случае.
В конечном итоге, если вы не сможете достичь желаемого уровня производительности на FreeBSD, разумным решением может стать переключение на дистрибутив Linux, где вы уже наблюдали более высокие результаты.