Hi,
(originally posted on the forums)
My objective is to protect services on a bhyve host, while allowing traffic
to the bhyve guests to pass to and from them unprocessed, as these each have pf and
their own firewall policies. The host running recent -current.
I know ipfw can process both layer 2 and layer 3 traffic, but pf only processes
layer 3, and to filter on bridge or tap requires layer2, so that is why i want
to use ipfw on the bhyve host.
So we have bridge0 with igb0 tap0 and tap1 as members.
In this example,
igb0 has a mac address of 11:11:11:11:11:11
tap0 has 22:22:22:22:22:22
tap1 has 33:33:33:33:33:33
How can I tell ipfw to pass 22:22:22:22:22:22 and 33:33:33:33:33:33 and apply no
more rules to frames matching those MACs?
Let's say I want to just block on 11:11:11:11:11:11 (igb0) port 22 apart from
10.0.0.0/24, and define that rule with the regular layer3 syntax.
and then want 22:22:22:22:22:22 passing unhindered, unprocessed.
Possible? Looking for a worked example but can't seem to find one
Could it be like "$cmd add allow all from any to any via tap0"
or "$cmd add allow all from any to any via 22:22:22:22:22:22"
or something else?
There are a number of ipfw sysctls. Like
net.link.bridge.ipfw
net.link.bridge.allow_llz_overlap
net.link.bridge.pfil_local_phys
net.link.bridge.pfil_member
net.link.bridge.ipfw_arp
net.link.bridge.pfil_bridge
net.link.bridge.pfil_onlyip
Are any of these needed in my context?
I need to allow based on tap, not the bridge (I guess).
The bridge has the real interface (igb0) as a member as well.
So I think that would preclude me from using the above sysctls.
Is this correct?
--