J'ai deux connexions Internet de deux FAI différents et j'ai besoin d'équilibrer le trafic en provenance et à destination de mon réseau entre les deux FAI. J'utilise Debian GNU / Linux.
Ma configuration est comme ça -
eth0
(192.168.0.0/24) - Réseau local
eth1
(192.168.1.0/24) - FAI # 1
eth2
(192.168.2.0/24) - FAI # 2
Mon réseau local est connecté à ce serveur via eth0 et la boîte est le serveur DHCP cum Gateway pour toutes les machines du LAN.
Le serveur doit effectuer un équilibrage de charge entre les deux FAI et doit également effectuer un NAT.
J'ai suivi les instructions de routage sur lartc.org mais j'ai encore besoin d'instructions pour faire le NAT-ing correctement.
Toute aide serait appréciée.
PS - Je connais pFsense mais j'ai besoin d'utiliser Linux.
la source
Réponses:
J'ai fait l'équilibrage de charge en utilisant à la fois les méthodes lartc.org et iptables , et je trouve que la méthode iptables est plus facile à comprendre et à implémenter. Le seul inconvénient est que vous avez besoin d'une version iptables assez récente pour pouvoir utiliser le module statistique
Supposons quelques éléments:
LAN: eth0: 192.168.0.1/24
ISP1: eth1: 192.168.1.1/24, passerelle: 192.168.1.2/24
ISP2: eth2: 192.168.2.1/24, passerelle: 192.168.2.2/24
Voici donc comment je ferais en utilisant la méthode iptables:
Tables de routage
Modifiez d'abord les / etc / iproute2 / rt_tables pour ajouter une carte entre les numéros de table de routage et les noms des FAI
Les tableaux 10 et 20 concernent donc ISP1 et ISP2, respectivement. J'ai besoin de remplir ces tables avec des routes de la table principale avec cet extrait de code (que j'ai pris de hxxp: //linux-ip.net/html/adv-multi-internet.html)
Et ajoutez la passerelle par défaut à ISP1 via la passerelle de ce ISP1:
Faites de même pour ISP2
Alors maintenant, j'ai 2 tables de routage, 1 pour chaque FAI.
Iptables
OK maintenant j'utilise iptables pour distribuer uniformément les paquets à chaque table de routage. Plus d'informations sur la façon dont ce travail peut être trouvé ici ( http://www.diegolima.org/wordpress/?p=36 ) et ici ( http://home.regit.org/?page_id=7 )
NAT
Eh bien, NAT est facile:
la source
La réponse de mefat m'a beaucoup aidé mais plutôt qu'une copie unique de toutes les règles de la table principale dans les deux tables ISP, une meilleure approche peut être d'utiliser la règle prio pour ajouter les règles par défaut après la table principale.
Configurez / etc / iproute2 / rt_tables comme d'habitude:
Notez que
Affiche les règles 0-> local, 32766-> principal et 32767-> par défaut. Voir
man ip
pour plus de détails.Fondamentalement, le processus de routage fonctionnera de règles de faible valeur à des valeurs de valeur élevée ... mais 32767 n'est pas le numéro de règle le plus élevé. Donc, si la table de routage principale n'a pas de route par défaut (mais peut contenir toutes sortes de routes à changement dynamique pour les VPN, etc.), si une correspondance n'est pas établie, elle passe à la valeur par défaut (normalement vide) et recherche ensuite des règles de priorité plus élevées.
Voir la section 'throw' ici: http://linux-ip.net/html/routing-tables.html
Alors maintenant, configurez
et pour s'assurer qu'ils sont regardés après la table principale:
Utilisation
à nouveau pour vérifier que ces règles sont plus élevées que les principales
Utilisez ensuite CONNMARK mangling comme mefat l'a dit:
Choses à noter: pppd a besoin
nodefaultroute
sinon il s'installe dans main; lorsqu'un périphérique redémarre, les tables ISP1 / ISP2 sont nettoyées et doivent donc être restaurées à l'aide d'un script.J'utilise un script dans /etc/ppp/ip-{up,down}.d/dual-routing
Il s'agit d'un équilibrage de charge basé sur la connexion, je vais donc examiner l'utilisation de la charge pour surveiller et remplacer la règle de statistiques:
iptables -t mangle -R PREROUTING <n>
depuis l'espace utilisateur. Donc, s'il y a un téléchargement de longue durée sur une connexion et que l'autre connexion est légèrement chargée, nous devrions préférer la connexion légèrement chargée.la source