我使用这些指令来设置OpenVPN,目标是使用AWS IP地址连接到外部世界,而不是我的ISP分配的IP。
连接成功。 当我ping(从客户端)例如google.com,而连接到我得到的VPN
Pinging google.com [172.217.9.174] with 32 bytes of data: Reply from 172.217.9.174: bytes=32 time=122ms TTL=45 Reply from 172.217.9.174: bytes=32 time=262ms TTL=45 Reply from 172.217.9.174: bytes=32 time=119ms TTL=45 Reply from 172.217.9.174: bytes=32 time=121ms TTL=45
与不使用VPN连接时的ping速度相比要快一些
Pinging google.com [172.217.6.174] with 32 bytes of data: Reply from 172.217.6.174: bytes=32 time=84ms TTL=52 Reply from 172.217.6.174: bytes=32 time=85ms TTL=52 Reply from 172.217.6.174: bytes=32 time=89ms TTL=52 Reply from 172.217.6.174: bytes=32 time=82ms TTL=52
但是,当我尝试在客户端的浏览器中加载网站(例如cnn.com)时,加载几乎总是超时。
我尝试添加
sndbuf 0 rcvbuf 0
到客户端和服务器上的OpenVPNconfiguration,结果相同。
客户端是Windows 10和在AWS Nano实例上运行的服务器Ubuntu 16.04。 在连接尝试期间, top不会在服务器上显示任何重要的负载。
客户端的连接速度降低了300 Mbps / 30 Mbps。
还有什么可以尝试通过OpenVPN实现可用的速度?
由于我目前缺乏声誉,我无法评论。
首先,您是在AWS上设置了哪个可用区域的EC2实例? 我假设一个离你最近的人? 你在AWS中运行VPC吗? 这两个都引入了许多其他可能导致networking性能差的variables。
我怀疑t2.nano对于OpenVPN安装不够健壮。 你遵循的指示明确说使用t2.micro。 根据我的经验,t2.nano的networking性能差,但是t2.micro并不是那么好。
因此,我build议的解决scheme是将实例升级为t2.micro,甚至是t2.medium(暂时),以排除AWS域中的networking性能。
这里是关于EC2networking性能的进一步阅读
这里是关于EC2 vCPU /内存性能的进一步阅读
鉴于上述不能解决问题,我的下一个怀疑将是分裂隧道的一个可能的问题。 你的客户是否强迫所有stream量通过你的隧道? 您可以通过发行route PRINT或tracert google.com来检查。 如果使用route选项,那么你应该看到所有的stream量都被引导到隧道。 如果使用tracert选项,那么你应该看到你的第二或第三跳通过你的VPN。
鉴于上述两个选项之一显示通过VPN的stream量路由,那么你知道分离隧道被禁用。 但是,这并不意味着DNS将按预期工作。 尝试执行nslookup google.com 8.8.8.8 。 这迫使谷歌的公共DNS服务器(8.8.8.8)做域名parsing,而不是你的本地networking,或在AWS内的DNS。 现在发出nslookup google.com 192.168.1.1 ,用本地网关(通常是你的路由器)的IP地址replace192.168.1.1 。 如果这个工作,那么最后一个选项是SSH进入EC2实例,只发出nslookup google.com 。
如果在执行完所有上述操作后,仍然遇到此问题,请回复您在执行上述步骤时所做的任何进一步调查结果。