[Fli4l_dev] Test fli4l 3.10 (r35608) Portforwarding
Stefan Puschek
stefan.puschek at t-online.de
So Dez 14 19:44:11 CET 2014
Hallo Christoph,
..
>> 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'
danke - wird vereinfacht
>> 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.
Vielen Dank für die super-ausführliche Erklärung - das hatte ich so gut erklärt
noch nicht gefunden.
Groetjes
Stefan
Mehr Informationen über die Mailingliste Fli4l_dev