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

Lui*_*ado 27 networking internet

我的 PC 共有 4 个 NIC、2 个有线千兆以太网网卡和 2 个无线网卡。(一个 Broadcom 有专有驱动程序,Ralink 有开源软件,比 Broadcom 好得多。)

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

例如,如果我有一个调制解调器的 Internet 连接速度为 1024kB/s,另一个提供 512kB/s 的调制解调器和一个提供 128kB/s 的小调制解调器,在负载平衡和合并所有连接(绑定或​​组合)之后,我可以在例如,使用所有 3 个 Internet 连接作为一个连接的速度为 1664kB/s。

这个问题一直让我很感兴趣。

tro*_*ers 11

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

归根结底,您不能将多个 ISP 用于单个连接……事情并没有那么简单。您能做的最好的事情是尝试在不同的提供者之间均匀地引导新的连接。

这是一个复杂的问题。在完成所有问题的调试之前,您可能最终会撞墙(我确实这样做了)。因此,正如其他海报所建议的那样,您最好仔细考虑自己的愿望有多强烈。


pl1*_*1nk 8

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

  1. 安装:

    sudo apt-get install ifenslave
    
    Run Code Online (Sandbox Code Playgroud)
  2. 加载绑定内核模块

    sudo modprobe bondingle
    
    Run Code Online (Sandbox Code Playgroud)
  3. 配置您的接口:

    sudo vi /etc/network/interfaces
    
    Run Code Online (Sandbox Code Playgroud)

    示例配置,将 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
    
    Run Code Online (Sandbox Code Playgroud)
  4. 重启网络:

    sudo restart networking
    
    Run Code Online (Sandbox Code Playgroud)
  5. 带上/下限界面:

    ifup bond0
    ifdown bond0
    
    Run Code Online (Sandbox Code Playgroud)

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

    bond-mode active-backup
    
    Run Code Online (Sandbox Code Playgroud)

    主动备份绑定模式说明

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

    • 所有绑定模式的说明

    Ubuntu 社区帮助 wiki上的来源和更多信息。

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

  • -1 - 绑定在 LAN 中工作,因为它在第 2 层运行。问题是关于 **负载平衡** 两个独立的 WAN。 (4认同)
  • @pl1nk 我的最后评论。问题显然是关于多个独立的宽带连接。虽然它们可能是一个 ISP,但这并没有改变在第 2 层处理此问题的障碍。 (3认同)

Ana*_*oli 8

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

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

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

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

然后另一种情况是没有中间主机,即从您的 ISP 接口直接连接到世界各地的各种网络服务器。在这种情况下,您能得到的最好方法是在接口之间均匀分布传出连接——即一个 TCP 会话完全通过一个 ISP,第二个会话通过另一个等等。之所以如此,是因为当您建立 TCP 连接时,每个数据包都有源和目标 IP 地址,并且当服务器从另一个未执行 TCP 握手的 IP 接收数据包时,它认为该数据包是错误的并将其丢弃。由于每个 ISP 连接都有自己的公共 IP,因此对于同一个 TCP 会话,您不能通过一个 IP 的一个连接发送一个数据包,而另一个 IP 则通过另一个连接发送另一个数据包。

对于单台计算机,您不会像第一种情况那样实现如此高的聚合带宽利用率,但对于小型办公室来说,这可能是一个很好的解决方案。您可以做的一点点扩展是为特定协议实现自定义解决方案。例如,您可以在网关(可能是同一台计算机)上使用某种代理来下载 http,并请求通过不同 ISP 接口建立不同 TCP 会话的大文件的不同部分。在这种情况下,最终的下载速率将接近组合带宽的 100%。这就像将 ReGet、GetRight 和类似下载器所做的卸载到网关。谷歌“HTTP 206 部分内容”。对于这种情况,我不知道任何开箱即用的开源解决方案,但是有硬件设备可以做到这一点:google '

  • `echo "bonding" >> /etc/modules` `echo -e "alias bond* bonding\noptions bonding max_bonds=10 mode=2 xmit_hash_policy=layer3+4 arp_interval=100 arp_ip_target=10.0.0.1" > /etc/modprobe. d/bonding.conf` (2认同)