Linux-Routing - So wechseln Sie PCs zwischen mehreren Gateways

709
internet-og

Ich habe einen Linux-Router mit mehreren Gateways (Kabelmodem, PPP, VPN usw.). Wie kann der gesamte Internetverkehr für einzelne Benutzer über verschiedene Gateways weitergeleitet werden?

Hier ein Beispiel: Netzwerkdiagrammbild

Anscheinend muss ich für jede Verbindung individuelle Routingtabellen erstellen, die Verbindungs-GW hinzufügen, die Verbindungs-IP hinzufügen, Benutzer-IP (s) hinzufügen und NAT aktivieren. Dies funktioniert mit PPP, aber nicht mit OpenVPN (Standardkonfiguration, mein Router ist der Client).

z.B:

openvpn --route-nopull --config ~/connect.ovpn & ip route add default via 10.8.0.5 table myvpn ip route add 10.8.0.1/32 via 10.8.0.5 table myvpn ip rule add from 10.8.0.6 table myvpn ip rule add from 192.168.1.3 table myvpn ip rule add from 192.168.1.4 table myvpn iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o myvpn -j MASQUERADE 

In diesem Beispiel kann der Router selbst über 10.8.0.6 (oder jede andere Verbindung einzeln) eine Verbindung herstellen, Clients jedoch nicht.

3
# route -n Kernel-IP-Routing-Tabelle Destination Gateway Genmask Flags Metric Ref Verwendung Iface 0.0.0.0 10.10.10.1 0.0.0.0 UG 0 0 0 Kabel 10.8.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 Kabel xxx26 10.10.10.1 255.255.255.255 UGH 0 0 0 Kabel 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 Lan xxx26 ist der openvpn-Server internet-og vor 6 Jahren 0
# ip rule list 0: von allen Lookup-Adressen lokal 32764: von 192.168.1.3 Lookup myvpn 32765: von 192.168.1.4 Lookup myvpn 32766: von 10.8.0.6 Lookup myvpn 32767: von allen Lookup-Hauptrollen 32768: von allen Lookup-Standardwerten internet-og vor 6 Jahren 0
# iptables -t nat -v -L POSTROUTING -n --line-number Chain POSTROUTING (Policy ACCEPT 37 Pakete, 2856 Bytes) num pkts Bytes Zielprotokoll in Ausgang Quellziel 1 0 0 MASQUERADE all - * myvpn 192.168.1.0 / 24 0.0.0.0/0 internet-og vor 6 Jahren 0

2 Antworten auf die Frage

0
internet-og

Ich habe die Antwort hier gefunden: Routing eines bestimmten Subnetzes in einen VPN-Tunnel

Es kann an meine Situation oder ähnliches angepasst werden. Beachten Sie die clevere route-up.sh, um beim Start Routen in eine neue Tabelle zu kopieren.

0
dirkt

Ein VPN-Tunnel zwischen den Maschinen in Ihrem lokalen Netzwerk und dem Router mit mehreren Gateways ist ein absoluter Overkill.

Verwenden Sie stattdessen VLAN-Tagging, um Ihr LAN in mehrere "Overlays" (die verschiedenen Farben in Ihrem Netzwerkdiagramm) aufzuteilen, stellen Sie sicher, dass jeder Benutzer / Computer mit dem richtigen VLAN verbunden ist, und konfigurieren Sie Ihren Router so, dass er jedes VLAN an das entsprechende Gateway weiterleitet.

Jedes VLAN erscheint als eigener Netzwerkadapter auf dem Router. Unter der Annahme, dass es sich bei dem Router um eine Art eingebettetes Linux handelt, können Sie das Richtlinienrouting verwenden, um die Egress-Netzwerkschnittstelle in die Routingentscheidungen zu integrieren. Es ist normalerweise nicht notwendig, dies zu verwenden iptables, es sei denn, Sie möchten eine Firewall (obwohl aus irgendeinem Grund viele Leute im Internet iptablesfür das Routing zu wollen scheinen ... was einer meiner Lieblinge ist).