Frage zu pfctl -s info

minimike

Berufsrevolutionär
Hi

Ich habe die manpage schon befragt. Wurde aber nicht schlauer. Auf was genau beziehen sich folgende Statistiken bei pfctl -s info?

Code:
State Table  Total  Rate
  current entries  178
  searches  20852698  1558.8/s
  inserts  17266  1.3/s
  removals  17088  1.3/s

Hintergrund ich schaffe es mittlerweile diese Werte in databases/influxdb zu Schreiben. Ich habe zufällig gesehen das net-mgmt/telegraf das kann. Dabei wird pf abgegriffen und anschliessend die Statistik in die Datenbank geschrieben. Das hat dann bei mir Neugierde erweckt. Der overhead ist soweit ich sehe relativ gering. Zecks bauen von Metriken müsste ich aber doch tiefer darin einsteigen. Denn bei z.B. searches auf was genau bezieht sich diese Statistik?

also manpage und https://www.openbsd.org/faq/pf/ hat mir noch nicht geholfen. Wo kann ich noch mehr erfahren?
 
Eigentlich ist der Output selbsterklärend .
Die state table enthält Infos zu den vom Packet Filter akzeptierten Verbindungen, damit nachfolgende Pakete nicht wieder die ganzen pf-regeln durchlaufen müssen .
Searches gibt die Anzahl der suchvorgänge an, current ist die Differenz zwischen inserts und removals.
 
Tut mir leid. Aber für mich ist der output nicht selbsterklärend. Kann man das so interpretieren

inserts sind aktuell zu dem Zeitpunkt alle Verbindungsanfragen?
removals sind aktuell zu dem Zeitpunkt die abgelehnten Anfragen aller Verbindungsanfragen?
current als Differenz der Anfragen die gerade laufen weil nicht abgelehnt?

worauf beziehen sich aber dann exakt searches?
 
State-Table soweit erstmal klar?
searches: es gibt ein Packet (eher ein ACK als ein SYN) und pf schaut zu erst in die state-table (searches) ob das zu einer bestehenden Verbindung gehoert.
inserts: es gibt eine neue, zulaessige Verbindung -> Hinzufuegen zur State-Table
removes: der state laeuft auf einen timeout, oder die Verbindung wird aktive von den peers beendet
 
Das grundlegende Konzept der state table sollte man kennen, wenn man PF nutzt. PF ist ein stateful packet filter, d.h.erlaubte Verbindungen erzeugen einen Eintrag in der state table, die wesentlich schneller durchsucht werden kann als der Regelsatz. Beim Regelsatz geht man glaub ich grob davon aus, dass eine weitere Regel einer weiteren Vergleichsoperation entspricht, abzgl. einiger Optimierungen. Bei der state table entspricht jede Verdoppelung der Anzahl der Einträge einer weiteren Vergleichsoperation.

Der grobe Ablauf, wenn PF ein Paket erhält und prüfen soll, ob es erlaubt wird, ist folgender:

1. existiert ein state? (search++)
falls ja, kann das Paket sofort passieren. Ende
falls nein, wird der Regelsatz konsultiert
2. existiert eine Regel, die das Paket erlaubt?
falls ja, wird ein Eintrag in der state table erzeugt (insert++, current entries++)
falls nein, drop oder reject. Ende
3. Läuft der Timer eines states ab, ohne dass neue Pakete kommen, wird der state entfernt (removal++, current entries--)

Das ist im Prinzip alles.
 
Zurück
Oben