我在运行 Centos 5.7 的 VPS 上通过 UDP 设置了一个 OpenVPN 服务器。客户端在启动时连接到它,如果启动,则获得一个 10.5.5.x 地址。该服务器运行邮件、samba 和 jabber 服务器。OpenVPN 的设置使得客户端可以互相看到,因此 ping、jabber、ssh、scp 等都可以正常工作。tun 接口仅适用于此子网,因此正常的互联网流量不会被路由。所有客户端都是 Ubuntu 11.10。
不过,我遇到了网络流量问题。似乎每当有大量数据需要传输时(scp 对等、向服务器发送较大的邮件附件、通过 Pidgin/XMPP 传输文件、VNC 对等),活动就会超时。至少我认为是这样,因为活动只是挂起。例如:
user@somehost:~$ scp Desktop/ss.png [email protected]:/home/otheruser/Desktop/
ss.png 100% 849KB 848.7KB/s 00:00
然后它就挂在那里了。ctrl-c 不起作用。较小的文件可以毫无问题地通过。将该文件 scp 到服务器,然后将其 scp 到目标对等点就可以了。
VPN 上的 ping 延迟(客户端到服务器)从 90 到 300 毫秒不等,具体取决于客户端。
因此,我希望得到一些关于调整网络设置的指导,以便所有预期的传输都能按预期进行。
答案1
这感觉像是一个 MTU 问题:小文件可以工作,大文件则不行。
openvpn
有一个--mtu-test
选项可以探测链路上的 MTU 大小。您可以运行它。
如果显示的 MTU 小于 1500,您可能需要查看“fragment”和/或“mssfix”选项。
查看文档http://openvpn.net/index.php/manuals/427-openvpn-22.html用于 MTU 相关的选项/讨论。
答案2
我过去做过很多 OpenVPN 速度测试,结果总是我的 CPU 速度过快。由于 OpenVPN 不支持多处理器,因此它只能以一个处理器允许的速度运行。因此,我强烈建议在下载这些大文件时查看服务器的 CPU 使用率。从这里开始,你必须开始调整 server.conf 设置。
- 测试各种加密标准(根据我的测试,我最终使用了 AES-128-CBC 作为最快/最好的加密)
- 测试 udp 与 tcp(我最终使用了 udp)
- 使用较小的 dh 密钥大小(1024 除以 2048)
- 降低日志的详细程度(这将消耗更少的 CPU 并为加密留出更多空间)
- 测试各种设置,例如 rcvbuf、sndbuf、tun-mtu、tun-mtu-extra、mssfix、fragment、fast-io、auth-none(在大多数这些测试之后,我最终只使用了 fast-io,因为其他设置对我的测试速度影响不大)
每个设置都会略有不同,但如果我是你,我会考虑这些事情。不幸的是,我找不到我的实际速度测试文档。