Ich habe zwei Internetverbindungen von zwei verschiedenen ISPs und muss den Verkehr zwischen den beiden ISPs von und zu meinem Netzwerk verteilen. Ich benutze Debian GNU / Linux.
Mein Setup ist wie folgt -
eth0
(192.168.0.0/24) - Lokales Netzwerk
eth1
(192.168.1.0/24) - ISP # 1
eth2
(192.168.2.0/24) - ISP # 2
Mein lokales Netzwerk ist über eth0 mit diesem Server verbunden und die Box ist der DHCP-Server mit Gateway für alle Maschinen im LAN.
Der Server muss einen Lastenausgleich zwischen den beiden Internetdienstanbietern durchführen und muss auch NAT durchführen.
Ich habe die Routing-Anweisungen auf lartc.org befolgt , benötige jedoch weiterhin Anweisungen, um das NAT-ing ordnungsgemäß durchzuführen .
Jede Hilfe wird geschätzt.
PS - Ich kenne mich mit pFsense aus, muss aber Linux verwenden.
quelle
Antworten:
Ich habe den Lastenausgleich sowohl mit der Methode lartc.org als auch mit der Methode iptables durchgeführt und finde, dass die Methode iptables einfacher zu verstehen und zu implementieren ist. Der einzige Nachteil ist , dass Sie eine ziemlich neue brauchen iptables - Version in der Lage sein zu verwenden Statistikmodul
Nehmen wir ein paar Dinge an:
LAN: eth0: 192.168.0.1/24
ISP1: eth1: 192.168.1.1/24, Gateway: 192.168.1.2/24
ISP2: eth2: 192.168.2.1/24, Gateway: 192.168.2.2/24
So würde ich mit der iptables-Methode vorgehen:
Routentabellen
Bearbeiten Sie zuerst die / etc / iproute2 / rt_tables, um eine Karte zwischen Routentabellennummern und ISP-Namen hinzuzufügen
Die Tabellen 10 und 20 gelten also für ISP1 bzw. ISP2. Ich muss diese Tabellen mit Routen aus der Haupttabelle mit diesem Codeausschnitt füllen (den ich aus hxxp entnommen habe: //linux-ip.net/html/adv-multi-internet.html)
Fügen Sie ISP1 über das Gateway dieses ISP1 ein Standardgateway hinzu:
Machen Sie dasselbe für ISP2
Jetzt habe ich 2 Routentabellen, eine für jeden ISP.
Iptables
OK, jetzt verwende ich iptables, um Pakete gleichmäßig auf die einzelnen Routentabellen zu verteilen. Weitere Informationen zu dieser Arbeit finden Sie hier ( http://www.diegolima.org/wordpress/?p=36 ) und hier ( http://home.regit.org/?page_id=7 ).
NAT
Nun NAT ist einfach:
quelle
Die Antwort von mefat hat mir sehr geholfen, aber anstatt eine einmalige Kopie aller Regeln der Haupttabelle in die beiden ISP-Tabellen zu kopieren, ist es möglicherweise besser, das Regel-Prio zu verwenden, um die Standardregeln nach der Haupttabelle hinzuzufügen.
Richten Sie / etc / iproute2 / rt_tables wie gewohnt ein:
Beachten Sie, dass
Zeigt die Regeln 0-> local, 32766-> main und 32767-> default an. Sehen Sie
man ip
für weitere Details.Entscheidend ist, dass der Routing-Prozess von Low-Prio-Regeln zu High-Prio-Regeln funktioniert ... aber 32767 ist nicht die höchste Regel #. Wenn die Hauptrouting-Tabelle also keine Standardroute enthält (aber möglicherweise alle Arten von sich dynamisch ändernden Routen für VPNs usw. enthält), wird bei Nichtübereinstimmung die Standardroute (normalerweise leer) verwendet und nach höheren Prio-Regeln gesucht.
Siehe den Abschnitt 'throw' hier: http://linux-ip.net/html/routing-tables.html
Also jetzt einrichten
und um sicherzugehen, dass sie sich um den Haupttisch kümmern:
Verwenden
erneut, um sicherzustellen, dass diese Regeln höher sind als main
Dann benutze CONNMARK Mangling, wie Mefat sagte:
Dinge, die zu beachten sind: pppd muss
nodefaultroute
ansonsten in main eingerichtet werden; Beim Neustart eines Geräts werden die ISP1 / ISP2-Tabellen bereinigt. Sie müssen daher mithilfe eines Skripts wiederhergestellt werden.Ich benutze ein Skript in /etc/ppp/ip-{up,down}.d/dual-routing
Dies ist ein verbindungsbasierter Lastenausgleich. Daher werde ich die Verwendung von Load zum Überwachen und Ersetzen der Statistikregel untersuchen:
iptables -t mangle -R PREROUTING <n>
From Userspace. Wenn also eine Verbindung über einen längeren Zeitraum heruntergeladen wird und die andere Verbindung leicht geladen ist, sollten wir die leicht geladene Verbindung vorziehen.quelle