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

Webで見つけたものから、MTUとMSSFIXにいくつかの変更を加えました。

カーネルに変更を加えることはできますか?これはCentOS 6.xボックスです。私はBSDベースのものをいくつか見つけましたが、Linuxではうまくいきませんでした。

TCPの方がUDPより遅いことはわかっていますが、ネットワークのファイアウォールを通過するには、SSLトラフィックのように見える必要があります。

他のアイデア?

RDPを実行するネットワーク上の別のクライアントにPINGを送信します。

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

パフォーマンスを改善したり、pingをドロップしたりする方法はありますか?

編集:断片化設定を設定すると、いくつかの助けになりますか?


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*私が明確にするFAQの条件に違反する可能性があります。
prateek61 2013年

1
それについて違法なものは何もありません。これは、自分のシステムにリモートでアクセスする唯一の方法です。:)

2
どこにいてもファイアウォールポリシーをバイパスすることについてもっと話していました。ネットワーク管理者にポートを開くように依頼できないのはなぜですか?私は合法性についてではなく、セキュリティポリシーの回避について話していました。
prateek61 2013年

たぶんsshuttle TCPオーバーのTCP VPNのためにあなたのために良い仕事でしょう
ptman

回答:


13

短い答え:無効にしcomp-lzoます。

これは古い投稿だと思いますが、OpenVPNのパフォーマンスの低下にも悩まされていました。私はMTUの調整、sndおよびrcvバッファーの変更、mssクランプなど、すべてを試してみました。CPU負荷はごくわずかです。

気まぐれで、圧縮を無効にし(comp-lzoクライアントとサーバーから削除)、パフォーマンスが2〜4倍向上しました。

したがって、comp-lzo有効にした場合の最大パフォーマンスは約25〜30 Mbit / sでしたが、それがない場合は120 Mbit / s(インターネット接続速度)に達しました。

サーバーはXeon E5-2650、クライアントはCore i5-3320Mです。どちらもOpenVPN 2.3.10、AES-256-CBC、SHA512を実行しています。インテルChromebookもインターネット速度を最大限に利用しました。Androidクライアントではパフォーマンスが2倍になり(14 Mbit / s-> 30 Mbit / s)、IKEv2トンネル速度と一致しました。


6

TCP -over-TCPの問題が原因で、TCPはUDPよりも/かなり遅くなります。基本的に、TCPは接続パラメータを識別するためにパケットのドロップ/輻輳に依存しており、TCP-over-OpenVPN接続ではこれらのどちらも発生しません。しかし、それは選択肢ではないと述べました。

またmtu-disc、接続に最適なMTU設定を自動的に検出するオプションを試すこともできます。イーサネットヘッダーのサイズを含むOpenVPNのMTU設定など、さまざまな場所でわずかな不一致があります。[ 1 ]

あなたのtun-mtu65キロバイトのパケットは、インターネットを経由する待ち時間の問題(IPv4のジャンボパケットのサイズが9000バイトの周りで、ローカルネットワーク上のほとんどの作業)の多くを持っているとしているとして設定は、大規模です。代わりに、1300などの1460未満を試して、MTUが問題かどうかを確認してください。


2
おかげで、OpenVPNでpostgresql-queryが機能するという私の問題は解決しました。単一の列に対してクエリを実行するときに機能しましたが、列全体に対しては機能しませんでした。どうやらこれはデフォルトの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%増加しました

これらのポートの1つでサーバーを起動すると、次のようになります。P

お役に立てれば!


9
-1は、Vodooが多すぎて、実際に何が行われているかを理解していない場合。その時、正直に何かを推薦するのは無責任だと思います。
Preexo 2016

0

sndbufおよびrcvbufは、OSがより高速な設定に最適化されていても、linux / unix / openvpnのANCIENT設定をダイヤルアップ日から修正し、低速設定を最適化します。

sndbuf / rcvbufを0に設定すると、OSの設定が使用されます

pushは、クライアントが正しく設定されていることを確認するために使用されますが、そこには値が必要です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.