[Fli4l_dev] Test fli4l 3.10 (r35608) Portforwarding
Christoph Schulz
fli4l at kristov.de
So Dez 14 19:13:31 CET 2014
Hallo!
Stefan Puschek schrieb:
> ich möchte für meinen Asterisk der auf der internen IP 192.168.6.7 läuft
> das Portforwarding einrichten. Dafür habe ich nur 4 zusätzliche Regeln
> eingerichtet:
>
> PF_PREROUTING_N='4' # number of PREROUTING rules
> PF_PREROUTING_1='prot:udp dynamic:10000-10100 DNAT:192.168.6.7'
> PF_PREROUTING_2='prot:tcp dynamic:10000-10100 DNAT:192.168.6.7'
Das kannst du, da die Portbereiche und die Zieladresse identisch sind,
vereinfachen zu:
PF_PREROUTING_1='dynamic:10000-10100 DNAT:192.168.6.7'
> PF_PREROUTING_3='prot:udp dynamic:5060 DNAT:192.168.6.7'
> PF_PREROUTING_4='prot:tcp dynamic:5060 DNAT:192.168.6.7'
Dito:
PF_PREROUTING_2='dynamic:5060 DNAT:192.168.6.7'
> Mir ist nicht ganz klar, was
> der Router defaultmässig mit Paketen macht, die am externen Interface
> ankommen:
Generelle Regel: Das Routing eines Pakets ist nur abhängig von der
_Zieladresse_ (es gibt ein so genanntes "Policy Based Routing", bei dem noch
andere Faktoren eine Rolle spielen können, aber das ist auf dem fli4l
standardmäßig nicht aktiviert):
a) Gehört die Zieladresse zum fli4l-Router, geht's mit der INPUT-Kette der
Firewall weiter, es wird _nicht_ geroutet (wohin auch, das Ziel ist ja
erreicht worden).
b) Gehört die Zieladresse nicht zum fli4l-Router, soll geroutet werden. Um
zu prüfen, ob es erlaubt ist, geht's mit der FORWARD-Kette der Firewall
weiter.
Wenn das Paket also für den Router gemeint ist, dann hängt es von den
Einstellungen der INPUT-Kette ab: Gibt es keine erlaubende oder verbietende
Regel für das Paket, dann wird das getan, was in PF_INPUT_POLICY steht. Wenn
das Paket _nicht_ für den Router gemeint ist, dann hängt es von den
Einstellungen der FORWARD-Kette ab (also von den Regeln in PF_FORWARD_% bzw.
der PF_FORWARD_POLICY).
Die PREROUTING-Kette erlaubt es, noch _vor_ der Entscheidung, ob geroutet
wird oder nicht, die Zieladresse eines Pakets (und bei Bedarf auch den
Zielport) entsprechend abzuändern (deshalb auch der Name PREROUTING -- "vor
dem Routing"). So kann ein Paket, das eigentlich zum Router sollte (und über
die INPUT-Kette gehen würde), doch noch an einen anderen Rechner in ein Netz
hinter dem Router geschickt werden (und die FORWARD-Kette durchlaufen).
> Nimmt er die Pakete automatisch erstmal an und leitet sie dann -
> wenn Portforwardings eingerichtet wurden - nach innen weiter,
> oder muss
> ich ihm auch noch sagen, dass er diese Pakete nicht droppen oder rejecten
> soll?
In der 3.10 führt eine PREROUTING-Regel _automatisch_ zu einer FORWARD-
Regel, welche die Weiterleitung erlaubt. Somit muss die Weiterleitung nicht
explizit in der FORWARD-Kette erlaubt werden. (Das wird in 4.0 anders
geregelt werden, aber das ist ein anderes Thema.) Also musst du nur die
obigen PREROUTING-Regeln verwenden, damit sollte alles wie gewünscht
funktionieren.
Viele Grüße,
--
Christoph Schulz
[fli4l-Team]
Mehr Informationen über die Mailingliste Fli4l_dev