我一直在努力提高我的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
我从网上find的MTU和MSSFIX做了一些修改。
我可以做什么内核修改? 这是一个CentOS 6.x盒子。 我发现一些基于BSD的东西,但没有任何工作的Linux。
我知道TCP比UDP慢,但我需要能够看起来像SSLstream量通过networking上的防火墙。
其他想法?
PING到我RDP进入的networking上的另一个客户端。
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?
编辑:将设置碎片设置帮助一些?
简短的回答:禁用comp-lzo 。
我意识到这是一个旧的post,但我也遭受了糟糕的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客户端(14 Mbit / s – > 30 Mbit / s)上翻了一番,与IKEv2隧道速度相匹配。
由于TCP-over-TCP问题, TCP将比UDP更慢/更慢。 基本上,TCP依赖于数据包丢弃/拥塞来识别连接参数,而您的TCP-over-OpenVPN连接不会遇到这两种情况。 但是你说这不是一个select。
您也可以尝试mtu-disc选项来自动发现连接的最佳MTU设置。 在不同的地方有轻微的不匹配,比如OpenVPN的MTU设置,包括以太网头的大小。 [ 1 ]
你的tun-mtu设置很大,因为一个65KB的数据包在互联网上会有很多延迟问题(IPv4巨型数据包的大小约为9000个字节,大部分是在本地networking上工作)。 尝试一下1460,而不是像1300,看看MTU是否是你的问题。
即使这可能有点迟,你可以尝试我所做的:
删除所有mss,mtu等相关选项
在您的机构进行端口扫描并select一个UDP端口,一般应该打开53个GRE / 123 NDP端口:
将这些行添加到您的服务器configuration(参考这里 )
#possible bandwidth increase sndbuf 393216 rcvbuf 393216 push "sndbuf 393216" push "rcvbuf 393216"
我不完全了解这些设置,但他们确实有帮助,有人说这有助于很多,根据我的经验,它增加了我的吞吐量+/- 30%
在其中一个端口上启动服务器,你应该很好的去:P
希望这可以帮助!
sndbuf和rcvbuf从拨号日更正linux / unix / openvpn中的ANCIENT设置,以优化较慢的设置,即使操作系统针对更快的设置进行了优化
sndbuf / rcvbuf设置为0将简单地使用操作系统的设置
推是用来确保客户端设置正确,但在那里你需要一个值。