Are many IP addresses on a single interface a bad thing

ipv6linode

Linode offers nice big /116 (4096) IPv6 address blocks for no additional cost, in addition to the included single IPv4 and IPv6 address per VPS.

Normally, with a run-of-the-mill website not needing SSL, I can point many A records to a single IPv4 address, and configure Apache (or equivalent) to do the right thing, with the Host header getting a browser where it needs to go.

With a site needing SSL, I provision and configure a separate IPv4 address, and point the DNS appropriately, since (assuming no SNI) the web server doesn’t know what certificate to use before the SSL handshake.

All well and good.

I would like to make use of the addresses provided by Linode to make some, and eventually all of these sites IPv6-native, and I’m unsure of the best practices to use for that. Should I follow the same approach for non-SSL hosts? Should I always allocate a separate IPv6 address per host? I haven’t read anything that tells me to take either approach. Maybe there’s an RFC I missed.

However, my plain and simple (hehe) question is this: Given Linode’s only offering a single “physical” interface (eth0), and all additional IPv4/v6 addresses needing to be virtual interfaces on top of it (eth0:0, eth0:1, …), is there a point where I would be better advised to not add any more virtual addresses? Or, assuming the interface hasn’t been saturated by that point, is there no downside to having many (hundreds) of IPv6 addresses as virtual interfaces?

(I may be asking the wrong question [or possibly even multiple wrong questions] here if I’m misunderstanding Linode’s offerings and/or IPv6 in general, but hopefully that’s not the case. 😉

Best Answer

I would think that if you are already doing name based virtual hosting on IPv4 that you'd keep the same config for IPv6 rather than split out a config and IP for each vhost. Of course for SSL sites you'll need to allocate an IP for each which should be very simple on IPv6 as you can add as many IPs to an interface as you want, I don't think you need to create additional named interfaces.

There might be a reason to allocate IPs to each virtual host if you wanted separate packet filter rules or maybe accounting at the network layer where differentiating based on IP would be useful.