Date: Mon, 17 Sep 2007 16:38:33 -0400 From: Richard Coleman <rcoleman@criticalmagic.com> To: Andrew Thompson <thompsa@FreeBSD.org> Cc: freebsd-pf@freebsd.org Subject: Re: Questions about filtering bridges Message-ID: <46EEE5C9.8050103@criticalmagic.com> In-Reply-To: <20070917202951.GF2742@heff.fud.org.nz> References: <46EDE839.8060501@criticalmagic.com> <20070917202951.GF2742@heff.fud.org.nz>
next in thread | previous in thread | raw e-mail | index | archive | help
Andrew Thompson wrote: > On Sun, Sep 16, 2007 at 10:36:41PM -0400, Richard Coleman wrote: > >> I'm setting up a filtering bridge and have a couple questions. >> Hopefully someone here can help. I've looked at all the docs online >> (and lots of Google searches) but there isn't much recent info on >> filtering bridges. >> >> The setup is pretty simple: fxp0 is external and fxp1 is internal. >> >> # rc.conf >> cloned_interfaces="bridge0" >> ifconfig_bridge0="addm fxp0 addm fxp1 64.45.160.194/28 up" >> ifconfig_fxp0="up" >> ifconfig_fxp1="up" >> >> Question 1: In the Handbook section on bridging, it says that if you >> need to setup an ip address, you should put it on the bridge interface >> (bridge0). But in the OpenBSD docs on filtering bridges, they say to >> put it on the inside interface. What are the consequences of doing it >> either way? >> > > OpenBSD does not support adding an IP address to a bridge interface so > they do not have a choice here. Assigning the IP to the bridge is the > correct way do to it as it is the central piece of the setup. > > >> Questions 2: If I use the following pf.conf (should block everything >> inbound, but allow everything outbound), I notice I'm still able to ssh >> into the bridging firewall itself. Why isn't that blocked? I'm >> guessing it's a consequence of the fact that I put an ip address on the >> bridging interface, but I'm not sure. What am I missing? >> >> # pf.conf >> >> # interfaces >> ext_if="fxp0" >> int_if="fxp1" >> >> # options >> set skip on lo0 >> set block-policy drop >> >> # normalization >> scrub in on $ext_if all >> scrub out on $ext_if random-id >> >> # external interface, inbound >> # default is to block all inbound on external interface >> block in log on $ext_if all >> > > This is because the _bridge_ is the interface that the packet arrives > on. Think if the bridge as a fully functioning interface, what you need > is: > > bridge_if="bridge0" > block in log on $bridge_if all > > > regards, > Andrew > I was confused because the if_bridge(4) man page (for 6.2) says that traffic always passes first through the originating interface (which I took to be the external physical interface), then passes through the bridge interface, and then through all appropriate outbound interfaces. So I assumed a block rules for the first physical interface would prevent the packet from every reaching the bridge interface. Given that wording, I was confused why you would ever need to filter on the bridge interface itself. Thanks for the help. Richard Coleman rcoleman@criticalmagic.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?46EEE5C9.8050103>