LINUX.ORG.RU
ФорумAdmin

OpenVPN проблема с созданием конфига с максимальной производительностью

 


2

2

Доброго вечера. В общем, пытаюсь создать конфиг для openVPN с максимальной производительностью и относительной беспалевностью. Арендовал VPS в Москве и в Лондоне, оба в минимальной конфигурации, 1 ядро, выдают по 2200 в Geekbench 4. Конфигурация сервера:

port 1194
proto udp
dev tun
sndbuf 0
rcvbuf 0
ca ca.crt
cert server.crt
key server.key
dh dh.pem
crl-verify crl.pem
tls-crypt ta.key

fast-io
auth SHA256
ncp-disable
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
cipher AES-256-GCM

#compress lz4-v2
#push "compress lz4-v2"

user nobody
group nogroup
persist-key
persist-tun

# Log a short status
status openvpn-status.log
log-append /etc/openvpn/logs/openvpn.log
verb 1
Конфигурация клиента:
client
fast-io
script-security 2
#up /etc/openvpn/update-resolv-conf
#down /etc/openvpn/update-resolv-conf

setenv opt tls-version-min 1.2 or-highest
dev tun
proto udp
sndbuf 0
rcvbuf 0
remote 185.220.33.172 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA256
cipher AES-256-GCM
setenv opt block-outside-dns
verb 3
Пытался замерить скорость для начала через speedtest-cli несколько раз.

Прием/отдача, пинг

  • Без VPN: 56/56, 2-5
  • EN VPN LZ4: 27/20, 81-100
  • EN VPN no LZ4: 25/15-50, 81
  • RU VPN LZ4: 54/55-70, 16
  • RU VPN no LZ4: 51-54/54-55, 16

Сразу непонятно каким образом с LZ4 отдача с московским вышла больше, чем без VPN'а. Хотелось бы прояснить этот момент.

Дальше решил померить iperf'ом, правильно или нет поправьте. На сервере запускаю командой без VPN: iperf3 -s

с VPN: iperf3 -s --bind 10.8.0.1.

Клиент: iperf3 -с ip -N (с флагом -R или без)

Клиент через VPN: iperf -c 10.8.0.1 (с флагом -R или без)

Получил такие результаты. sender/reseiver, с флагом -R sender/reseiver

  • EN without VPN: 53/50, 14/14
  • EN with VPN no LZ4: 42/40, 8-10/8-10
  • EN with VPN LZ4: 42/40, 8-10/8-10
  • RU without VPN: 58/58, 58/58
  • RU with VPN no LZ4: 56/56, 55/55
  • RU with VPN LZ4: 56/56, 55/55

Сразу напрашивается вопрос, с чем связана такая низкая скорость в случае с Лондонским VPN? Такова ситуация с расстоянием или можно улучшить ситуацию? с LZ4 тоже стоит вопрос, стоит ли вообще использовать сжатие, ибо медиа файлы сжимать нет смысла, а все остальное и так сжимается gzip'ом. Лишь при высокой нагрузке будет отнимать ресурсы.

Далее встал вопрос с палевом VPN fingerprint, пробовал играться с параметром mssfix, но до конца так и не понял как это работает. Протестировал следующие случаи:

  • Без mssfix 0 на сервере/клиенте, 1328 MTU с VPN fingerprint
  • С mssfix 0 на сервере 1398 MTU с VPN fingerprint
  • С mssfix 0 на сервере/клиенте 1500 MTU, при этом соединение с некоторыми сайтами становится нестабильным, нестабильная скорость отдачи.
  • С mssfix 0 на сервере, mssfix на клиенте, 1398 MTU

Может кто подсказать что я тут нашаманил и почему все так? С этими VPN fingerprint вообще какая-то магия происходит, то они определяются, то нет.

И напоследок встал вопрос об DNS leak на линуксе и фикс двустороннего пинга. На линуксе пишут, что следует в конфиг клиента добавить строчки

up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
, но при этом замечаю, что в спидтестах сразу повышается пинг до 100+. Связано с начальным определением хоста или как? И как пофиксить двусторонний пинг?

А какой размер ключей? И можно выбрать шифр слабее. И сжатие отключите. Меньше ресурсов будет отъедать. А экономия трафика не нужна.

FluffyPillow
()
Ответ на: комментарий от Birthright

У меня сжатие отъедало какой-то процент от максимальной скорости. Я без него. И да, с mssfix некорректно работают некоторые сайты. Если выставить в ноль - не будет работать ютуб. У меня без него VPN fingerprint не светится.

FluffyPillow
()
Ответ на: комментарий от Birthright

Мой конфиг сервера:

port 30000
proto udp
dev tun

server 10.0.3.0 255.255.255.0
sndbuf 524288
rcvbuf 524288
client-config-dir ccd

push "redirect-gateway def1"
push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 1.0.0.1"
push "sndbuf 524288"
push "rcvbuf 524288"
keepalive 10 120

cipher AES-256-CBC
auth SHA256
tls-server
tls-timeout 160
hand-window 160
max-clients 32

user nobody
group nogroup
persist-key
persist-tun

verb 0
FluffyPillow
()
Ответ на: комментарий от FluffyPillow

В принципе тоже самое, добавлено лишь пару директив. Производительность то судя по всему нормальная, судя по соединению с московским VPS. Но как-то аномально себя ведет порой lz4 и смущает как плохо работает Лондонский VPS. Либо сама по себе такая сетка, либо что-то еще можно в конфиге нашаманить. Ну и главное разобраться с mssfix.

Birthright
() автор топика
Ответ на: комментарий от aquadon

Пока да, openVPN. Но возьму на заметку, спасибо.

Birthright
() автор топика
Ответ на: комментарий от Birthright

И да, почему решили что у вас скорость на Лондоне падает? Только из-за speedtest? Ведь iperf показывает почти эталонную скорость.

И всё-таки (я наудалял свои мысли) маршруты вашего провайдера могут играть роль.

FluffyPillow
()
Последнее исправление: FluffyPillow (всего исправлений: 3)
Ответ на: комментарий от FluffyPillow

Выкидываю и на клиенте, и на серваке. Получаю. Linux 3.11 and newer (OpenVPN TCP bs128 SHA256 lzo, MTU: 1328) Получается палится VPN.

Birthright
() автор топика

LZ4 почти ничего не стоит, что iperf тебе и показал. оставь и забей.
то, что канал из московии до лодонабада фиговый — ну что поделать, это же остров. просто не используй такой канал.
если я правильно понимаю для чего тебе vpn, то выбирать нужно географически близкий (с оговорками конечно).

system-root ★★★★★
()

С mssfix 0 на сервере/клиенте 1500 MTU, при этом соединение с некоторыми сайтами становится нестабильным, нестабильная скорость отдачи.

Если вы будете выставлять MSS 1460 (MTU 1500), то у вас будет фрагментация пакетов, и VPN будет работать медленнее, чем мог бы. Все эти тесты «на анонимность» от 2ip и whoer — туфта. Говорю вам, как автор теста на MTU, после которого они появились на этих сервисах: https://habr.com/post/216295/

но при этом замечаю, что в спидтестах сразу повышается пинг до 100+.

Браузерные сервисы тестируют «пинг» задержками загрузки каких-то ресурсов (обычно однопиксельных картинок), так что в этот результат попадает еще и время DNS-запроса.

Сразу непонятно каким образом с LZ4 отдача с московским вышла больше, чем без VPN'а.

В этом и суть сжатия. Видимо, ваш тест передавал данные, которые можно было сжать, из-за чего получилась скорость выше ожидаемого.

Вообще, OpenVPN очень медленный. Он медленный и сам по себе, и из-за медленного драйвера TUN/TAP, в котором не реализовано чтение или запись сразу нескольких пакетов в функциях read и write, из-за чего происходит очень частое переключение контекста между ядром и окружением пользователя. Особенно это заметно на VPS, где нет гарантированных ресурсов процессора. Если вам нужна производительность, рекомендую использовать IPsec или WireGuard.

ValdikSS ★★★★★
()

Рекомендую выбрать нормальную реализацию VPN, которая хотябы в кернелспейсе вертится.

Deleted
()
Ответ на: комментарий от ValdikSS

Спасибо за разъяснения. Судя по соединению с московским VPS я не ощутил чтобы openVPN был медленным, я так понимаю это лишь критично когда пользуются несколько человек?

Birthright
() автор топика

хочешь максимальной производительности - отключи шифрование в протоколе

anonymous
()
Ответ на: комментарий от Birthright

Он относительно медленный, конечно. Скоростей выше гигабита в секунду на нем достичь достаточно сложно, в то время как strongSwan со стандартными настройками может и 10 гигабит выжать.

ValdikSS ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.