如何将多个Internet连接合并为一个?

我的电脑总共有4个网卡,2个有线千兆以太网网卡和2个无线网卡。 (一个拥有专有驱动程序的Broadcom和一个使用开源软件的Ralink,它比Broadcom运行得更好。)

我的手机可以无线共享其连接到我的电脑,但我也有一个有线的互联网连接。 所以我有多个Internet连接来访问Internet。 如何将两个或多个连接合并在一起并平衡它们以享受统一的Internet体验,它是连接到它的所有Internet连接的总和。

例如,如果我有一个1024kB / s的Internet连接调制解调器和另一个提供512kB / s的调制解调器和一个提供128kB / s的小调制解调器,在负载平衡和合并所有连接(Bonding或Teaming)后,我可以下载以所有3个互联网连接为例,速度为1664kB / s。

这个问题一直引起我的兴趣。

我在使用Ubuntu 11.04时做了类似的事情。 我们运行Shorewall防火墙配置工具,除了优秀的工作外,还提供了一些基本的多路ISP路由工具,可以满足您的需求。 你可以在这里找到一些关于它的文档: http : //www.shorewall.net/MultiISP.html 。

但是,它是什么,你不能使用多个ISP进行单一连接…事情很简单。 您可以做的最好的事情是尝试在不同的提供商之间平均指导新的连接。

这是一个复杂的问题。 在完成每个问题的调试之前,你可能最终会撞到墙上(我当然会这样做)。 所以,正如其他海报所建议的那样,仔细考虑你的欲望有多么强烈可能是明智之举。

您可以通过使用将从属网络接口连接和分离到绑定设备的包ifenslave来实现。

  1. 安装:

     sudo apt-get install ifenslave 
  2. 加载绑定内核模块

     sudo modprobe bondingle 
  3. 配置您的接口:

     sudo vi /etc/network/interfaces 

    示例config,将eth0和eth1组合为绑定接口的从属:

     #eth0 is manually configured, and slave to the "bond0" bonded NIC auto eth0 iface eth0 inet manual bond-master bond0 #eth1 ditto, thus creating a 2-link bond. auto eth1 iface eth1 inet manual bond-master bond0 # bond0 is the bonded NIC and can be used like any other normal NIC. # bond0 is configured using static network information. auto bond0 iface bond0 inet static address 192.168.1.10 gateway 192.168.1.1 netmask 255.255.255.0 # bond0 uses standard IEEE 802.3ad LACP bonding protocol bond-mode 802.3ad bond-miimon 100 bond-lacp-rate 1 bond-slaves none 
  4. 重启网络:

     sudo restart networking 
  5. 启动/关闭有界界面:

     ifup bond0 ifdown bond0 

    我们使用的示例有几种绑定模式:

     bond-mode active-backup 

    主动 – 备份绑定模式的描述

    主动备份策略:绑定中只有一个从属是活动的。 当且仅当活动从站发生故障时,另一个从站才变为活动状态。 绑定的MAC地址仅在一个端口(网络适配器)上可见,以避免混淆交换机。 此模式提供容错function。 主要选项会影响此模式的行为。

    • 所有绑定模式的描述 。

    来自Ubuntu社区的资源和更多信息可以帮助维基 。

绑定 ,意味着将多个网络接口(NIC)组合到单个链路,提供高可用性,负载平衡,最大吞吐量或这些的组合。 资源

这是一个有点老问题,但如果你还想知道..

有两个典型的场景,gertvdijk和pl1nk在其中一个答案中争论:

您有一台具有2个公共IP(2个不同的ISP)的计算机,并且您连接到另一个主机(例如,数据中心中的服务器,其胖管道大于计算机的两个ISP连接的总带宽)。 因此,您通过2个连接建立与主机的绑定连接,然后主机(服务器)通过自己的Internet连接为您的流量提供服务。 在这种情况下,单个连接可以在两个方向上获得几乎100%的组合带宽。

这是绑定/组合/灵活聚合的特殊情况,其中多个第2层(相同网络)接口连接在一起。 它可以通过在每个ISP接口上建立从计算机到主机的vpn第2层(tap)连接并将它们绑定在一起(循环模式)以具有单个接口来存档。 此方案中的限制因素是每个ISP与主机的连接的延迟(ping)有何不同。 它们越相似和稳定越好。 我们在其中一个装置中使用它,效果很好。 如果您想了解有关如何实施它的详细信息,请告诉我。

然后另一种情况是没有中间主机,即从ISP接口到世界各地的Web服务器的直接连接。 在这种情况下,您可以获得的最佳方法是在接口之间均匀分配传出连接 – 即一个TCP会话完全通过一个ISP进行,第二个会话通过另一个进行,依此类推。 这是因为当您建立TCP连接时,它具有每个数据包的原始IP和目标IP,并且当服务器从另一个未执行TCP握手的IP接收数据包时,它认为数据包是错误的并丢弃它。 由于每个ISP连接都有自己的公共IP,因此对于相同的TCP会话,您不能通过一个连接从一个IP发送一个数据包而另一个通过另一个IP与另一个IP连接。

对于单个计算机而言,您不会像第一个场景那样获得高聚合带宽利用率,但对于小型办公室来说,这可能是一个很好的解决方案。 您可以做些什么来扩展它是为特定协议实现自定义解决方案。 例如,您可以在网关(可能是同一台计算机)上使用某种代理进行http下载,并要求通过不同的ISP接口建立不同TCP会话的大文件的不同部分。 在这种情况下,得到的下载速率将接近组合带宽的100%。 这就像卸载到网关ReGet,GetRight和类似的下载程序。 Google for HTTP 206 Partial Content。 我不知道任何开箱即用的开源解决方案适用于这种情况,但有些硬件设备可以做到这一点:google for mushroom networks。