[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