Hallo Gruppe,

heute habe ich mal netzwerktechnisch ein Problem, welches ich mit
vorhandenem Wissen offenbar nicht lösen kann und hoffe hier kann mir
geholfen werden:

Gegeben ist ein Linuxrechner mit iproute2 und netfilter, der zwei ppp
interfaces hat.
ppp0 unterliegt dynamischer IP-Zuweisung
ppp1 bekommt eine feste IP 1.2.3.4 und einen P-t-P 11.22.33.44
eth0 ist die LAN-Seite mit 3.3.3.1
die default Route ist über ppp0 gesetzt

Erreicht werden soll nun, dass HTTPS-Anfragen an ppp1 (also 1.2.3.4) an
einen Rechner im LAN (3.3.3.33) weitergeleitet werden. Das ist ohne zu
Denken mittels iptables, PREROUTING und DNAT ganz einfach aufgesetzt, aber
so gehen die Antwortpakete ja über ppp0 raus und wir haben einen reichlich
undefinierten Zustand.

Sowas hatte ich schon. Gelöst wie folgt:
  echo "88 https" >> /etc/iproute2/rt_tables
  ip route add 1.2.3.4/32 dev ppp1 src 1.2.3.4 table https
  ip route add default via 11.22.33.44 dev ppp1 table https
  ip rule add from 1.2.3.4/32 table https
  ip rule add to 1.2.3.4/32 table https
  ip route flush cache
Offenbar wirkt sich das aber nur sinnvoll auf alles aus, was an an/von lo
kommt/geht - bzw. funktioniert das im Zusammenhang mit dem PREROUTING und
DNAT nicht mehr, denn tcpdump zeigt mit noch immer die Antworten zur
Weiterleitung auf ppp0.

Mit iproute und speziellen Protokollen/Ports hatte ich auch schon mal was
gemacht:
  ip rule add fwmark 84 table 84
  ip route add default via 11.22.33.44 dev ppp1 table 84
und
  iptables -t mangle -A PREROUTING ... -j MARK -set-mark=84
In meinem Verständnis werden hier Pakete durch iptables markiert und für
diese Markierung gilt eine eigene Routingtable.


Nun glaube ich, muss ich für meinen Anwendungsfall, dass eingehendes HTTPS
an ppp1 an den Rechner im LAN geforwarded werden soll und die Antworten dazu
auch über ppp1 wieder raus müssen, sämtlicher anderer HTTPS Verkehr
(LAN2WAN, WAN2ppp0) aber weiterhin über ppp0 abgewickelt werden soll, wohl
beide Varianten "verheiraten". Nur gelingt mir das nicht.

Der erste Teil ist wohl eher unstrittig, weil er funktioniert. Seit ich das
eingerichtet habe, geht auch ICMP und SSH auf ppp1 ;-)
Warum sehe ich aber trotz Umsetzung des zweiten Teils immer noch ausgehende
Antworten auf ppp0, wenn ich HTTPS versuche zu erreichen?

Ich glaube hier immer noch über DNAT zu stolpern, denn:
  tcpdump an ppp1 sieht:
    client-ip:highport -> 1.2.3.4:443 - die eigentliche Anfrage
    client-ip:highport -> 3.3.3.33:443 - das DNAT
  tcpdump an eth0 sieht:
    client-ip:highport -> 3.3.3.33:443 - das DNAT/FORWARD ins LAN hat
funktioniert
    3.3.3.33:443 -> client-ip:highport - die Antwort geht raus
  tcpdump an ppp0 sieht leider:
    1.2.3.4:443 -> client-ip:highport - Maskierung, auf ppp0 mit der IP von
ppp1?

Verliere ich durch DNAT das mark=84? Wie mache ich es richtig?





Mit freundlichen Grüßen / Kind regards
     Ronny Seffner
-- 
Ronny Seffner  |  Alter Viehweg 1  |  01665 Triebischtal

www.seffner.de  |  [email protected]  |  +49 35245 72950


_______________________________________________
Lug-dd maillist  -  [email protected]
https://ssl.schlittermann.de/mailman/listinfo/lug-dd

Antwort per Email an