背景如下:
目前,我们有一个从 A 点连接到 B 点的 OpenVPN 隧道(B 点有一个公共 IP 地址),但如果互联网路由不是最理想的,延迟会非常显著。为了改善延迟,我们的想法是利用地理位置靠近 B 点(C 点)的 AWS EC2 实例上的 VM 来转发(iptables NAT)所有 TCP 数据包,通过利用 AWS 路由,ping 延迟减少了,但我认为 iptables NAT 引入了抖动
原路线如下:
IP A(OpenVPN 客户端)-> IP B(OpenVPN 服务器)通过互联网直接连接,ping 值:300 毫秒
通过EC2进行端口转发后:
IP A(OpenVPN 客户端) -> IP C(AWS EC2 NAT) -> IP B(OpenVPN 服务器)。使用 AWS EC2/IP C 转发后,IP A 到 IP B 的端到端延迟确实大幅降低,最低在 150ms 左右,但偶尔会飙升到 250ms,可能是由于端口转发引入的抖动;而 IP A 到 IP C,以及 IP C 到 IP B 的互联网网络 ping 值非常稳定,总共都在 150ms 左右。有什么优化思路或者更好的实现方法吗?
希望有一种优化措施不需要触及OpenVPN服务器的配置。
先感谢您。
iptables 我使用了以下两行:
iptables -t nat -A PREROUTING -p tcp --dport $AWS_EC2_PORT -j DNAT --to-destination $IP_B:$OPENVPN_PORT
iptables -A FORWARD -p tcp -d $IP_B --dport $OPENVPN_PORT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT