Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 13 Jan 2003 09:31:00 -0500
From:      Bill Moran <wmoran@potentialtech.com>
To:        Anand Buddhdev <arb@anand.org>
Cc:        questions@freebsd.org
Subject:   Re: Multiple network cards with IP addresses in the same network
Message-ID:  <3E22CDA4.4010401@potentialtech.com>
References:  <20030113114954.GQ1330@anand.org> <3E22B6B4.70401@potentialtech.com> <20030113141031.GA11679@anand.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Anand Buddhdev wrote:
> On Mon, Jan 13, 2003 at 07:53:08AM -0500, Bill Moran wrote:
> 
>>>I have a FreeBSD 4.7 system, with 3 ethernet cards. The first two
>>>are recognised as fxp0 and fxp1 and the second as em0 (intel gigabit
>>>card). I configured the em0 with address 192.168.0.1/24. I then wanted
>>>to configure fxp0 with the address 192.168.0.2/24, and also connect it
>>>to the switch so that I can connect to the server via both addresses.
>>>However, FreeBSD's ifconfig command fails, and won't let me add the second
>>>address to the fxp0 interface. I read the manual page about ifconfig,
>>>and read about aliases, where it said that for aliases, I must use the
>>>netmask /32. When I do try to add the second address with a netmask of
>>>/32, it works, but it doesn't make sense to me. How is that interface
>>>going to to know that it is part of a /24 network if I use a /32 netmask?
>>>
>>>Would anyone be kind enough to explain why:
>>>
>>>1. For aliases, I need the /32 mask
>>
>>I didn't know that you did.  I've certainly had aliases that weren't /32
> 
> I have been using linux for about 2 years now. Let me explain why I
> don't understand.

Well, first off, I misunderstood your original question.

> I have addresses 192.168.0.1 and 192.168.0.2. I want to run different
> services on the 2 different IP addresses. In a linux system, I do:
> 
> ifconfig eth0 192.168.0.1 netmask 255.255.255.0
> ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0
> 
> So that I have 2 different addresses bound to the same interface.
> 
> On FreeBSD, if I do:
> 
> ifconfig fxp0 192.168.0.1 netmask 255.255.255.0
> ifconfig fxp0 192.168.0.2 netmask 255.255.255.0 alias
> 
> That fails.

It should, it creates an ambiguous network situation.
Also, I don't understand why you would want to do this.

> The ifconfig manpage states that a nonconflicting netmaks must be used
> for the alias, and suggests to use 0xffffffff. I don't understand why,
> because I don't see why one network interface cannot have more than one
> address bound to it within the same network. If I use a /32 netmask for
> the alias address, how will the kernel respond to arp requests for that
> alias address?

What would you expect it to do that would be unusual?
If you really want two IPs on the same subnet on the same NIC, then use
a /32 subnet for one.  What's it going to hurt?

>>>2. Adding a second IP to a *different* network card in the same server
>>>does not work if the second IP is within the network of the first one.
>>
>>Because it breaks routing and the basic concept of IP addys and netmasks.
>>If you have two NICs on the same network, how is the kernel supposed to
>>route packets?
> 
> I still don't understand. In a linux system I can do:
> 
> route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.0.254 dev eth0
> route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.0.254 dev eth1

Just because you can do it on a Linux system doesn't mean it's right.

> This adds 2 default routes in the linux kernel, telling it to route
> packets to the outside world using either network interface, where eth0
> has address 192.168.0.1/24 and eth1 has address 192.168.0.2/24. What's
> wrong with that?

It's ambiguous.  Where does the kernel route to when there are two possible
routes?  There's really no reason for such a thing.

>>If you want this setup as a failover solution, there are other ways.
>>There's a program in the ports (I can't remember the name, you'll have to
>>do some research) that will monitor an interface, and if it becomes non-
>>responsive, run a script of your choosing.  Thus, you can have it start
>>up the other network card if the first fails.
> 
> Ok, I understand that, and it may be a very useful program, *if* you
> want to bring up the other interface with perhaps the same IP address.

Well, it's useful for other reasons as well, but it doesn't apply to your
situation.  I suggested it because I didn't understand what you were
asking before.

> All I want to do is to have 2 different IP addresses on each of the
> different interfaces in the server, where the addresses are in the
> same network. I can do it in linux. Why can't I do it in FreeBSD?

Because you shouldn't do it.

>>If failover isn't what you're looking for, then I'd reconsider your
>>network topology.  It doesn't really make sense to have 2 NICs with the
>>same network number in one machine.
> 
> 
> Why not? I haven't seen any such warning in my IP networking books
> or courses.

My answer to your question is:
1. Why would you WANT to do that?  I don't care if Linux, Windows and everyone
    but FreeBSD _allows_ you to, the reason for it escapes me.
2. If you reall _do_ want to do that, use a /32 netmask as required.  If that
    doesn't work for you for some reason, then the answer to your question is
    beyond my expertise.

-- 
Bill Moran
Potential Technologies
http://www.potentialtech.com


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3E22CDA4.4010401>