我目前生活在一个封锁了许多网站并且与外界的网络连接不可靠的国家。我在 Linux 服务器上有两个 OpenVPN 端点(例如:vpn1 和 vpn2),用于绕过防火墙。我可以完全访问这些服务器。这很有效,除了我的 VPN 连接上的高包丢失。这种丢包率随时间的变化在 1% 到 30% 之间变化,并且似乎具有低相关性,大部分时间似乎是随机的。
我正在考虑设置一个家用路由器(也在 Linux 上),它维护与两个端点的 OpenVPN 连接,并将所有数据包发送到两个端点两次。vpn2 会将所有数据包从家庭发送到 vpn1。返回流量将直接从 vpn1 发送到家,也可以通过 vpn2 发送。
+------------+
| home |
+------------+
| |
| OpenVPN |
| links |
| |
~~~~~~~~~~~~~~~~~~ unreliable connection
| |
+----------+ +----------+
| vpn1 |---| vpn2 |
+----------+ +----------+
|
+------------+
| HTTP proxy |
+------------+
|
(internet)
Run Code Online (Sandbox Code Playgroud)
为清楚起见:家庭和 HTTP 代理之间的所有数据包都将被复制并通过不同路径发送,以增加其中之一到达的机会。如果两者都到达,则可以静默丢弃第一个第二个。
带宽使用不是问题,无论是在家庭端还是端点端。vpn1 和 vpn2 彼此靠近(3ms ping)并且具有可靠的连接。
关于如何使用 Linux 中可用的高级路由策略来实现这一点的任何指示?