我正在使用一台运行Linux的第一代Apple TV的“服务器”。
我在OpenVPN性能方面遇到了很多麻烦,而这正是我所期望的新的OpenVPN设置。 networking看起来像这样:
Home局域网172.16.1.0/24 VPN客户端(10.8.0.0/24) – > Airport Extreme(转发OpenVPN端口) – > OpenVPN服务器(在OpenVPN端口1294上收听) – > Home iMac – > NAS Box
我正在使用路由,使用以下configuration文件。 路由是在OpenVPN服务器上使用IP Masquerading设置的,因为我无法在我的网关(这是一个Airport Extreme)上创build静态路由)。 请注意,在下面的所有testing中,VPN服务器上的CPU使用率是最小的。
服务器configuration:
port 1294 proto udp dev tun ca privnet/ca.crt cert privnet/server.crt key privnet/server.key dh privnet/dh2048.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt keepalive 10 120 comp-lzo user nobody group nobody persist-key persist-tun status openvpn-status.log verb 4 script-security 2 push "route 172.16.1.0 255.255.255.0" topology subnet route 192.168.163.0 255.255.255.0 10.8.0.2 tun-mtu 1500 fragment 1000 mssfix
我正在运行的testing只使用一个VPN客户端。 没有客户端和服务器configuration中的fragment和mssfix行,性能非常糟糕,以至于在跨两个35Mb FiOS连接进行VPN连接时,我每秒获得一个VNC帧。 当我添加这些线路时,VPN性能得到改善,但仍然非常缓慢。
我更容易的testing案例是SCP性能。
任何人都可以build议做什么,为什么我看到这些巨大不同的速度?
MTU通常是VPN中的问题。 碎片可能会有所帮助,但是您可以尝试降低testing机器上的MTU并testingSCP。
另一件你可能会看到的是NAT。 在内部接口(未encryption的stream量)上执行TCP转储,并确保您看到您期望的IP。 我已经看到一些错误configuration的NAT和路由,这些完全无法实现的性能。
此外,TCPdump会告诉你数据包大小,这是很好的排除故障。
那么这是在黑暗中的一个镜头:与传统的智慧相反,我有一个容易拥塞的连接(ADSL 6 / 0,6Mbit / s),如果OpenVPNstream量封装在一个更好的工作情况TCPstream,而不是UDP数据报。
问题在于内部TCPstream的超时因encryptionstream的UDP数据包丢失(拥塞是主要来源)而发生。 不知怎的,内部TCP通道中的窗口缩放并没有像预期的那样有帮助(它应该缩减为基本的发送 – 等待 – 周期)。
至于诊断:安装wireshark并捕获openvpnstream量和lanstream量,并注意过多的TCP重新传输。 这些是丢包的迹象。 也看看是否有一些路由问题出现在错误的接口或错误的IP(如杰克罗宾逊指出)。
还要尽量把tun-mtu减less到像1300这样无辜的东西。这会伤害到最高速度,但是不会在你遇到问题的地区。
祝你好运,让我们知道,如果你找出原因!
想通了:这是一个问题,无论是硬件或驱动程序,与服务器上的网卡。 “服务器”是运行Linux的第一代Apple TV,由于某种原因,内置的以太网在伪装时performance不佳。 我插入了一个USB千兆以太网encryption狗,一切都很好!
如果我理解你的configuration,我认为,你在服务器的configuration中有这样一行:
push "route 172.16.1.0 255.255.255.0"
这条线是服务器发送给客户端的指令,到子网172.16.1.0/24的路由是通过VPN服务器,这是不对的,不是吗?
其次,我认为你必须在服务器的这一行中设置这一行:
push "route 192.168.163.0 255.255.255.0"
因为这是VPN服务器背后的networking…
你可以检查它,当你连接到VPN服务器,并列出你的路线…