The purpose of this post is to try and clarify a few basic ideas in packet filtering that I'm having trouble reducing to firm principles in practice.
0. PF lives in the kernel and handles all packets as they pass between NI(C)'s and daemons
1. Packets are identified by the NIC of origin and header information (only!!...?)
2. Header information may be changed by translation rules (rdr and nat)
3. Packets are passed or blocked by tallying the influence of matching rules (...somehow)
4. Special factors affect how these rules are tallied (eg. state, quick, set <options>...? )
I've found it hard to get to the root of how the configuration translates to actual behavior.
Some productive nitpicking would be greatly appreciated.
0. PF lives in the kernel and handles all packets as they pass between NI(C)'s and daemons
1. Packets are identified by the NIC of origin and header information (only!!...?)
2. Header information may be changed by translation rules (rdr and nat)
3. Packets are passed or blocked by tallying the influence of matching rules (...somehow)
4. Special factors affect how these rules are tallied (eg. state, quick, set <options>...? )
I've found it hard to get to the root of how the configuration translates to actual behavior.
Some productive nitpicking would be greatly appreciated.