[fast gelöst] policyrouting 2 uplinks, ankommender Traffic

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
frankw
Beiträge: 154
Registriert: 24.10.2018 11:34:33

[fast gelöst] policyrouting 2 uplinks, ankommender Traffic

Beitrag von frankw » 28.02.2019 13:45:35

Hi,

ich versuche gerade policy-routing hinzubekommen. dazu habe ich 2 routingtabellen definiert (aktuell wird aber nur die main und bambit genutzt).

ich habe auf dem router lokal eine ppp-verbindung (anderer Provider) und zusätzlich eine Verbindung (Schnittstelle "wan") zu einer Fritzbox (=> routingtabelle bambit lokal 192.168.178.10 die fritzbox hat die .1).

Code: Alles auswählen

# ip rule show
0:	from all lookup local 
32761:	from 192.168.0.26/32 lookup bambit 
32762:	from 192.168.0.80/32 lookup bambit 
32763:	from 192.168.178.10 lookup bambit 
32764:	from 192.168.10.26/32 lookup bambit 
32765:	from 192.168.178.10 lookup bambit 
32766:	from all lookup main 
32767:	from all lookup default

# ip route show table bambit
default via 192.168.178.1 dev wan 
throw 192.168.0.0/24 
throw 192.168.10.0/24 
throw 192.168.11.0/24

# ip route show
default dev ppp0 scope link 
10.0.3.0/24 dev lxcbr0 proto kernel scope link src 10.0.3.1 
10.0.8.0/24 via 10.0.8.2 dev tun0 
10.0.8.2 dev tun0 proto kernel scope link src 10.0.8.1 
192.168.0.0/24 dev lan0 proto kernel scope link src 192.168.0.10 
192.168.1.0/24 dev lan1.6 proto kernel scope link src 192.168.1.10 linkdown 
192.168.10.0/24 dev ap0 proto kernel scope link src 192.168.10.1 
192.168.11.0/24 dev wlan1 proto kernel scope link src 192.168.11.1 
192.168.50.0/24 dev lan0 scope link 
192.168.178.0/24 dev wan proto kernel scope link src 192.168.178.10 
217.0.118.54 dev ppp0 proto kernel scope link src 93.201.55.228
nach Außen funktioniert es gut (client 192.168.10.26 nutzt bambit, geht auch darüber online, die Antwort kommt auch an). jetzt häng ich an der umgekehrte Richtung. Dazu leite ich port 443 der Fritzbox an meinen Router weiter und dieser (via nat prerouting) an den Webserver (10.0.3.10). die Antwort sehe ich auch

Code: Alles auswählen

13:43:04.535502 IP 10.0.3.10.443 > 80.187.y.x.15757: Flags [S.], seq 2082149433, ack 500112489, win 28960, options [mss 1460,sackOK,TS val 1280395705 ecr 8782053,nop,wscale 6], length 0
nun sehe ich aber, dass die Antwort des Webservers über ppp0 rausgeht, obwohl die anfrage von der ip-adresse des wan-ports (wo die fritzbox dranhängt) kommt...

Code: Alles auswählen

# tcpdump -i ppp0 src port 443
13:29:15.474707 IP 192.168.178.10.https > tmo-106-123.customers.d1-online.com.20479: Flags [S.], seq 851044517, ack 2152005406, win 28960, options [mss 1460,sackOK,TS val 1279566643 ecr 8774018,nop,wscale 6], length 0
die Frage kommt also über wan rein und mit der adresse vom wan-Port auf ppp0 raus.

eigentlich sollte doch "from 192.168.178.10" über die bambit-table gehen...könnt ihr euch das erklären?
Zuletzt geändert von frankw am 10.03.2019 23:42:26, insgesamt 2-mal geändert.

frankw
Beiträge: 154
Registriert: 24.10.2018 11:34:33

Re: policyrouting 2 uplinks, ankommender Traffic

Beitrag von frankw » 02.03.2019 11:50:17

warum das so ist, habe ich herausgefunden (oder denke es zumindest) :)

die IP wird durch NAT gesetzt, aber da es ankommend PREROUTING ist, ist es rausgehend POSTROUTING, also wird zuerst das Interface mittels routing ermittelt (main-routing-table) und danach kommt das NAT...

nun der spannende Teil...kann ich vor dem routing schon festellen, von welchem Uplink das Paket kam und entsprechend zum richtigen routen? aktuell kenne ich nur die from-rules...evtl. lässt sich das mit einer to-rule und der (vor dem routing noch nicht bekannten) lokalen NAT-Adresse bewerkstelligen

frankw
Beiträge: 154
Registriert: 24.10.2018 11:34:33

Re: policyrouting 2 uplinks, ankommender Traffic

Beitrag von frankw » 04.03.2019 19:12:15

ist es evtl. mit sowas in der Art machbar?

https://unix.stackexchange.com/a/71834

verstehe es nicht ganz besonders den letzten Teil.

so wie ich es verstehe nutzt der Ansatz SNAT (kenne ich bisher nicht), um den Traffic zu markieren und die rules greifen dann diese markierung zu, um die jeweilige routing-Tabelle auszuwählen

das scheint ähnlich zu sein:
http://developingrapids.blogspot.com/20 ... tions.html

würde das auch für primär ankommenden Verkehr funktionieren? also packet kommt am wan rein wird per nat weitergeleitet und die Antwort müsste ja die Markierung schon haben (bzw. irgendwie wiederbekommen) um dann auf den richtigen Uplink (von dem die Anfrage kam) geroutet zu werden...

scheint zu funktionieren:

Code: Alles auswählen

wan1=ppp0
wan2=ppp8

iptables -A PREROUTING -t mangle -j CONNMARK --restore-mark
#iptables -A PREROUTING -t mangle --match mark --mark 1 -j ACCEPT
iptables -A PREROUTING -t mangle -i $wan1 -j MARK --set-mark 1
#iptables -A PREROUTING -t mangle --match mark --mark 2 -j ACCEPT
iptables -A PREROUTING -t mangle -i $wan2 -j MARK --set-mark 2
iptables -A PREROUTING -t mangle -j CONNMARK --save-mark

ip rule add fwmark 1 table telekom
ip rule add fwmark 2 table bambit
ich komme über beide uplinks auf meinen webserver (im lxc-container)

frankw
Beiträge: 154
Registriert: 24.10.2018 11:34:33

Re: [fast gelöst] policyrouting 2 uplinks, ankommender Traffic

Beitrag von frankw » 10.03.2019 23:42:12

Hallo nochmal...

das Ganze funktioniert nur mit TCP-Verbindungen nicht aber für udp, vermutlich weil da ja keine "Sitzung" existiert...gibt es da auch irgendeine Möglichkeit?

Antworten