OpenVPN服务器PacketLoss

我有一个OpenVPN的服务器与Debian 8OpenVPN 2.3.14 x86_64-pc-linux-gnu 。 今天我已经意识到丢包了。 我的服务器在TCP端口443上。

 Ping statistics for 144.76.41.103: Packets: Sent = 1135, Received = 1121, Lost = 14 (1% loss), Approximate round trip times in milli-seconds: Minimum = 29ms, Maximum = 961ms, Average = 51ms 

其他属性:

 Ping statistics for 144.76.41.103: Packets: Sent = 1135, Received = 1121, Lost = 70 (5% loss), Approximate round trip times in milli-seconds: Minimum = 29ms, Maximum = 961ms, Average = 51ms 

服务器configuration:

 port 443 float proto tcp dev tun2 ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/1.crt key /etc/openvpn/keys/1.key dh /etc/openvpn/keys/dh2048.pem tls-auth /etc/openvpn/keys/ta.key 0 server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "redirect-gateway def1" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" script-security 3 auth-user-pass-verify "/etc/openvpn/auth.sh" via-env keepalive 20 100 cipher BF-CBC max-clients 100 persist-key persist-tun username-as-common-name log logs/443tcp.log log-append logs/443app.log status status/443tcp_status.log 60 verb 2 mute 15 inactive 1200 comp-lzo reneg-sec 86400 up /etc/openvpn/up.sh 

因此,我在我的应用程序,SSH控制台,当然还有在线游戏中收到滞后(一秒钟冻结)。

任何想法可能导致这一点?

您需要为您的VPN链接设置正确的MTU。 您可以使用ping命令确定值。 从客户端启动ping服务器

 ping -M do -s 1500 -c 1 10.8.0.1 

它可能会说ping: local error: Message too long, mtu=1500

每次减less1500个值,直到ping成功。 一旦ping成功,使用的值就是您应该使用的MTU。 OpenVPN需要一个名为MSS的值来设置。 MSS是MTU减去40的值。

例如。 如果你的MTU是1460,你的MSS是1420

 MSS = MTU - 40 MSS = 1460 - 40 MSS = 1420 

要为OpenVPN设置MSS,请添加以下服务器configuration行(用适当的值replace1420)。

 mssfix 1420 

您还可以使用以下configuration指令打开MSS自动发现function:

 tun-mtu 1460 mtu-disc yes 

更多信息