pf wird vor ppp aktiviert - regeln werden nicht angewendet

Nicolinux

Member
Hi,

ich habe bei booten von Openbsd 3.5 folgendes Problem. Ich starte über die /etc/rc.local "ppp -ddial qdsl" den ppp Skript für die Internetverbindung. Da aber beim booten pf vor der rc.local aktiviert wird, kommt diese Fehlermeldung und meine Firewall Regeln werden nicht angewendet:

Code:
[...]
pf enabled
net.inet.ip.forwarding 1 -> 1
starting network
pfctl: DIOCSETSTATUSIF: Invalid argument
[...]
Working in ddial mode
Using interface: tun0
[...]

Ich denke dass es an der "dynamischen" nat Regel liegt:

Code:
nat on $ext_if from $int_if:network to any -> ($ext_if)

$ext_if (tun0) kann nicht aktualisiert werden bevor die Internetverbindung nicht hergestellt wurde und die IP zugewiesen wurde.
Der workaround ist es in der /etc/rc - pf nochmal nach dem die /etc/rc.local gestartet wurde, zu aktivieren (mit pfctl -Fall -f /etc/pf.conf).

Gibt es einen besseren Weg?


Danke

Grüße
Stefan
 
Probier mal es nach inet und inet6 getrennt zu machen, also so:
Code:
nat on $interface_remotenet inet from { <net_localnet>, <net_bridgenet> } to any -> ($interface_remotenet)
nat on $interface_remotenet inet6 from { <net_localnet>, <net_bridgenet> } to any -> ($interface_remotenet)
Bei mir (allerdings noch 3.4) funktioniert das einwandfrei, zuerst werden die pf Regeln geladen und dann viel später erst mittels pptp die Internetverbindung hergestellt. ($interface_remotnet wäre dein $ext_if auch wenn es bei mir auf ppp0 geht anstatt tun0)
Kann mich erinnern dass ich damit auch zuerst Probleme hatte und ich glaube damals was im PF Users's Guide ( http://www.openbsd.org/faq/pf/index.html ) gelesen habe, aber ich finde den Passus nicht mehr. Also sollte obiges nicht klappen wars doch noch was anderes was ich anders gemacht habe...
 
Zuletzt bearbeitet:
So, habs gerade noch mal definitif ausprobiert, es geht wenn man die inet und die inet6 Regeln von einander trennt und nicht das System die IP Version herrausfinden lässt. Allerdings bekomme ich auch, wenn ich sie nicht trenne ne eindeutige Fehlermeldung, dass mehrere Protokoll Versionen in Frage kommen und er deshalb nicht weiss was er tun soll, was bei dir ja anscheinend nicht der Fall ist. Würde mich aber freuen wenn du's ausprobiert hast wenn du mir sagst ob ging, schliesslich werd ich ja auch bald auf 3.5 updaten und dann wäre das gut sowas schon im Vorraus zu wissen ob ich mir da was anderes überlegen muss...
 
Starte PF ueber die ppp.linkup, so hast du keine weiteren Probleme.

Bsp.:
MYADDR:
! sh -c "/sbin/ifconfig pflog0 up"
! sh -c "/sbin/pflogd"
! sh -c "/sbin/pfctl -e -F all -f /etc/pf.conf"
 
Zurück
Oben