To put it simply, badly implemented IPv6 makes it easier, but all the ways to make it on-par with IPv4 have been widely deployed since 2016.
[0] https://datatracker.ietf.org/doc/html/rfc4941
Not really. According to the wikipedia article[1], you still have an unique address per device. It rotates daily, but you still can uniquely identify a device on a daily basis. This wouldn't be possible with ivp4 with NAT.
[1] https://en.wikipedia.org/wiki/IPv6#Stateless_address_autocon...
> DHCPv6 temporary addresses have the same properties as SLAAC temporary addresses (see Section 4.6). On the other hand, the properties of DHCPv6 non-temporary addresses typically depend on the specific DHCPv6 server software being employed. Recent releases of most popular DHCPv6 server software typically lease random addresses with a similar lease time as that of IPv4. Thus, these addresses can be considered to be "stable, semantically opaque". [DHCPv6-IID] specifies an algorithm that can be employed by DHCPv6 servers to generate "stable, semantically opaque" addresses. [0]
The very last line of that Wikipedia paragraph points you to RFC8064 [1], which is a standard, and completely obsoletes the early "SLAAC temporary addresses", and makes the rest of the paragraph nothing but historical information. (The mention of Windows XP should stand out as a red flag, there.)
> By default, nodes SHOULD NOT employ IPv6 address generation schemes that embed a stable link-layer address in the IID.
[0] https://datatracker.ietf.org/doc/html/rfc7721#section-4.7
RID = F(Prefix | Client_DUID | IAID | Counter | secret_key)
Where:+ secret_key is at least 128 bits, be cryptographically generated, and as difficult to access as the system allows. It cannot be re-used for any other purpose.
+ F is at least SHA-1, but should probably be SHA-256 or above. It can be any cryptographically secure hash function that returns 64 or more bits. (And MD5 is explicitly banned).
+ Client_DUID is the Client Identifier sent to the DHCP.
+ IAID is the 32bit integer from the IA_NA option sent to the DHCP.
And then, once you have that randomised ID:
if(IPV6_ADDR < IPV6_ADDR_LOW || IPV6_ADDR > IPV6_ADDR_HI){
IPV6_ADDR = IPV6_ADDR_LOW + IPV6_ADDR % \
(IPV6_ADDR_HI - IPV6_ADDR_LOW + 1);
}
Where:+ IPV6_ADDR starts out as RID.
+ IPV6_ADDR_HI is the upper bound of leaseable addresses.
+ IPV6_ADDR_LOW is the lower bound of leaseable addresses.
If this produces an address that is invalid or already leased, increment Counter and try again.
The result is that addresses in the same prefix are completely dissimilar, and opaque. When the system rolls the address, there is no way to predict what the next address will be, or what the previous address was.
Windows, Android, macOS, and Linux tend to roll to a new IPv6 address either on system restart, or on an hourly basis, depending on settings.
Thus, on par with current IPv4 addresses for tracking.
[0] https://datatracker.ietf.org/doc/html/draft-ietf-dhc-stable-...
There’s nothing in IPv6 to prevent tracking or offer more anonymity.
If I accidentally run an SSH server where user 'root' and an empty password gives you root access, you still won't be able to get in.
Accidentally configuring port forwarding is a lot harder than accidentally disabling an on-host firewall.
You need a firewall for security, and NAT doesn't do anything in that regard other than make it harder to understand what's going on.