Улучшение производительности OpenVPN

10

Я пытался улучшить свою производительность OpenVPN, и это моя текущая настройка:

 cat /etc/openvpn/server.conf
port 443 #- port
proto tcp #- protocol
dev tun
#tun-mtu 1500
tun-mtu-extra 32 
#mssfix 1450
tun-mtu 64800
mssfix 1440
reneg-sec 0
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem
plugin /etc/openvpn/openvpn-auth-pam.so /etc/pam.d/login
#plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so /etc/pam.d/login #- Comment this line if you are using FreeRADIUS
#plugin /etc/openvpn/radiusplugin.so /etc/openvpn/radiusplugin.cnf #- Uncomment this line if you are using FreeRADIUS
client-to-client
client-cert-not-required
username-as-common-name
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 5 30
comp-lzo
persist-key
persist-tun
status 1194.log
verb 3

КЛИЕНТ:

client
dev tun
proto tcp
remote 18.4.26.8 443
resolv-retry infinite
nobind
tun-mtu 64800
tun-mtu-extra 32
mssfix 1440
persist-key
persist-tun
auth-user-pass
comp-lzo
verb 3

Я внес некоторые изменения в MTU и MSSFIX из того, что нашел в сети.

Могу ли я внести какие-либо изменения в ядро? Это коробка CentOS 6.x. Я нашел кое-что для BSD, но ничего не работает для Linux.

Я знаю, что TCP медленнее, чем UDP, но мне нужно иметь возможность выглядеть как трафик SSL, чтобы пройти через брандмауэр в сети.

Другие идеи?

PING к другому клиенту в сети, в которую я RDP.

Pinging 10.8.0.6 with 32 bytes of data:
Reply from 10.8.0.6: bytes=32 time=152ms TTL=128
Reply from 10.8.0.6: bytes=32 time=565ms TTL=128
Reply from 10.8.0.6: bytes=32 time=152ms TTL=128
Reply from 10.8.0.6: bytes=32 time=782ms TTL=128

Ping statistics for 10.8.0.6:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 152ms, Maximum = 782ms, Average = 412ms

Есть ли способы улучшить производительность или сбросить пинг?

РЕДАКТИРОВАТЬ: поможет ли настройка фрагментации некоторые?


источник
I know TCP is slower then UDP but I need to be able to look like SSL traffic to get thru a firewall on the network.Почему бы не попросить администратора сети открыть порт openvpn на работе? С другой стороны, этот вопрос может нарушать условия часто задаваемых вопросов, которые Licensing, legal advice, and *circumvention of security or policy*я хотел бы уточнить.
prateek61
1
В этом нет ничего противозаконного. Это единственный способ получить удаленный доступ к моим системам. :)
2
Я говорил больше об обходе политики брандмауэра, где бы вы ни находились. Почему вы не можете попросить администратора сети открыть порт? Я говорил не о законности, а об обходе политики безопасности.
prateek61
Может быть, sshuttle будет работать лучше для вас tcp-over-tcp vpn
ptman

Ответы:

13

Краткий ответ: отключить comp-lzo.

Я понимаю, что это старый пост, но я также страдал от низкой производительности OpenVPN. Я перепробовал все, настраивая MTU, меняя буферы snd и rcv, зажимая mss, вы называете это. Загрузка процессора была незначительной.

По прихоти я отключил сжатие (снято comp-lzoс клиента и сервера) и производительность увеличилась в 2-4 раза.

Таким образом, при comp-lzoвключенной моей максимальной производительности было около 25-30 Мбит / с, а без нее я достиг 120 Мбит / с (скорость моего интернет-соединения).

Сервер Xeon E5-2650, клиент Core i5-3320M. Оба работают под управлением OpenVPN 2.3.10, AES-256-CBC, SHA512. Мой Intel Chromebook также увеличил скорость интернета. На моих клиентах Android производительность удвоилась (14 Мбит / с -> 30 Мбит / с), что соответствует скорости туннеля IKEv2.

Ingenium
источник
6

TCP будет / намного / медленнее, чем UDP, что вызвано проблемой TCP-over-TCP . По сути, TCP использует отбрасывание / перегрузку пакетов для определения параметров соединения, а ваши соединения TCP через OpenVPN не испытывают ни одного из них. Но вы сказали, что это не вариант.

Вы также можете попробовать mtu-discопцию автоматического определения оптимальных настроек MTU для вашего соединения. В разных местах наблюдаются небольшие несоответствия, такие как настройка MTU в OpenVPN, включая размер заголовка Ethernet. [ 1 ]

Ваша tun-mtuнастройка огромна, поскольку у пакета размером 65 КБ будет много проблем с задержкой при прохождении через Интернет (гигантские пакеты IPv4 имеют размер около 9000 байт и в основном работают в локальных сетях). Вместо этого попробуйте что-нибудь под 1460, например 1300, чтобы увидеть, является ли MTU вашей проблемой.

chronospoon
источник
2
Спасибо, это решило мою проблему с получением postgresql-запроса для работы над OpenVPN. Это работало при запросе по одному столбцу, но не по всему столбцу. Очевидно, это было вызвано значением MTU по умолчанию 1500. Установка его на 1300 помогла!
Кристиан Бенке
2

Хотя это может быть немного поздно, вы можете попробовать то, что я сделал:

удалить все опции, связанные с mss, mtu и т. д.

сделайте сканирование порта в вашем учреждении и выберите порт UDP, обычно должны быть открыты 53 порта GRE / 123 NDP:

Добавьте эти строки в конфигурацию вашего сервера (ссылка здесь )

#possible bandwidth increase
sndbuf 393216
rcvbuf 393216
push "sndbuf 393216"
push "rcvbuf 393216"

Я не совсем понимаю эти настройки, но они, безусловно, помогли, некоторые говорят, что это очень помогает, по моему опыту, это увеличило мою пропускную способность на +/- 30%

Запустите сервер на одном из этих портов, и вам должно быть хорошо идти: P

Надеюсь это поможет!

Cybex
источник
9
-1 за слишком много voooo и не понимая, что на самом деле делают. Я считаю безответственным рекомендовать что-то тогда, честно.
Preexo
0

sndbuf и rcvbuf исправляют параметр ANCIENT в linux / unix / openvpn, начиная с дней коммутируемого доступа, для выбора более медленных настроек, даже если ОС оптимизирована для более быстрых

sndbuf / rcvbuf со значением 0 будет просто использовать настройки ОС

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

Джек
источник