3 votes

Équilibrer la charge du trafic sortant vers une seule destination sur deux passerelles.

Dans mon réseau local, j'ai deux routeurs qui fournissent une connexion Internet en utilisant deux FAI différents. Je peux choisir le FAI à utiliser en configurant le routeur approprié comme passerelle par défaut.

Les connexions internet sont toutes deux asynchrones - elles ont toutes deux beaucoup de capacité en aval et peu de capacité en amont. Malheureusement, j'ai besoin de beaucoup de trafic pour télécharger des vidéos sur Youtube. Je veux utiliser les deux connexions Internet simultanément afin d'accélérer mes téléchargements sur Youtube.

Beaucoup de questions sur le lien "serverfault" vers ce document qui décrit comment configurer l'équilibrage de charge basé sur les routes. Mais comme la plupart de mon trafic va vers la même destination (Youtube), cela ne m'aidera pas.

J'imagine qu'il devrait être assez simple d'alterner l'envoi de colis par l'une ou l'autre des passerelles. Si tous les paquets ont la même adresse IP comme adresse source (ce qui signifie que le trafic entrant utilisera toujours la même interface), il ne devrait pas y avoir de problème, n'est-ce pas ? Le seul obstacle auquel je pense est le NAT qui peut m'empêcher de définir l'adresse IP source. Malheureusement, je n'ai pas encore de connexion ipv6 et je dois vivre avec le NAT.

Donc des questions :

  1. Comment équilibrer la charge du trafic sortant (Linux) ?
  2. Cela peut-il être fait en utilisant le NAT ?

2voto

Cha0s Points 2424

Pour pouvoir utiliser la bande passante de téléchargement des deux passerelles, vous devez diviser les paquets de l'unique connexion de téléchargement vers Youtube de manière à ce qu'ils passent par les deux passerelles, puis se réassemblent en une seule connexion pour atteindre Youtube.

Pour cela, il faut que votre modem/routeur et votre FAI prennent en charge le protocole MLPPP. Mais comme la plupart des FAI ne le font pas, il existe un autre moyen (moins stable/robuste, mais sur des passerelles asynchrones avec une latence instable).

Vous aurez besoin d'un serveur VPS avec 2 IP publiques.

Depuis votre routeur, vous établissez 2 connexions VPN vers le VPS. Chaque connexion utilisera chacune de vos passerelles (d'où les 2 IP publiques sur le VPS). Cela peut être fait avec de simples routes statiques de sorte que chaque IP est acheminée par chaque passerelle.

Ensuite, vous faites du bonding au-dessus de ces 2 VPN pour créer un lien unique entre votre routeur et le VPS.

Vous configurez ensuite votre routeur pour acheminer tous les paquets provenant de votre LAN/PC via l'interface de liaison.

Du côté du VPS, vous devez configurer SNAT pour que les paquets de l'interface de liaison sortent sur Internet.

Un schéma grossier serait le suivant :

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

J'ai implémenté ce qui précède en utilisant le RouterOS de MikroTik mais cela peut être fait sous Linux aussi (puisque MikroTik est aussi basé sur Linux).

Pour que le bonding fonctionne au-dessus des VPN, vous devrez utiliser soit OpenVPN, soit EoIP (tunnel Ethernet sur IP).

Le pilote de liaison sera configuré en mode balance-rr (Round Robin mode) afin que les paquets d'une seule connexion soient répartis entre les 2 VPN.

Le NAT nécessaire est une simple mascarade uniquement sur le VPS pour permettre aux paquets de votre LAN/PC de sortir sur Internet avec l'IP du VPS.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X