From: Grant Taylor <gtaylor@riverviewtech.net>
To: lartc@vger.kernel.org
Subject: Re: [LARTC] What I learned about Linux bridging
Date: Thu, 07 Jun 2007 05:50:04 +0000 [thread overview]
Message-ID: <46679C8C.4090202@riverviewtech.net> (raw)
In-Reply-To: <925A849792280C4E80C5461017A4B8A210B83E@mail733.InfraSupportEtc.com>
On 6/7/2007 12:12 AM, Greg Scott wrote:
> The IP Address for br0 is 1.2.3.2. I setup a system at 1.2.3.1 and
> had it ping 1.2.3.2. Everything behaved as expected. With bridging
> turned on, none of the iptables rules made any difference, so I
> commented them out. With the cable plugged into eth0, none of the
> pings replied. Tcpdump on the 1.2.3.2 box didn't even show anything
> coming into br0. Connecting to eth1 or eth2, pings replied and
> tcpdump showed the ICMP going back and forth on br0. Setting br0 to
> 1.2.3.2 and eth1 to 10.0.0.1, my external host could ping both IP
> Addresses when I fudged in appropriate routes on my test system.
Ok, good to know.
The only other thing that I can think of why you might bind your IP
address(es) to the physical interface verses the bridge interface is if
you were not wanting to bridge IP, but some other non routeable
protocol, say NetBEUI. (But why would you want to do that???) In this
scenario, it would be perfectly normal to use a bridging router to
bridge any thing but IP and route IP.
> Here are a couple of my challenges.
>
> I want to block anything coming in from the Internet claiming to come
> from 10/8, or 172.16/12 or 192.168/16. But anything from these
> address blocks from any trusted eth-- interface should be OK. Easy
> to do with pure routing, seems a little more challenging with
> bridging. I think I can whip up some rules, but they depend on
> ebtables filtering by physical eth-- port.
You should be able to easily do this with a few EBTables rules. Just
check the source IP of the packets as they come in eth0.
ebtables -t filter -N bogonsFromNet -P RETURN
ebtables -t filter -A bogonsFromNet -s 10.0.0.0/8 -j DROP
ebtables -t filter -A bogonsFromNet -s 172.16.0.0/12 -j DROP
ebtables -t filter -A bogonsFromNet -s 192.168.0.0/16 -j DROP
ebtables -t filter -A INPUT -j bogonsFromNet
ebtables -t filter -A FORWARD -j bogonsFromNet
(Note: This is untested.)
If I have things correct, this should be a simple chain that checks the
source IP and blocks drops them if they match. The (new) chain its self
has a default policy of RETURN to return back to the chain that jumped
to it.
You might want to expand your bogons list a bit more to include some
more forbidden networks. I.e. Test Net 192.0.2.x/24... RFC 3330 is
your friend in this matter.
> I have a public /24 block, call it 1.2.3.nnn. Some of these are on
> eth0, some on eth1, a few others on eth2. Bridging seems to handle
> this nicely. eth0 faces the Internet. I am a little nervous in
> packaging all this. Let's say something goes haywire in startup,
> before I run the brctl stuff. Or let's say something bad happens and
> bridging goes haywire. If eth0 has no IP Address, I have no remote
> access to the box. So I'd like to at least give an IP Address to
> eth0. This seems to work, but like I said, it's not documented to
> work. It just hit me what's bugging me - it bugs me to give an IP
> Address to a logical device and cut off any kind of fallback access
> to the physical device. Maybe I'm looking for trouble that's not
> there and creating problems I don't need just because bridging is so
> new in my little world. I wonder what others have done in this
> situation?
I don't think you are being too paranoid, but I think you should be
aware of something I have run in to in my own testing.
If I have eth0 up with an IP address w.x.y.z and I am connected to it
(via ssh) and I enslave it to a bridge (bri0) (I like 3 letter / 1
number device names) my connection goes dead. I have to try
reconnecting or log in to console and move the IP to the bridge. Well,
at least I think that's what I have to do, it's been too long sense I
last did it and I don't remember the details. You may want to play with
this. The reason that I bring it up is that I think an IP address on
the ether interface is different than an IP address on the enslaved
ether interface. Your mileage may vary. What I'm worried about is that
if the bridging code is seeing the traffic before the system's IP stack
sees it (supported by the fact that you can use EBTables to filter it),
you are still passing through the bridging code even with the IP address
on the enslaved ether interface.
I have personally used bridging extensively for the past 4+ years and
I've been ABSOLUTELY THRILLED with it. I have some systems with four
interfaces bridged together with all IPs on the bri0 interface. I have
another system that is 802.1q trunking to a Layer 2 managed switch with
25+ VLAN interfaces on the trunk. I'm then bridging the 25+ VLANs plus
the enslaved ether interface in one bridge with the IP bound to bri0. I
then have EBTables dividing up what access each VLAN has. Specifically,
each VLAN can communicate with the bri0 interface and the bri0 interface
can communicate with all VLANs, but the VLANs can not communicate with
each other. I even threw in ARP tables and EBTables to masquerade MAC
addresses b/c the managed switch that I was working with could only see
any given MAC on one VLAN. Let's just say this was fun to set up. In
the end, the system has been up and running with out problems at multi
megabit speeds for 3+ years.
> And then there's my PPTP clients. I give these guys a 10.0.0.xxx IP
> Address with a gateway of 10.0.0.1. This was all part of the eth1
> LAN when it was a pure router. I suppose in this bridging setup, I
> could make 10.0.0.1 an alias for br0 and leave eth1 with no IP
> Address. This just takes a little getting used to I guess.
I don't think you should be scared of bridging and / or EBTables. With
them you can do a LOT of things you could not do other wise.
Grant. . . .
_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc
next prev parent reply other threads:[~2007-06-07 5:50 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-06 23:51 [LARTC] What I learned about Linux bridging Greg Scott
2007-06-07 2:06 ` Grant Taylor
2007-06-07 5:12 ` Greg Scott
2007-06-07 5:50 ` Grant Taylor [this message]
2007-06-07 6:55 ` Greg Scott
2007-06-07 14:21 ` Grant Taylor
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=46679C8C.4090202@riverviewtech.net \
--to=gtaylor@riverviewtech.net \
--cc=lartc@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.