Hi,
I have set up an OpenBSD 5.9 machine to act as a router/firewall to selectively
forward traffic between two subnets of its interfaces vic0 and vic1:
,---,
vic0 ---+ forwarder +--- vic1
`---'
I would like to create a read-only monitoring span port vic2 that would receive
all traffic that appears on either interface:
,---,
vic0 -+-+ forwarder +-+- vic1
| `---' |
| |
`--->|--+--|<---'
|
|vic2
(In the diagram above, the ->|- elements allow traffic in one direction only,
as in "block out" pf rules.)
I have attempted to implement this using a bridge with vic0 and vic1 as members
and vic2 as the span port; however the span interface only receives a subset of
traffic because of pf filtering applied by the firewall (the bridge is
filtered). I have also tried more complex designs with per-interface bridges.
The only way I could get this to work is by creating a separate pair of
interfaces (one for each subnet) and using them in the bridge:
,---,
vic0 ---+ forwarder +--- vic1
`---'
vic3 ->|--+--|<- vic4
|
|vic2
Even though this method works (but causes further problems with loops), I would
like to use a simpler/idiomatic approach, which almost certainly exists.
Apart from bridge(4) I also experimented with trunk(4) using broadcast
protocol, but the trunk device did not receive all packets either (it was
mostly silent).
I am aware that I could run two instances of the monitoring application (one
for each interface), but would like to avoid that if possible.
I have researched the internet and man pages and at the moment do not have any
further ideas.
Please let me know what you think.
Thanks,
Igor