Tell me more ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

Is it possible (well the real wording should be "Is it correct") to have several IP adresses that belongs to the same subnet, on the same host ?

Here is an example:

#Host 1
eth0   -> 10.0.0.1/24
eth1   -> 10.0.0.2/24
eth1:1 -> 10.0.0.3/24

I have the intuition that this can't work due to routing issues but I'm unable to explain why I think so.

So is this pattern correct ? If yes, is it common ? What can be the problems regarding such a configuration ?

share|improve this question

7 Answers

Yeah, sure, there's literally no problem doing this at all - might need to be a little careful how you setup you default gateway but it really isn't a problem at all. If fact time was when that's how you had to setup multi-site webservers (we're talking a long time ago).

share|improve this answer
Thanks for the anwser. How would I configure this host to be able to communicate from one local address to the other ? In other terms : what should I configure so that I can ping from 10.0.0.1 to 10.0.0.3 ? – ereOn Nov 3 '10 at 15:22
ping should just work - what's your subnet mask? – Chopper3 Nov 3 '10 at 15:31
I'm using a /24. – ereOn Nov 3 '10 at 15:54
should just work ... – Chopper3 Nov 3 '10 at 16:22

There is a somewhat common problem with peoples expectations in this type of setup. With multiple addresses assigned on the same subnet like that typically all outgoing communication will appear to come from a single address.

So responses to incoming connections should be fine. Replies should come from the address that the incoming connection was made to. But if you expect some process, that will be making outgoing connections, to use a specific address other then the first then you will need to make sure that you can specifically configure the IP to bind too in the application.

share|improve this answer

It is possible to do it. I used it before.

I have an application that needs to use different source IP addresses when connecting to a remote server. This is important in my case to overcome the limitation on the number of allowed connections per IP that was imposed by the remote server.

I configured multiple IP addresses on the same interface and my application was configured to use these IPs in round-robin fashion.

share|improve this answer

Yes this will work.

As hinted at in the other answers, the real purpose of doing this is for serving out different services on the different IP addresses.

If you had IIS and Apache on the same machine and you wanted to run them both on port 80, you'd need to set one on 10.0.0.1 and the other on 10.0.0.2 as they both couldn't serve on port 80 of the same IP address.

It really isn't much of a matter of routing as that would only come into play on that machine reaching out onto the network from generic programs like web browsers, ping, etc. In those situations, it is always going to be using the same address as it's source.

In the routing table, the route specifies the interface to use so it would be whichever address is tied to the qualifying route.

share|improve this answer

It's perfectly fine, but doing it as you are - with more than one physical interface in the same subnet connected to the same switch - isn't recommended. Linux generally copes OK with it, but some OSes (eg Solaris) really don't like it.

Put all your addresses on one physical interface (eth0, eth0:0, eth0:1, etc.), and connect only that, If you want to connect multiple interfaces for performance, look into bonding, and then overload the bonded interface (bond0, bond0:0, bond0:1, and so on).

share|improve this answer

I'm going to throw out a bit of a caveat here. Namely, that the usual Linux tools will give you problems. They doesn't handle the multiple interfaces well at all. To do so, you'll have to use iproute2. That's a less common tool than the usual ifconfig/route method. Without it, you're going to see strange and incorrect behavior, like one NIC responding to the others traffic.


--Christopher Karel

share|improve this answer

Having virtual interfaces (eg: eth1:1) in the same subnet that the physical one (eg: eth1) is a very common and useful configuration that pose no particular problem. On the other hand, having more than one physical interface in the same subnet (and worst, in different subnets but in the same broadcast domain) can lead to issues due to indeterministic ARP entries. This applies at least to Solaris and Linux. It is recommended/required to tune the ARP behavior (disable arp on one of the interfaces or configure arp to limit its replies from a physical interface to its matching IP address(es). See http://www.mjmwired.net/kernel/Documentation/networking/ip-sysctl.txt#835 On Solaris, a supported way to configure multiple interfaces on the same subnet would be to use IPMP (IP multipathing). Of course, this restriction doesn't apply if the physical interfaces aren't sharing the same IP stack (eg: Solaris exclusive IP zones) or are isolated by 802.1Q VLAN tagging.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.