改善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和MSSF​​IX进行了一些更改。

我可以进行任何内核更改吗?这是一个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

有什么方法可以提高性能或减少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条款。
2013年

1
没有什么违法的。这只是远程访问我自己的系统的唯一方法。:)

2
无论您在哪里,我都在谈论绕过防火墙策略的更多信息。为什么不能要求网络管理员打开端口?我并不是在谈论合法性,而是在绕过安全策略。
prateek61

也许Shuttle对于tcp-over-tcp vpn 来说会更好一些
ptman

Answers:


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。我的Intel Chromebook也使我的上网速度最大化。我的Android客户端的性能提高了一倍(14 Mbit / s-> 30 Mbit / s),与IKEv2隧道速度匹配。


6

由于TCP-over-TCP问题,TCP的速度将比UDP慢得多。基本上,TCP依靠数据包丢弃/拥塞来确定连接参数,并且您的TCP-over-OpenVPN连接不会遇到任何一个。但是您已经说过这不是一个选择。

您也可以尝试使用该mtu-disc选项来自动发现连接的最佳MTU设置。在不同的地方会有轻微的不匹配,例如OpenVPN的MTU设置(包括以太网标头的大小)。[ 1 ]

您的tun-mtu设置非常庞大,因为65KB的数据包将在互联网上出现很多延迟问题(IPv4巨型数据包的大小约为9000字节,并且大部分在本地网络上工作)。尝试在1460以下的方法(例如1300)来查看MTU是否是您的问题。


2
谢谢,这解决了我的问题,使Postgresql查询可以在OpenVPN上工作。查询单个列时有效,但不适用于整个列。显然,这是由默认的MTU大小1500引起的。将其设置为1300很有帮助!
Christian Benke

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中的ANCIENT设置,以优化较慢的设置,即使操作系统已针对较快的设置进行了优化。

sndbuf / rcvbuf设置为0只会使用操作系统的设置

push用于确保客户端设置正确,但是需要一个值。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.