Re: Two NICs, same network...

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

 



On Friday 01 June 2007 00:16, semi linux wrote:
> After much investigation, I'm sad to say that none of the suggestions
> worked.  Messing with the routing table seems to be the only way your
> can affect which interface is used to send a given packet.
>
> Let me ask this question another way - How to I setup my machine to
> use one interface (eth0) for ALL traffic with the exception of one IP
> destination/source port (which is on eth1)?
>
> Is this an iptables thing or is it a routing table thing? Can someone
> point me in the right direction?

I'm doing a similar thing, I send all port 80 traffic out using isp2 (eth1)
and everything else on isp1 (eth0).
I use the mark target.

iptables -t mangle -D PREROUTING -s 192.168.0.0/255.255.0.0 -p tcp --dport 80 
-j MARK --set-mark 0x02

then I have set up a different routing table using the tool 'ip'

where BOSTREAMIP is my ip on eth1
and INTIF is  my internal if  eth3

ip rule add from $BOSTREAMIP table bostream
ip rule add fwmark 0x02 lookup bostream

ip route add default via $BOSTREAMGW dev $BOSTREAMIF table bostream
ip route add 192.168.0.0 dev $INTIF table bostream

Perhaps you can use something in my example?
/Tommy Wallberg

> - Gareth
>
> On 5/24/07, semi linux <linuxsemi@xxxxxxxxx> wrote:
> > Sorry for the latent reply on this one guys - I got pulled off this
> > project and after this thread progressed I had a lot of test cases and
> > scenarios to work my way through.  While I haven't finished testing
> > and I'm not sure I adequately explained the situation I think I have
> > found a workable resolution.
> >
> > Adding ETH0 to the bridge just got really compilcated and messy.
> > Packets started to be routed to all kinds of places in different
> > network scenarios and it wasn't the right answer to the problem
> > although it did show quite a bit of promise initially.  With this
> > approach, we also lost the ability to fine-tune the bridge routing and
> > left it up to the STP and other bridge algorithms.
> >
> > Channel bonding is nice, but also not what we were after.  It worked
> > but in certain deployment scenarios we would need eth0 to be on
> > different network(s) from the rest of the machine and the setup of
> > this would be on a case-by-case basis.  this is a little too hands-on
> > for the guys who would be deploying the solution ;-)
> >
> > Finally, we looked into modifying our default routing table.  I
> > _think_ this is going to be our end solution.  I have devised a set of
> > tests and hopefully it will expose any and all bugs that might come
> > from this solution.  Preliminary tests suggest that this will work
> > well and can be easily adapted to suit our installations.
> >
> > thanks for all the help and suggestions guys!  I knew this was
> > possible but I didn't figure on there being 2-3 workable solutions.
> > Means to an end, I guess.  Thanks!
> >
> > - Gareth
> >
> > On 5/9/07, Mark L. Wise <mark@xxxxxxxxxx> wrote:
> > > Is this not a routing issue?
> > >
> > > route add -host 10.1.1.3  gw <eth2 ethernet address> eth2
> > >
> > > This would route all traffic to 10.1.1.3 to eth2
> > >
> > > Mark
> > >
> > > semi linux wrote:
> > > > On 5/8/07, David Lang <david.lang@xxxxxxxxxxxxxxxxxx> wrote:
> > > >> On Tue, 8 May 2007, semi linux wrote:
> > > >> > I've got an odd problem where I've got two NICs on the same
> > > >> > network and I want all traffic to one IP to go out one interface
> > > >> > and all other traffic to use the second interface.  I'm going to
> > > >> > try an simplify my actual setup, because a lot of it makes no
> > > >> > difference to this post...
> > > >> >
> > > >> > I know this has to be a iptables sort of setup since the routing
> > > >> > table can only make a difference on different networks and not
> > > >> > based on looking for a specific IP address.
> > > >> >
> > > >> > The question is:
> > > >> >
> > > >> > eth0 IP: 10.1.1.1
> > > >> > eth1 IP: 10.1.1.2
> > > >> >
> > > >> > target: 10.1.1.3
> > > >> >
> > > >> > (these IPs are just examples, there are no hard-fast rules
> > > >> > surrounding the other possibilities)
> > > >> >
> > > >> > How do I make sure this goes out eth1 instead of eth0?  Do I use
> > > >> > the mangle rule with the physdev module?
> > > >> >
> > > >> > I feel like I'm overlooking something or forgetting my basic
> > > >> > network ideas here...
> > > >>
> > > >> you haven't quite given enough info here
> > > >>
> > > >> if you have target2 10.1.1.4 and you want all traffic to target to
> > > >> go out eth0
> > > >> and all traffic to target2 to go out eth1 then you would want to
> > > >> start out with
> > > >> defining host routes (the routing table _can_ look at specific
> > > >> hosts, not just
> > > >> networks)
> > > >>
> > > >> in addition, I believe that you will need to play around with arp
> > > >> filtering to
> > > >> make sure that each NIC only responds to arp requests for it's IP
> > > >> addresses.
> > > >>
> > > >> if you really only have one remote IP address and two local
> > > >> addresses and you
> > > >> want all communications between the target and  10.1.1.1 to use eth0
> > > >> while
> > > >> all communications between the target and 10.1.1.2 to use eth1
> > > >> things get more
> > > >> complicated
> > > >>
> > > >> you would need to look into packet/connection tagging and iptables
> > > >> routeing
> > > >> decisions.
> > > >>
> > > >> rather then try and go into that right now why don't you try to be a
> > > >> little
> > > >> clearer about exactly what you are trying to do.
> > > >>
> > > >> David Lang
> > > >
> > > > Ok... you asked for the whole thing, here it is (forget my previous
> > > > example):
> > > >
> > > > eth0 - 10.1.1.1
> > > > eth1 - N/A
> > > > eth2 - N/A
> > > > br0 (eth1, eth2) - 10.1.1.2
> > > > target - 10.1.1.3
> > > >
> > > > The bridge (br0) is setup using brctl and seems to work w/o
> > > > problem... The eth1 and eth2 IP addresses really don't matter since
> > > > they are both referenced via the bridge and are set to something
> > > > invalid.  10.1.1.3 is connected via cross-over cable to eth2 port. 
> > > > br0 and eth0 are connected to my network on the same subnet.
> > > >
> > > > What I'd like:
> > > > - all packets (from the network or local) where destination=10.1.1.3
> > > > to be routed to eth2.
> > > > - otherwise, all traffic from the network to use eth0 for I/O.
> > > >
> > > > Basically, I want to specify that ONLY traffic for 10.1.1.3 is to use
> > > > eth2.
> > >
> > > --
> > > Mark L. Wise
> > >
> > > Alpha II Service, Inc.
> > > 1312 Epworth Ave
> > > Reynoldsburg, Ohio 43068-2116
> > > USA
> > >
> > > Office: (614) 868-5033
> > > Fax: (614) 868-1060
> > > Email: mark@xxxxxxxxxx
> > > WEB: www.alpha2.com
>
> !DSPAM:1000,46600600313041053320138!


[Index of Archives]     [Linux Netfilter Development]     [Linux Kernel Networking Development]     [Netem]     [Berkeley Packet Filter]     [Linux Kernel Development]     [Advanced Routing & Traffice Control]     [Bugtraq]

  Powered by Linux