6

I want to ask question about some network issue, i.e. about printing the IPv6 address correctly. I assume the users expect me to provide some meaningful examples of what I expect and what I have.

Since I'm not familiar with a IPv6 protocol, I don't know which parts of the address are essential and which I may safely hide.

The main goal is to stay anonymous, so the people won't know where I live, where I work, which networks do I have access to.

Any advice?

  • 3
    If you construct any part of your security on the hypothesis that your IP address is secret, then be careful. There is something wrong there, and the building is a "house of cards". – dan Aug 8 '15 at 9:26
  • Nonetheless, this is a pretty good question to fight urban myths. – dan Aug 8 '15 at 9:32
  • 3
    @danielAzuelos It's not about the security of one's IT system, it's about one's own privacy. – Gilles Aug 8 '15 at 12:37
  • → Gilles: right! – dan Aug 8 '15 at 12:41
  • This question on meta SF is slightly related. – kasperd Aug 16 '15 at 16:39
4

First of all, it is important to keep enough bits from the start of the address that it will still be clear which class of address it is. How many bits are needed in order to know that does however depend on which class of address it is.

Here are a few examples:

  • 2001:0:xxxx:xxxx:: a Teredo address - 32 bits (two groups of digits) is enough to know it is a Teredo address.
  • 2002:xxxx:xxxx:: a 6to4 address - 16 bits (one group of digits) is enough to know it is a 6to4 address.
  • 2a01:xxxx:xxxx:: a globally routable address 3 bits is enough to know it is globally routable, but publishing the full first group is usually better in order to avoid confusion. If you showed two groups (32 bits), it would be enough to know country and provider, with only 16 bits available it would still be clear which continent the address belongs in.
  • fdxx:xxxx:xxxx:: a ULA address. 8 bits is enough to know that it is a ULA address. There is nothing in the address directly pointing to you, so publishing the full address is not enough on its own to identify you. However the next 48 bits are supposed to be globally unique, so correlation with ULA addresses published through other channels could be possible. So you might want to censor the following 40 bits.
  • fe80:: a link-local address. 10 bits is enough to know that it is a link-local address, but the next 54 bits are generally 0, so the first 64 bits are well known in this case.

That covers the common cases for the first 48 bits. The next 16 bits of the address are usually indicating which segment on your LAN is referred to. Since it is important to know whether two addresses are on the same segment or not, those 16 bits should not be censored, as they very often contain information of importance to your question.

The last 64 bits may contain your MAC address, as in this example: fe80::220:40ff:fe30:20d7. Here the ff:fe in the middle of the last 64 bits will indicate that it is generated from a MAC address. 0220:40 will indicate the vendor of the hardware, and 30:20d7 will identify the specific device within the series.

Don't censor all of the MAC address, as it is relevant to know whether two addresses are based on the same MAC address. I would consider fe80::220:40ff:fexx:xxd7 to be a reasonable compromise. It will indicate the vendor, but not uniquely identify the device, and should you have a few successive MAC addresses from the same series, they can still be told apart by looking at the last bits.

If 2001:db8:5c1d:c698:220:40ff:fe30:20d7 was a full address, which I wanted to censor, I would write it as 2001:xxx:xxxx:c698:220:40ff:fexx:xxd7. All you can really tell from this address is that it is a globally routable address, and it was generated using the MAC address of some Motorola hardware.

Never write an address belonging to someone else when censoring an address. If you need to write out a full address and cannot write any x somewhere in there to indicate that it is censored, there are a few options. For a ULA address you are allowed to replace the 40 bits after the initial fd with a random value. If I used fd59:f1b8:8740:: locally it would be acceptable for me to just write fd8f:ed38:64da:: if I wanted to censor it. For a globally routable address anything starting with 2001:db8: is fair game for examples, like in my example above.

2

You can post your unique local unicast address since they are pretty much the same as a IPv4 private address. It has the prefix fc00::/7 (fd00::/8).

However I don't suggest you to post your IPv6 public address, especially in a network expert forums. You can try to abstract your question by making reference to its components (Network Identifier or EUI - Extended Unique Identifier) or simply come up with a "fake" one which you can reference later to your actual one.

Take a look at this discussion. It is basically the same question.

Replying to the comments:

What the equivalent of Private (internal) network addressing is in IPv6.. [It] is called Unique Local Addresses (ULA). In the IPv4 world, private addresses include 10.0.0.0-10.255.255.255, and 172.16.0.0-172.31.255.255, and 192.168.0.0-192.168.255.255. In the Ipv6 world, the ULA space is fc00::/7, or basically anything that starts with FD in the IPv6 address, so fdxx:xxxx:xxxx…

Source

  • Please, can you provide the scheme of IPv6 address and point out to its parts you mention? - My another potential question is about the parts of IPv6 address being printed in a wrong way. – abyss.7 Aug 8 '15 at 8:40
  • @abyss.7 Check my edited answer. – user69377 Aug 8 '15 at 8:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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