OpenVPN 服务器数据包丢失

OpenVPN 服务器数据包丢失

我有一个 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

服务器配置:

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 控制台以及在线游戏经常会出现延迟(冻结一秒钟)。

知道是什么原因造成的吗?

答案1

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

ping -M do -s 1500 -c 1 10.8.0.1

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

每次将 1500 的值减少 10,直到 ping 成功。一旦 ping 成功,使用的值就是您应该使用的 MTU。OpenVPN 需要设置一个称为 MSS 的值。MSS 是 MTU 减 40 的值。

例如,如果您的 MTU 为 1460,则您的 MSS 为 1420

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

要设置 OpenVPN 的 MSS,请添加以下服务器配置行(用适当的值替换 1420)。

mssfix 1420

您还可以使用以下配置指令来启用 MSS 自动发现:

tun-mtu 1460
mtu-disc yes

更多信息

相关内容