Підвищення продуктивності 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

Чи є якісь способи покращити продуктивність або скинути пінг?

EDIT: Чи допоможе налаштування фрагментації деяким?


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 на роботі? У відповідній примітці це питання, як є, може порушити умови FAQ, які Licensing, legal advice, and *circumvention of security or policy*я б уточнив.
prateek61

1
У цьому немає нічого незаконного. Це лише єдиний спосіб отримати доступ до моїх власних систем дистанційно. :)

2
Я говорив більше про обхід політики брандмауера там, де ви знаходитесь. Чому ви не можете попросити адміністратора мережі відкрити порт? Я не дуже говорив про законність, більше про обхід політики безпеки.
prateek61

Можливо, sshuttle підійде вам краще для tcp-over-tcp
vpn

Відповіді:


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. Мій Chromebook від Intel також знизив швидкість інтернету. Продуктивність у моїх клієнтів Android вдвічі (14 Мбіт / с -> 30 Мбіт / с), що відповідає швидкості тунелю IKEv2.


6

TCP буде / набагато / повільніше, ніж UDP, викликаний проблемою TCP-over-TCP . В основному, TCP покладається на падіння пакетів / перевантаженість пакетів, щоб ідентифікувати параметри з'єднання, а ваші TCP-over-OpenVPN-з'єднання не мають жодного з них. Але ви сказали, що це не варіант.

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

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


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

Сподіваюся, це допомагає!


9
-1 за занадто багато води та не розуміння того, що насправді робить. Я вважаю безвідповідальним щось тоді рекомендувати, чесно.
Preexo

0

sndbuf та rcvbuf виправляють АНЦІЕНТ-налаштування в linux / unix / openvpn з комутованих днів, щоб оптимізувати більш повільні настройки, навіть якщо ОС оптимізована для більш швидких

sndbuf / rcvbuf, встановлений у 0, просто використовуватиме налаштування ОС

push використовується для того, щоб переконатися, що клієнт налаштований належним чином, але там вам потрібно значення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.