Hallo Liste,
Ziel ist auf einem SuSE 11.3, der nur als Router und Maskerading
Firewall fungiert, mit 2 DSL-Verbindungen via pppoe und einer
Netzwerkverbindung zu einem Server mit OpenVPN die VPN-Pakete über die
eine dsl- und die restlichen Pakete über die andere dsl-Verbindung zu
routen.
Auf dem Router ist:
- dsl0 (via eth1): T-COM SDSL mit fester IP
- dsl1 (via eth2): T-COM ADSL mit fester IP
- eth0: zum Server
Das dsl0 soll nur für VPN genutzt werden. Hier sollen sich unsere
Home-Offices Verbinden.
dsl1 soll all unseren Internetverkehr abwickeln.
vpn nutzt udp Port 443.
Für Multiroute hat Lars Müller schon ein gutes Skript gepostet
(Das Ziel "Multiroute" habe ich erst einmal zurückgestellt).
Das Thema sind die Outbound-Pakete, also VPN gegen die default route aus
dsl0 zu senden.
SuSE-Firewall:
- In der SuSE-Firewall unter Maskerading ein Port forward gesetzt:
Von "Fester IP von DSL0:443" nach "Server-IP:443"
Damit kommen die Pakete gut hinein.
Falls das "DNAT" ist, sollte auch der Rückweg über das selbe Interface
gehen, das klappt aber nicht, die Rückpakete gehen via dsl1.
- Einen schönen Trick steht in "Guide to IP Layer Network Administration
with Linux":
Man konfiguriert auf dem Server eine zweite IP (unter Netzwerkkarte
alias). Jetzt richtet man den Port forward auf diese zweite IP.
OpenVPN empfängt also jetzt mit dieser zweiten IP die Pakete und
sollte dort auch Antworten. Dies tut OpenVPN aber nicht, es antwortet
mit der ersten Serveradresse, ausser wenn man ihm mit "local <zweite
Server IP>" in der Konfigurationsdatei sagt, nur auf diese Adresse
zu antworten.
Jetzt kann man auf dem Router Pakete von der zweiten Server-IP auf dsl0
routen.
Ich habe diese Lösung wieder rückgebaut, da ich oft ICMP-Pakete mit "No
route to host" sah und Arp-spoofing vermutete.
Ich wollte ja eigentlich erreichen, daß man über beide dsl Leitungen vpn
Verbinden kann (Multiroute). Das verhindert aber der "local".
Deshalb dachte ich, es ist einfacher, im Router alle VPN-Pakete durch
ihren Quellport auf dsl0 zu routen. Dann brauche ich den Server nicht
modifizieren.
<Schnell-Ende>
- Policy routing von udp Quellport 443 auf dsl0
1) Splitroute aufgesetzt:
Dafür eine neue Routing-Tabelle mit Namen "dsl0" als Kopie der Tabelle
main aufgesetzt, nur daß das default-Route auf dsl0 statt 1 steht:
An Datei "/etc/iproute2/rt_tables" angefügt: "1<tab>dsl0"
ip route show table main | grep -vE "^default" \
| while read ROUTE ; do
ip route replace table dsl0 $ROUTE
done
ip route add default dev dsl0 table dsl0 src $DSL0_IP
Ich habe diese Lösung genutzt, da ich so die Peer-Adressen der pppoe,
die jeweils ein route haben, gleich mit kopiere.
Jetzt diese getestet:
ip rule add table dsl0 prio 20001
Jetzt gehen alle Pakete über dsl0 statt dsl1. VPN verbindet auch.
Gut, test wieder gelöscht:
ip rule del table dsl0 prio 20001
2) Jetzt nur die Pakete mit udp sport 443 auf diese Tabelle:
iptables -A PREROUTING -t mangle -p udp --sport 443 -j MARK \
--set-mark 4
ip rule add from all fwmark 4 table dsl0 prio 20000
ip route flush cache
Mit "iptables -Lv -tmangle" kann man sehen, daß die Pakete über die
Regel laufen. Nur nach dsl0 werden sie nicht geroutet
(Ich teste das mit Wireshark, was überall mitläuft).
Hat hier jemand eine Idee ?
Ich vermute, ich muß an der Firewall etwas drehen oder (oh-nein !) diese
manuell aufsetzen.
Danke für jede Idee,
Harald
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+unsubscribe@opensuse.org
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+help@opensuse.org