Desired behaviour of "ifconfig -alias"

Jeremy Chadwick koitsu at FreeBSD.org
Tue Feb 13 21:32:41 UTC 2007


On Tue, Feb 13, 2007 at 09:36:25PM +0100, Oliver Fromme wrote:
>  > > # ifconfig re0
>  > > re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>  > >         options=1b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING>
>  > >         inet 88.198.44.136 netmask 0xffffffe0 broadcast 88.198.44.159
>  > >         inet 88.198.173.154 netmask 0xfffffff8 broadcast 88.198.173.159
>  > >         inet 88.198.173.155 netmask 0xfffffff8 broadcast 88.198.173.159
>  > >         inet 88.198.173.156 netmask 0xfffffff8 broadcast 88.198.173.159
>  > >         inet 88.198.173.157 netmask 0xfffffff8 broadcast 88.198.173.159
>  > >         inet 88.198.173.158 netmask 0xfffffff8 broadcast 88.198.173.159
>  > > 
>  > > > In that situation, wouldn't deleting the primary IP
>  > > > cause connection issues for the rest of the IPs?
>  > > 
>  > > No.  I can delete _any_ of the above IP addresses, and the
>  > > others would still work perfectly fine.  I already did
>  > > things like that (on a different machine).
>  > 
>  > Yes, but each of the IPs is on their own subnet.
> 
> No, please look closer.  The addresses above are all in the
> same subnet (except for the first one).  It's a /29 subnet
> in this case, but it works exactly the same with /24 or any
> other subnet masks.

Your configuration looks incorrect.  How or why it's working is
proof that the implementation (read: source code) differs from
what some of the docs state.  My guess is that it's working
because you already have 

AFAIK, it should be (note alias entries 2,3,4):

ifconfig_re0="inet 88.198.44.136 netmask 255.255.255.240"
ifconfig_re0_alias0="inet 88.198.173.154 netmask 255.255.255.248"
ifconfig_re0_alias1="inet 88.198.173.155 netmask 255.255.255.255"
ifconfig_re0_alias2="inet 88.198.173.156 netmask 255.255.255.255"
ifconfig_re0_alias3="inet 88.198.173.157 netmask 255.255.255.255"
ifconfig_re0_alias4="inet 88.198.173.158 netmask 255.255.255.255"

My guess is that it's working because your routing table
already has an entry for 88.198.173.154/29 which was created
by the first entry.  The remaining aliases on that network
(88.198.173.154/29) utilise that, but should really have
netmasks with all 1s.

ifconfig(8) states you should use 255.255.255.255/0xffffffff
(all 1s) for IP aliases.

The FreeBSD Handbook documents everything I've said quite
clearly:

http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/configtuning-virtual-hosts.html

> As I said, I would have to try that because I haven't used
> the /32 netmask hack for quite some time.  I think it would
> indeed use the first address, i.e. x.x.x.2.

As far as I know it's not a hack.  If it is/was a hack, can
you explain the functional difference between IP aliases
with a 0xffffffff netmask vs. mixed-set-bits, and point to
some past references stating the difference?

-- 
| Jeremy Chadwick                                 jdc at parodius.com |
| Parodius Networking                        http://www.parodius.com/ |
| UNIX Systems Administrator                   Mountain View, CA, USA |
| Making life hard for others since 1977.               PGP: 4BD6C0CB |



More information about the freebsd-stable mailing list