I'm doing a presentation on how the internet works, and I'm wondering if there is even such a thing as a private IPV6 address. If so, what does a private IPV6 address looks like?
IPv6 does not have Private addresses the way IPv4 does. There once was IPv6 Site Local addressing (
fec0::/10), but that was deprecated in favor of Unique Local Addressing (
fc00::/7). ULA goes a long way to solving the problem presented by IPv4 Private addressing where it is very common for different sites to use the same Private addressing.
With ULA, the addressing is divided into two different parts:
fc00::/8is reserved for future use, presumably by a Global authority to assign
fd00::/8is available for local assignment, with certain restrictions, such as the next 40 bits must be randomly assigned in order to achieve a large degree of uniqueness.
The uniqueness goes a long way to prevent the problem with connecting sites that have overlapping addressing. This is a common problem with IPv4 Private addressing. Companies that merge will almost surely have overlapping IPv4 addressing, and another kludge is necessary until one or both companies can readdress (a giant project that can last years).
Having said all that. There is no NAT standard for IPv6* the way there is for IPv4. For use on the public Internet, hosts are assigned Global IPv6 addresses, which restores the end-to-end paradigm of the original IP design that IPv4 NAPT breaks.
*There is an experimental RFC for IPv6 NAT, but it is a one-to-one NAT with restrictions to preserve the IP end-to-end paradigm. The RFC forbids NAPT, which is the common NAT variant used for IPv4.
There are three types of Private Unicast IPv6 addresses (there are also various types of multicast addresses).
There was a desire to avoid the problem seen with private V4 addresses that address conflicts were likely when a host needed to access multiple private networks at the same time or when two previously separate private networks needed to be integrated.
Link local addresses ( fe80::/10 in principle but fe80::/64 in practice ) are local to a link, they are used in a number of auto-configuration and auto-discovery related protocols, but they are a PITA to use in anything manually configured because you need to specify an interface as well as an address and different machines will have differently named or numbered interfaces.
Site-local addresses ( fec0::/10 ) were intended to be local to a site, but the idea of site scope never really worked out due to a combination of site being a poorly defined concept and there being no good way of indicating to a multi-homed host which site an address belonged to. As a result site-local addreses were deprecated in 2004.
Unique-local addresses ( fc00::/7 in principle but fd00::/8 in practice) are the replacement for site-local addresses. fd00 is intended to be used for "probabilistically unique" addresses. In these addresses a 40-bit random number is included in the address such that the probability that two sites that want to interconnect end up with overlapping address blocks is negligible. fc00/8 is reserved for future use. It appears the block was intended for addresses that are globally allocated but only locally routeable. However issuing of such addresses never happened.
Another change from IPv4 is that use of NAT is strongly discouraged, there is an "Experimental" RFC for prefix translation but none at all for one to many NAT (though there do exist implementations despite the lack of a standard).