Hi, I am taking this here from freebsd-questions.

I am trying to wrap my head around ifbridge and ipfw.

I upgraded a host from 13.0 to 13.1

Up until now, I used ipfw, bridge and epairs on 13.0 and felt like I knew what I am doing. Now I can not get the system to behave like it
should, so either my mental model is wrong or something changed.
Perhaps someone could help me to understand what I am doing wrong.


Environment
-----------

I can't have a physical interface as member of the jailbridge, because this leaks virtual mac addresses of epair interfaces to the outside world where my hoster looks unkindly on mac-addresses not belonging to the nic of my server. So I have vnet jails behind a common ifbridge. All jails have their default routes point to the bridge-interface of
the host.  The host works as a router.


Tags stopped working across vnet and bridge
-------------------------------------------

On a long running host that is still currently running 13.0 I have
this line in a vnet jail with an epair interface acme_j:

allow tag 128 tcp from me to any 80,443 via acme_j setup uid root
keep-state

On the host I see the tags:

# ipfw -a list 570

00570 112 11276 count tagged 128

On the updated 13.1 machine the host does not see the tags, or I can't
get the host to count them.


General understanding and testing
---------------------------------

Man ifbridge pointed me to pfil. To learn and understand how these
tools interact I put the following rules on the 13.1 host.

count log via em0
count log via bridge0
count log via epair0a

with epair0a being a member of the bridge. If I fetch a file in the
vnet jail containing epair0b the counters of em0 and bridge0
increment, but the counter of epair0a does not increment. Tcpdump -i
epair0a does show the traffic though.

A similar count rule I left in two days ago has counted to 43 packets
3096 since then.  How can that be?


My sysctls are
--------------

net.link.bridge.ipfw: 0
net.link.bridge.allow_llz_overlap: 0
net.link.bridge.inherit_mac: 0
net.link.bridge.log_stp: 0
net.link.bridge.pfil_local_phys: 0
net.link.bridge.pfil_member: 1
net.link.bridge.ipfw_arp: 0
net.link.bridge.pfil_bridge: 1
net.link.bridge.pfil_onlyip: 1

net.inet.ip.fw.dyn_keep_states: 1
net.inet.ip.fw.dyn_keepalive: 1
net.inet.ip.fw.dyn_short_lifetime: 5
net.inet.ip.fw.dyn_udp_lifetime: 10
net.inet.ip.fw.dyn_rst_lifetime: 1
net.inet.ip.fw.dyn_fin_lifetime: 1
net.inet.ip.fw.dyn_syn_lifetime: 20
net.inet.ip.fw.dyn_ack_lifetime: 300
net.inet.ip.fw.dyn_parent_max: 4096
net.inet.ip.fw.dyn_max: 16384
net.inet.ip.fw.dyn_buckets: 8192
net.inet.ip.fw.curr_max_length: 1
net.inet.ip.fw.curr_dyn_buckets: 256
net.inet.ip.fw.dyn_parent_count: 0
net.inet.ip.fw.dyn_count: 1
net.inet.ip.fw.enable: 1
net.inet.ip.fw.static_count: 51
net.inet.ip.fw.default_to_accept: 0
net.inet.ip.fw.tables_sets: 0
net.inet.ip.fw.tables_max: 128
net.inet.ip.fw.default_rule: 65535
net.inet.ip.fw.verbose_limit: 0
net.inet.ip.fw.verbose: 1
net.inet.ip.fw.autoinc_step: 100
net.inet.ip.fw.one_pass: 1

How do I control what traffic on which interfaces ipfw _should_ see
and how do I ask it what it _actually_ sees?


net.link.bridge.pfil_onlyip
---------------------------

Does this setting mean that arp gets filtered?
When does this happen. The docstring says when pfil is enabled. Does this refer to a sysctl being set, and if so which one, or ipfw being
enabled?  I assume that ipfw uses pfil.

Do the pfil settings of net.link.bridge control how it connects to
ipfw or am I barking up the wrong tree?


Sorry for the wild questions. I am just very confused and propably
just missing something very basic.

Thank you in advance.

Markus

--
Markus Graf

Tel.: +49 172 840 26 08
Email: markus.g...@markusgraf.net
Web: markusgraf.net, headhuntertraining.net


Reply via email to