通过两个网关将出站stream量负载平衡到单个目的地

在我的局域网中,我有两台使用两个不同ISP提供互联网连接的路由器。 通过将相应的路由器configuration为默认网关,我可以select使用哪个ISP。

互联网连接都是asynchronous的 – 都有很大的下游容量,只有很小的上游容量。 不幸的是我需要大量的stream量来上传video到YouTube。 我想同时使用两个互联网连接,以加快我的Youtube上传。

关于serverfault链接到本文档的许多问题描述了如何设置基于路由的负载均衡。 但是由于我的大部分stream量都是通往相同的目的地(Youtube),这无济于事。

我想在一个或另一个网关上交替发送软件包应该非常简单。 如果所有软件包的IP地址与源地址相同(意味着传入的stream量总是使用相同的接口),那么应该没有问题,是吗? 唯一能让我想到的是NAT,它可能阻止我设置源IP地址。 不幸的是,我还没有ipv6连接,必须与NAT一起生活。

所以问题:

  1. 如何完成出站stream量的负载均衡(Linux)
  2. 使用NAT可以做到这一点吗?

为了能够从两个网关利用上传带宽,您需要将单个上传连接的数据包拆分为Youtube,以便他们将通过这两个网关,然后重新组合成一个连接到Youtube。

一种方法是如果您的调制解调器/路由器和您的ISP支持MLPPP。 但是由于大多数ISP不提供这种服务,还有另一种方法(即使在asynchronous网关上具有不稳定/不稳定的延迟)。

您将需要一个带有两个公共IP的VPS服务器。

从您的路由器设置2个VPN连接到VPS。 每个连接将使用您的每个网关(因此VPS上的2个公共IP)。 这可以通过简单的静态路由来完成,以便每个IP通过每个网关路由。

然后你绑定这两个VPN的顶部,在你的路由器和VPS之间创build一个单一的链接。

然后configuration您的路由器通过绑定接口路由来自您的LAN / PC的所有数据包。

在VPS方面,您必须configurationSNAT才能使来自绑定接口的数据包在互联网上出去。

粗略的图表会是这样的:

----- GATEWAY 1 ----- / \ / \ LAN/PC-------MODEM/ROUTER- - - BONDING - - -VPS SERVER------INTENRET \ / \ / ------ GATEWAY 2 ---- 

我已经使用MikroTik RouterOS实现了上述function,但也可以在Linux上完成(因为MikroTik也是基于Linux的)。

要使绑定在VPN上工作,您需要使用OpenVPN或EoIP(以太网over IP隧道)。

绑定驱动程序将configuration为balance-rr模式(循环模式),以便单个连接的数据包在两个VPN之间进行拆分。

所需的NAT仅仅是一个简单的伪装,在VPS上允许来自LAN / PC的数据包通过VPS IP在互联网上出去。