12

I have in the past setup small ad hoc LANs which were totally disconnected from the internet and when assigning addresses to the hosts, I could pick whatever made communicating the addresses between humans as easy as possible (and as easy as possible to remember in your head). Not surprising, one of my favourites were to give hosts numbers like 10.1.1.1, 10.1.1.2, 10.1.1.3 etc. Very easy to communicate, and very easy to keep in your head. (Ok, I had almost total freedom on how to choose my addresses. I could of course not use 127.0.0.1 for any of the ethernet interfaces, or use any subnet addresses or broadcast addresses)

While waiting for various parties (enterprises, ISPs etc) to deploy IPv6 (and thus provide a real incentive to use IPv6 in the real world), I'm a bit keen on trying it out by on a small (minimalistic?) scale, simply by repeating the task by setting up a isolated LAN but this time relying on IPv6 to communicate between the hosts. I can, quite freely, pick any IPv6 addresses I like. Almost, at least. I cannot pick ::1 as the address of any LAN interface for example, as that is reselved for the loopback interface. And given all the different ranges of IPv6 addresses that are reserved for all kinds of uses and purposes, I wonder: in this isolated LAN context, what is the best way to pick easy to remember, easy to communicate verbally IPv6 addresses? (Say it is for 3 to 32 hosts or so)

I know this question is a bit academic and probably not something you would run into in a 'real' deployment of IPv6 (be it business or hobby usage). Still I'm curious about the best way to "handcraft" convenient IPv6 addresses, so please don't provide answers which only provides me with a solution which "saves" me from the need to create these IPv6 addresses manually. (Or provide answers that only explains why it is a bad practice manually setting these IPv6 addresses...)

IllvilJa
  • 223
  • 2
  • 7

5 Answers5

13

The address block fc00::/7 has been reserved as a private network by IANA as described in RFC 4193

All you really need to do is assign your network as a /48 out of that, and start addressing. fc00:0001:0001/48 and so on

As far as keeping track of IP addresses goes, I suggest you use either a wiki page or some similar document.
Or a DHCPv6 server that hands out statically assigned leases.

Tom O'Connor
  • 27,480
  • 10
  • 73
  • 148
  • 1
    I hate IPv6. It makes my head hurt. – Tom O'Connor Apr 18 '11 at 20:47
  • 2
    Actually, you don't really need to do any manual addressing, DHCP, or keeping track of IP addresses. IPv6 autoconfiguration would be able to easily handle that unless you're doing web hosting or some other application that lets you assign multiple IP addresses to one network interface. – Ernie Apr 18 '11 at 20:56
  • By the way, that address should be fc00:1::1/48 – Ernie Apr 18 '11 at 21:07
  • Autoconfiguration works and IPv6 have some nice support for broadcasts/multicasts so you can detect all other autoconfigured interfaces on the same LAN. The _real_ solution for running an app on a local IPv6 LAN probably goes along those lines. However, the applications I have in mind probably don't have any LAN autodiscovery built in and autoconfiguration has an ability to generate very, very messy IPv6 addresses (but they are unique, though). – IllvilJa Apr 18 '11 at 21:17
  • Ok, so if I got a bunch of hosts, I could just give them IP addresses fc00:1:1::1, fc00:1:1::2, fc00:1:1::3 and so on (A yes on this and I'll definitively accept Tom O'Connors answer above)? Would be pretty slim IP-addresses, at least by IPv6 standards! And yes, a DHCPv6 server would do wonders for quickly configuring networks even on ad-hoc networks like these. (Edit: Ok, Cheekaleek confirmed the IP-addresses I were considering...) – IllvilJa Apr 18 '11 at 21:21
  • @Ernie, no he's specifying an example network, not an address. The shorthand for that network would be fc00:1:1::/48. – Martijn Heemels Apr 18 '11 at 21:39
  • 2
    Actually, according to RFC 4193 (which is really confusing on that point), the 8th bit must be set to 1 - so the actual prefix would be `FE00::/8`. The rest of the 48 bits should be random (so they are "globally unique"), and I use this generator - http://random.org/cgi-bin/randbyte?nbytes=5&format=h So you end up with something like `FEDA:EC52:6E69::/48` for the network, and so (and assuming I ignore the "subnet" part of the RFC) the first host is `FEDA:EC52:6E69::1` and the last host is `FEDA:EC52:6E69:FFFF:FFFF:FFFF:FFFF:FFFF`. – Guss May 28 '12 at 16:51
9

I'm on board with Tom's Solution but an amendment:

FC00:0001:0001::/48 would be your network segment

Hosts:

FC00:1:1::1

FC00:1:1::2

FC00:1:1::3

. . .

FC00:1:1:FFFF:FFFF:FFFF:FFFF:FFFF

...THAT'S A LOT OF IPs!

HostBits
  • 11,796
  • 1
  • 25
  • 39
  • Ok, Tom's solution contained more info but this one were more spot on the final thing I was looking for. (But _why_ does not this site allow me to accept both Tom's and Cheekaleak's answers? In this case I would consider that warranted!) – IllvilJa Apr 18 '11 at 21:25
  • You don't, you just have to upvote mine, and accept whichever. Or upvote both, if you'd rather. – Tom O'Connor Apr 20 '11 at 09:25
  • Note: FC00::/8 is used by [Cjdns](http://en.wikipedia.org/wiki/Cjdns), maybe by other such networks. See [other answer](http://serverfault.com/a/261623/33896) for better alternative to prevent address clashes if there will be need to merge networks somehow. – Vi. Jun 06 '13 at 22:44
  • Actually `FC00::/8` is still reserved, so nobody is allowed to use that range yet. `FD00::/8` can be used if you conform with RFC 4193. – kasperd Sep 25 '14 at 21:58
  • Hi.. I'm not clear, what does this answer add to Tom's answer, apart from illustrating the subnet range? (Which don't get me wrong, is helpful) – mwfearnley Jun 10 '19 at 09:40
6

I would recommend using addresses in FD00::/8 rather than in FC00::/8 for this, FD00::/8 is allocated as locally assigned ULA, where FC00:/8 is intended to be used for centrally assigned ULA, ie each organisation wanting ULA will be allocated a 40-bit prefix (presumably by IANA and/or the RIRs, though no assignment mechanism has been defined and no assignments have been made).

Personally, I'd go for the simplest possible option: FD00::1, FD00::2, etc for a test/demo network; use a /64 prefix so your network is FD00::/64.

I know there's a MUST for using a pseudo-random method for creating a ULA prefix, but I would just ignore that for a test/demo system that I'm never going to connect to anything else and will be taking down at the end of the lab.

Richard Gadsden
  • 3,686
  • 4
  • 29
  • 58
  • I don't disagree with you but I'd like to see some articles regarding this. Interesting. – HostBits Apr 20 '11 at 12:44
  • 1
    This is NOT what ULA space was meant for. ULA is unique globally (but still not routed)... [RFC 4193](http://tools.ietf.org/search/rfc4193) section 3.2.1 explains what you need to do... – Knobee Dec 11 '11 at 19:12
0

We develop applications for IPv6 so we run IPv6 in parallel with IPv4 in our development network. I ended up setting up radvd server for auto-configuration and it assigns IPv6 addresses based on link local prefix and MAC address. Then I add them to DNS and always use names after that. This works fine however we add addresses to DNS manually and every now and then someone forgetting to update. Also, we run bunch of VMware virtual machines and sometimes we move machines around using VMware converter. As a result, they change their MAC address and we need to manually update DNS after these motions, which is annoyance. I'm investigating if enabling dynamic DNS updates may help, but so far I did not spend much time on this.

dtoubelis
  • 4,677
  • 1
  • 29
  • 32
0

I'd recommend using the SixXs registration and use the block you are allocated... there's lots of information there as well if you don't want to say "who you are".

Knobee
  • 357
  • 2
  • 7