Meningkatkan Kinerja OpenVPN

10

Saya sudah mencoba untuk meningkatkan kinerja OpenVPN saya dan ini adalah pengaturan saya saat ini:

 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

KLIEN:

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

Saya membuat beberapa perubahan pada MTU dan MSSFIX dari apa yang saya temukan di web.

Apakah ada perubahan kernel yang bisa saya lakukan? Ini adalah kotak CentOS 6.x. Saya menemukan beberapa hal untuk berbasis BSD tetapi tidak ada yang berhasil untuk Linux.

Saya tahu TCP lebih lambat daripada UDP tetapi saya harus dapat terlihat seperti lalu lintas SSL untuk mendapatkan melalui firewall di jaringan.

Ide lain?

PING ke klien lain di jaringan yang saya masuki 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

Apakah ada cara untuk meningkatkan kinerja atau menghentikan beberapa ping?

EDIT: Apakah pengaturan pengaturan fragmentasi membantu?


sumber
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.Mengapa tidak meminta administrator jaringan Anda untuk membuka port openvpn di tempat kerja? Pada catatan terkait, pertanyaan ini karena dapat melanggar ketentuan FAQ yang Licensing, legal advice, and *circumvention of security or policy*akan saya klarifikasi.
prateek61
1
Tidak ada yang ilegal tentang itu. Ini satu-satunya cara untuk mengakses sistem saya sendiri dari jarak jauh. :)
2
Saya berbicara lebih banyak tentang melewati kebijakan firewall di mana pun Anda berada. Mengapa Anda tidak bisa meminta administrator jaringan untuk membuka porta? Saya tidak benar-benar berbicara tentang legalitas, lebih lanjut tentang menghindari kebijakan keamanan.
prateek61
Mungkin sshuttle akan bekerja lebih baik untuk Anda untuk tcp-over-tcp vpn
ptman

Jawaban:

13

Jawaban singkat: nonaktifkan comp-lzo.

Saya menyadari ini adalah posting lama, tetapi saya juga menderita kinerja OpenVPN yang buruk. Saya telah mencoba segalanya, menyesuaikan MTU, mengubah buffer snd dan rcv, penjepit mss, apa saja. Beban CPU dapat diabaikan.

Saat itu, saya menonaktifkan kompresi (dihapus comp-lzodari klien dan server) dan kinerja meningkat 2-4x.

Jadi, dengan comp-lzomengaktifkan kinerja maksimal saya sekitar 25-30 Mbit / s, dan tanpa itu saya menekan 120 Mbit / s (kecepatan koneksi internet saya).

Server adalah Xeon E5-2650, klien adalah Core i5-3320M. Keduanya menjalankan OpenVPN 2.3.10, AES-256-CBC, SHA512. Chromebook Intel saya juga memaksimalkan kecepatan internet saya. Kinerja meningkat dua kali lipat pada klien Android saya (14 Mbit / s -> 30 Mbit / s), yang cocok dengan kecepatan terowongan IKEv2.

Ingenium
sumber
6

TCP akan / lebih / lebih lambat dari UDP, yang disebabkan oleh masalah TCP-over-TCP . Pada dasarnya, TCP bergantung pada penurunan paket / kemacetan untuk mengidentifikasi parameter koneksi, dan koneksi TCP-over-OpenVPN Anda tidak mengalami salah satu dari itu. Tapi Anda sudah mengatakan itu bukan pilihan.

Anda juga dapat mencoba mtu-discopsi untuk secara otomatis menemukan pengaturan MTU optimal untuk koneksi Anda. Ada sedikit ketidakcocokan di tempat yang berbeda, seperti pengaturan MTU OpenVPN termasuk ukuran header Ethernet. [ 1 ]

tun-mtuPengaturan Anda sangat besar, karena paket 65KB akan memiliki banyak masalah latensi melalui internet (paket jumbo IPv4 berukuran sekitar 9000 byte, dan sebagian besar bekerja pada jaringan lokal). Cobalah sesuatu di bawah 1460, seperti 1300, untuk melihat apakah MTU adalah masalah Anda.

chronospoon
sumber
2
Terima kasih, itu menyelesaikan masalah saya dengan mendapatkan postgresql-query untuk bekerja pada OpenVPN. Ini berfungsi ketika menanyakan lebih dari satu kolom, tetapi tidak untuk seluruh kolom. Rupanya itu disebabkan oleh MTU-Size standar 1500. Pengaturan ke 1300 membantu!
Christian Benke
2

Meskipun ini mungkin agak terlambat, Anda dapat mencoba apa yang saya lakukan:

hapus semua opsi terkait mss, mtu, dll

lakukan pemindaian port di institusi Anda dan pilih port UDP, umumnya 53 port GRE / 123 NDP harus terbuka:

Tambahkan baris ini ke konfigurasi server Anda (ref disini )

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

Saya tidak sepenuhnya memahami pengaturan ini tetapi mereka tentu saja membantu, beberapa mengatakan itu membantu banyak, dalam pengalaman saya, itu meningkatkan throughput saya dengan +/- 30%

Mulai server pada salah satu port tersebut dan Anda harus siap: P

Semoga ini membantu!

Cybex
sumber
9
-1 untuk terlalu banyak vodoo dan tidak memahami hal-hal apa yang sebenarnya dilakukan. Saya merasa tidak bertanggung jawab untuk merekomendasikan sesuatu, jujur.
Preexo
0

sndbuf dan rcvbuf mengoreksi pengaturan ANCIENT di linux / unix / openvpn dari hari-hari dialup untuk optmimize untuk pengaturan yang lebih lambat meskipun OS dioptimalkan untuk yang lebih cepat

sndbuf / rcvbuf yang diatur ke 0 hanya akan menggunakan pengaturan OS

push digunakan untuk memastikan klien diatur dengan benar tetapi di sana Anda perlu nilai.

mendongkrak
sumber