Re: [RFC Draft PATCHv2 net-next] Doc: update bridge doc

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks Florian, very appreciate for your comments. I'm not familiar with
the bridge netfilter history and usage. I will summary and update the doc
with your comments in next version(with the other's comments).

Hope you could review it again.

Regards
Hangbin

On Fri, Oct 27, 2023 at 02:31:30PM +0200, Florian Westphal wrote:
> Hangbin Liu <liuhangbin@xxxxxxxxx> wrote:
> 
> [ cc nf-devel ]
> 
> > The current bridge kernel doc is too old. It only pointed to the
> > linuxfoundation wiki page which lacks of the new features.
> 
> Indeed, thanks for taking time to improve the documention.
> 
> > +Netfilter
> > +=========
> > +
> > +The bridge netfilter module allows packet filtering and firewall functionality
> > +on bridge interfaces. As the Linux bridge, which traditionally operates at
> > +Layer 2 and connects multiple network interfaces or segments, doesn't have
> > +built-in packet filtering capabilities.
> 
> No, this is not what this module does.  br_netfilter module should NEVER
> be used.  I'd love to remove it, but its very popular unfortunately.
> 
> Suggestion:
> 
> The bridge netfilter module is a legacy feature that allows to filter bridged
> packets with iptables and ip6tables.  Its use is discouraged.  Users
> should consider using nftables for packet filtering.
> 
> The older ebtables tool is more feature-limited compared to nftables, but
> just like nftables it doesn't need this module either to function.
> 
> The br_netfilter module intercepts packets entering the bridge, performs
> minimal sanity tests on ipv4 and ipv6 packets and then pretends that
> these packets are being routed, not bridged.  br_netfilter then calls
> the ip and ipv6 netfilter hooks from the bridge layer, i.e. ip(6)tables
> rulesets will also see these packets.
> 
> br_netfilter is also the reason for the iptables 'physdev' match:
> This match is the only way to reliably tell routed and bridged packets
> apart in an iptables ruleset.
> 
> Side note:
> 
> You might want to somehow massage the bits below, perhaps it would be
> good to have the historical context as to why br_netfilter exists in the
> first place.
> 
> > +With bridge netfilter, you can define rules to filter or manipulate Ethernet
> > +frames as they traverse the bridge. These rules are typically based on
> > +Ethernet frame attributes such as MAC addresses, VLAN tags, and more.
> > +You can use the *ebtables* or *nftables* tools to create and manage these
> > +rules. *ebtables* is a tool specifically designed for managing Ethernet frame
> > +filtering rules, while *nftables* is a more versatile framework for managing
> > +rules that can also be used for bridge filtering.
> 
> ebtables and nftables will work fine without the br_netfilter module.
> 
> iptables/ip6tables/arptables do not work for bridged traffic because they
> plug in the routing stack.
> 
> nftables rules in ip/ip6/inet/arp families won't see traffic that is
> forwarded by a bridge either, but thats very much how it should be.
> 
> br_netfilter is only needed if users, for some reason, need to use
> ip(6)tables to filter packets forwarded by the bridge, or NAT bridged
> traffic.
> 
> Historically the feature set of ebtables was very limited (it still is),
> so this module was added to pretend packets are routed and invoke the
> ipv4/ipv6 netfilter hooks from the bridge so users had access to the
> more feature-rich iptables matching capabilities (including conntrack).
> 
> nftables doesn't have this limitation, pretty much all features work
> regardless of the protocol family.
> 
> > +The bridge netfilter is commonly used in scenarios where you want to apply
> > +security policies to the traffic at the data link layer. This can be useful
> > +for segmenting and securing networks, enforcing access control policies,
> > +and isolating different parts of a network.
> 
> See above, for pure link layer filtering, this module isn't needed.



[Index of Archives]     [Netfitler Users]     [Berkeley Packet Filter]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux