web-dev-qa-db-fra.com

Comment fusionner plusieurs connexions Internet en une seule?

Mon ordinateur dispose de 4 cartes réseau, de 2 cartes réseau Ethernet câblées et de 2 cartes réseau sans fil. (Un Broadcom avec des pilotes propriétaires et Ralink avec un logiciel open source, qui fonctionne beaucoup mieux que Broadcom.)

Mon téléphone portable peut partager sa connexion sans fil avec mon PC, mais je dispose également d'une connexion Internet filaire. Donc, j'ai connexions Internet multiples pour accéder à Internet. Comment puis-je fusionner deux ou plusieurs connexions ensemble et les équilibrer afin de profiter d'une expérience Internet unifiée qui correspond à la somme de toutes les connexions Internet qui y sont connectées.

Par exemple, si j’ai un modem avec une connexion Internet de 1024 ko/s et un autre offrant 512 ko/s et un petit 128 ko/s, après équilibrage de la charge et fusion de toutes les connexions (Liaison ou Teaming), je pourrais télécharger à une vitesse de 1664 ko/s en utilisant les 3 connexions Internet comme une par exemple.

Cette question m'a toujours intriguée.

23
Luis Alvarado

Je fais quelque chose comme ça au travail avec Ubuntu 11.04. Nous utilisons l'outil de configuration de pare-feu Shorewall, qui, en plus d'être excellent dans son travail, fournit quelques outils de routage rudimentaires pour plusieurs fournisseurs de services Internet qui pourraient répondre à vos besoins. Vous pouvez trouver quelques documents à ce sujet ici: http://www.shorewall.net/MultiISP.html

En bout de ligne, vous ne pouvez pas utiliser plusieurs fournisseurs de services Internet pour une seule connexion ... les choses ne sont pas si simples. Le mieux que vous puissiez faire est d'essayer de diriger les nouvelles connexions de manière égale entre les différents fournisseurs.

C'est un problème complexe. Vous finirez probablement par frapper votre tête contre le mur (je l’ai certainement fait) avant d’avoir terminé le débogage de tous les problèmes. Ainsi, comme d’autres affiches l’ont suggéré, il serait sage de réfléchir à la force de votre désir.

11
trognanders

Vous pouvez le faire en utilisant le package ifenslave qui connecte et détache les interfaces réseau esclaves à un périphérique de liaison.

  1. Installer:

    Sudo apt-get install ifenslave
    
  2. Module de noyau de liaison de charge

    Sudo modprobe bondingle
    
  3. Configurez vos interfaces:

    Sudo vi /etc/network/interfaces
    

    Exemple de configuration, pour combiner eth0 et eth1 en tant qu’esclaves de votre interface de liaison:

    #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. Redémarrer le réseau:

    Sudo restart networking
    
  5. Montée/descente de l'interface délimitée:

    ifup bond0
    ifdown bond0
    

    Nous utilisons comme exemple plusieurs modes de liaison:

    bond-mode active-backup
    

    Description du mode de liaison actif-sauvegarde :

    Politique de sauvegarde active: un seul esclave de la liaison est actif. Un esclave différent devient actif si, et seulement si, l'esclave actif échoue. L'adresse MAC de la liaison est visible de l'extérieur sur un seul port (carte réseau) afin d'éviter toute confusion avec le commutateur. Ce mode offre une tolérance de panne. L'option primaire affecte le comportement de ce mode.

    Source et plus d'informations sur le wiki d'aide de la communauté Ubunt .

Liaison , signifie la combinaison de plusieurs interfaces réseau (NIC) sur une liaison unique, offrant une haute disponibilité, un équilibrage de la charge, un débit maximal ou une combinaison de celles-ci. Source

8
pl1nk

C'est une question un peu ancienne, mais si vous voulez toujours savoir ..

Il y a 2 scénarios typiques, ce que gertvdijk et pl1nk discutaient dans l'une des réponses:

Vous avez un ordinateur avec 2 adresses IP publiques (2 fournisseurs d’accès Internet différents) et vous vous connectez à un autre hôte (par exemple, un serveur dans un centre de données doté d’un canal fatal dépassant la bande passante globale des deux connexions ISP de votre ordinateur). Vous établissez donc une connexion de liaison avec l'hôte via vos 2 connexions, puis l'hôte (serveur) sert votre trafic via sa propre connexion Internet. Dans ce scénario, vous pouvez obtenir presque 100% de la bande passante combinée dans les deux sens pour une seule connexion.

Il s’agit d’un cas particulier d’agrégation de liens, de regroupement ou d’agrégation dans lequel plusieurs interfaces de couche 2 (même réseau) sont jointes. Pour ce faire, vous pouvez établir des connexions VPN de couche 2 (tap) sur chaque interface ISP, de l'ordinateur à l'hôte, et les relier entre elles (mode alternatif) pour obtenir une seule interface. Le facteur limitant dans ce scénario est la différence entre les délais (ping) de chaque connexion ISP à l'hôte. Plus ils sont similaires et stables, mieux ce sera. Nous l'utilisons dans l'une de nos installations, cela fonctionne bien. Si vous souhaitez connaître les détails de la mise en œuvre, faites le moi savoir.

Ensuite, autre scénario serait sans hôte intermédiaire, c’est-à-dire une connexion directe de vos interfaces ISP à divers serveurs Web du monde entier. Dans ce cas, le mieux que vous puissiez obtenir est de répartir uniformément les connexions sortantes entre les interfaces - c’est-à-dire qu’une session TCP passe entièrement par un fournisseur de services Internet, une deuxième session par un autre, etc. En effet, lorsque vous établissez une connexion TCP, elle a les adresses IP d'origine et de destination pour chaque paquet et lorsqu'un serveur reçoit un paquet d'une autre adresse IP pour lequel une prise de contact TCP n'a pas été effectuée, il considère le paquet comme erroné et le laisse tomber. Comme chaque connexion ISP a sa propre adresse IP publique, pour la même session TCP, vous ne pouvez pas envoyer un paquet via une connexion depuis une adresse IP et une autre via une autre connexion avec une autre adresse IP.

Vous n'obtiendrez pas une utilisation de la bande passante globale aussi élevée pour un seul ordinateur qu'avec le premier scénario, mais pour un petit bureau, cela pourrait être une bonne solution. Ce que vous pouvez faire pour l'étendre un peu, c'est mettre en œuvre des solutions personnalisées pour des protocoles spécifiques. Par exemple, vous pouvez avoir une sorte de proxy sur la passerelle (qui peut être le même ordinateur) pour les téléchargements http et demander différentes parties d’un fichier volumineux établissant différentes sessions TCP via différentes interfaces ISP. Dans ce cas, le taux de téléchargement résultant serait proche de 100% de la bande passante combinée. C'est comme décharger sur la passerelle ce que font ReGet, GetRight et les téléchargeurs similaires. Contenu HTTP 206 partiel de Google. Je ne connais aucune solution open-source prête à l'emploi pour ce scénario, mais il existe des appliances matérielles qui font exactement cela: Google "Réseaux de champignons".

6
Anatoli