Multiple Interfaces

Wes Peters wes at softweyr.com
Thu Jul 31 16:06:40 PDT 2003


On Thursday 31 July 2003 11:21, Oleg Polyakov wrote:
> --- Bob <bob at starblanket.ca> wrote:
> > Greets
> >
> > > I have two interfaces and the following info in rc.conf.  The
> > > first one is
> > > setup properly but the second one never gets configured.
> >
> > I just went through this process myself.
> >
> > The word I have is that FreeBSD cannot run two NICs on
> > the same subnet, which is what your included config shows.
> > So try as you may it will not work. I also tested 4.7, 5.0
> > and 5.1 with similar results.
>
> The trick is to configure second interface with netmask
> 255.255.255.255. That interface can't be default gateway. But if
> anything listen to that address than it responds on that address.

Right.  The problem is, you have two interfaces on the same network.  
This isn't an error per se, but only one of them is going to be used 
because there can only be one route to the associated network.

By giving the second interface an all-ones netmask, you've effectively 
placed it into a different network.  This prevents the ifconfig command 
from trying to duplicate the route to the local network.  You can add 
other routes through this interface now, for instance as a dedicated 
interface for another IP network.

What you haven't told us is what you're attempting to accomplish with 
this second interface.

By the way, this topic of conversation is actually more appropriate for 
freebsd-questions, this list is supposedly for discussing 
implementation details on the various FreeBSD network stacks.

> You may see log messages like this:
> arp: 10.13.1.2 is on fxp0 but got reply from 00:00:0c:61:2e:c0 on
> fxp1
>
> To disable it run:
> sysctl net.link.ether.inet.log_arp_wrong_iface=0

Yeah, that'll turn off the messages but not the errors. ;^)

> > Here is a snippet of an email I received on this topic:
> >
> > Begin
> >
> > Well, as long as I can tell, one can't have 2 ifaces on the same
> > subnet on FreeBSD. This seems to be regarded as a feature by the
> > guys who have written the code.

Yup, it is.  In the absence of being able to do something sensible, a 
warning message seems like a good alternative.

> > "It's arguable that it should be
> > done any other way, since it will put questions like  what
> > interface will be used for outgoing segments to the subnet ? etc.

Uh, no, that's exactly the questions that come up when you DO try to 
configure two interfaces on the same network.  Look at it this way: if 
I have two interfaces on a 192.168.1 network and I open a socket, bind 
the local address to INADDR_ANY and the remote address to something 
else on the 192.168.1 network, which interface do I pick for outgoing 
packets?

The dark secret in OpenBSD and NetBSD here is that they always pick the 
same one.  You think you're "load balancing" by putting two interfaces 
in there, but the general truth is that you're just pouring electrons 
into unused hardware unless you've carefully configured the system to 
make use of both interfaces.

> > which will require to manually assign the arp table as log as you
> > have the rest of the nodes of the subnet connected throu some kind
> > of switches or to still have all outgoing connections throu a
> > preferred interface which will require a SRC (IP+MAC) addresses of
> > the other interface and will unnecessary complicated the hole
> > thing". So the result will be a gain in the speed of incoming
> > segments but more load on the system.

This has nothing to the with the ARP table and everything to do with the 
routing table.

> > >What am I missing?
> >
> > All you are missing is the fact FreeBSD cannot handle
> > two NICs the same subnet. OpenBSD does, NetBSD does and Linux does.
>
> That sounds misleading. FreeBSD handles two or more NICS on one
> subnet. You just can't configure them with same netmask or have them
> behave identically.
> Only one can be default gateway.

In point of fact, it's just completely wrong.  I guess it depends on 
what you mean by "cannot handle", it certainly doesn't crash the kernel 
or halt networking or anything like that.  In fact, the first interface 
you brought up continues to work just fine.  FreeBSD does the same 
thing OpenBSD and NetBSD do, it just tells you that you've done 
something stupid while the other two merrily let you configure hardware 
that isn't going to be used.

-- 
         "Where am I, and what am I doing in this handbasket?"

Wes Peters                                              wes at softweyr.com




More information about the freebsd-net mailing list