IPv6 at home: what changes and what to do about it
Two things change when IPv6 reaches a home network, and only one is visible. Every device gets its own globally routable address instead of sharing one public IPv4 address behind NAT, and the translation step in the middle of every connection goes away. Neither means your laptop starts listening to the internet, and most reasons given for turning IPv6 off describe problems the standards wrote out of existence.
The address got longer, and that is the whole point
RFC 8200 (July 2017), published as STD 86, is the current Internet Standard and sets the size: IPv6 "increases the IP address size from 32 bits to 128 bits, to support more levels of addressing hierarchy, a much greater number of addressable nodes, and simpler autoconfiguration of addresses." The written form is still RFC 4291 (February 2006), amended by six later RFCs but never replaced: eight 16-bit pieces of one to four hex digits, with :: collapsing the longest run of zero groups.
What a household gets is in RFC 6177 (March 2011, BCP 157), which retired the flat /48-per-site advice. It sets a floor: end sites must get "at least one /64, and in most cases significantly more." It names what it exists to prevent, "having an end site feel compelled to use IPv6-to-IPv6 Network Address Translation," and points at "a default assignment of less than /48, such as a /56." A /56 is 256 separate /64 subnets for one household, so the scarcity NAT exists to work around is simply absent.
NAT does not come along for the ride
The IETF's position appears inside the very document specifying prefix translation for IPv6. RFC 6296 (June 2011, Experimental) states in its introduction: "For reasons discussed in [RFC2993] and Section 5, the IETF does not recommend the use of Network Address Translation technology for IPv6." Four years earlier RFC 4864 had put the design intent plainly: IPv6 "was designed with the intention of making NAT unnecessary".
The pressure that keeps IPv4 NAT alive is a price. APNIC chief scientist Geoff Huston's 20 January 2026 review of 2025 records "a mean of USD 22 per address in the most recent 40 days (up to 10 January 2026)" and that "the average price per address has dropped by 50% across 2025." The registries have little left: ARIN 66,560 addresses available, the RIPE NCC 1,536, APNIC 3,107,392. AWS lists an "Hourly charge for In-use Public IPv4 Address" of $0.005, introduced on 1 February 2024 because "the cost to acquire a single public IPv4 address has risen more than 300% over the past 5 years." None of that applies to IPv6.
What replaces port forwarding is a firewall permit rather than a rewrite. The device already holds the address the outside world would use, so nothing needs translating; something just has to stop dropping the packet. Port Control Protocol (RFC 6887, April 2013) standardized asking for that: it lets a host "control how incoming IPv6 or IPv4 packets are translated and forwarded by a Network Address Translator (NAT) or simple firewall".
Dual stack, DS-Lite and CGNAT are not interchangeable
RFC 6888 (April 2013, BCP 127) defines carrier-grade NAT as "A NAT-based logical function used to share the same IPv4 address among several subscribers," and adds: "A CGN is not managed by the subscribers." RFC 6333 (August 2011) describes DS-Lite as combining "IP in IP (IPv4-in-IPv6) and Network Address Translation (NAT)," so IPv4 travels inside an IPv6 tunnel rather than beside it. On mobile the pattern is 464XLAT (RFC 6877), "providing limited IPv4 connectivity across an IPv6-only network".
RFC 6598 (April 2012, BCP 153) reserved 100.64.0.0/10 as shared address space for "the interfaces that connect CGN devices to Customer Premises Equipment (CPE)". A WAN address between 100.64.0.0 and 100.127.255.255 on your router's status page means the carrier is translating for you.
| Line type | WAN side | Inbound IPv4 | Effect of disabling IPv6 |
|---|---|---|---|
| Dual stack | Public IPv4 plus IPv6 prefix | Works if you allow it | Loses IPv6 only |
| CGNAT plus IPv6 | IPv4 in 100.64.0.0/10, plus IPv6 | Not possible | Removes your only inbound path |
| DS-Lite | IPv6 only, IPv4 tunneled to the CGN | Not possible | Breaks IPv4 too |
| 464XLAT (mobile) | IPv6, IPv4 by translation | Not possible | Breaks IPv4 apps |
The last column is the part people get wrong: on a dual-stack line it costs you IPv6, on DS-Lite it costs you both.
Routable is not the same as reachable
RFC 6092 (January 2011) describes what a residential IPv6 gateway should do out of the box. Requirement REC-34: "By DEFAULT, a gateway MUST respond with an ICMPv6 'Destination Unreachable' error code 1 (Communication with destination administratively prohibited) to any unsolicited inbound SYN packet after waiting at least 6 seconds without first forwarding the associated outbound SYN or SYN/ACK from the interior peer." That is the outcome IPv4 NAT produced as a side effect, reached deliberately through stateful filtering.
There is a catch. RFC 7084 (November 2013) is what consumer edge routers are actually built against, and its requirement S-1 asks only that "The IPv6 CE router SHOULD support [RFC6092]", before closing: "This document takes no position on whether such functionality is enabled by default or mechanisms by which users would configure it." Default-deny is a vendor decision, not a protocol guarantee. Some firmware is explicit: OpenWrt's stock wan zone sets option input 'REJECT' and option forward 'REJECT' across option network 'wan wan6', one policy for both families. Yours may not. Find the setting, usually called "IPv6 firewall" or "IPv6 simple security", and read what it opens: some ISP gateways offer a per-device toggle that exposes every port on that device.
RFC 4193 defines Unique Local Addresses in fc00::/7, which "are not expected to be routable on the global Internet," and lists among their benefits that "Sites can change their provider-based IPv6 unicast address without disrupting any communication that uses Local IPv6 addresses." A hardcoded NAS mount pointed at a ULA survives your ISP re-delegating your prefix; one pointed at a global address does not.
The back half of your address stopped being your MAC in 2017
Any explanation that says the interface identifier comes from your MAC address describes pre-2017 behavior. RFC 8064 (February 2017) changed the recommended default for all SLAAC addresses, not only the rotating ones, updating fourteen RFCs including RFC 4291: "By default, nodes SHOULD NOT employ IPv6 address generation schemes that embed a stable link-layer address in the IID," and "Nodes SHOULD implement and employ [RFC7217] as the default scheme for generating stable IPv6 addresses with SLAAC."
RFC 7217 gives the reasoning: EUI-64 identifiers "do not vary over time" and are "constant across networks," so the resulting addresses could be used to "track and correlate the activity of a host across multiple networks".
Temporary addresses are a separate mechanism stacked on top. RFC 4941 (September 2007) is obsolete; the current specification is RFC 8981 (February 2021), and one default moved: both set TEMP_PREFERRED_LIFETIME to "1 day," but TEMP_VALID_LIFETIME dropped from "1 week" to "2 days."
What a given machine does with this is per-platform, and vendor documentation is thinner than you would expect. Microsoft's Set-NetIPv6Protocol reference documents RandomizeIdentifiers as defaulting to "Enabled" while stating no default at all for UseTemporaryAddresses. NetworkManager's ipv6.ip6-privacy falls through to the kernel's use_tempaddr when unset, and distributions set that differently; that page still cites RFC 4941 and still calls the stable address "generated from MAC address via modified EUI-64," nine years after RFC 8064 advised against exactly that. Check the interface, not the folklore: ip -6 addr on Linux, Get-NetIPv6Protocol on Windows.
Where disabling IPv6 is the wrong fix
Microsoft's troubleshooting page, updated 19 February 2026, is the clearest vendor statement available. IPv6 "is a mandatory part of Windows Vista and Windows Server 2008 and newer versions," and "We don't recommend that you disable IPv6 or IPv6 components or unbind IPv6 from interfaces. If you do, some Windows components might not function." The switch also does less than people assume: "You cannot completely disable IPv6 as IPv6 is used internally on the system for many TCPIP tasks. For example, you will still be able to run ping ::1 after configuring this setting." The page links case histories of the attempt breaking LDAP over UDP 389 on domain controllers, Exchange Server 2010, and failover clusters.
Slow browsing is the folk complaint that has aged worst. The problem was real, a client stalling on a broken IPv6 path before falling back to IPv4, and Happy Eyeballs v2 (RFC 8305, December 2017) was written to remove it on the premise that "clients that attempt multiple connections in parallel have a chance of establishing a connection more quickly." That is over eight years old, with a successor in progress (draft-ietf-happy-happyeyeballs-v3, dated 2 July 2026). Clients still differ, so measure yours before blaming the protocol.
Smart-home gear fails quietly. Thread, the mesh radio layer under many Matter products, is headed "OPEN IPv6 BASED PROTOCOL" on the Thread Group's own site. Whether a given hub tolerates an IPv6-free LAN is product-by-product, but that is not what these devices were built for, and the symptom looks like flaky hardware rather than a network setting.
The one case with merit is a VPN client that tunnels only IPv4 on a dual-stack host, leaving native IPv6 on the direct path. That fix belongs in the VPN client, not the network stack. If an application genuinely only works over IPv4, the lever is address selection, governed by RFC 6724 (September 2012). Microsoft recommends "using Prefer IPv4 over IPv6 in prefix policies instead of disabling IPV6," meaning DisabledComponents value 0x20 rather than 0xFF, and shows how easily the blunt route goes wrong: "system startup will be delayed for five seconds if IPv6 is disabled by incorrectly, setting the DisabledComponents registry setting to a value of 0xffffffff. The correct value should be 0xff." That page still cites RFC 3484, superseded by RFC 6724 in 2012, which is a fair measure of how much IPv6 advice in circulation is a decade out of date.
Sources
- https://www.rfc-editor.org/rfc/rfc8200
- https://www.rfc-editor.org/rfc/rfc4291
- https://www.rfc-editor.org/rfc/rfc5952
- https://www.rfc-editor.org/rfc/rfc6177
- https://www.rfc-editor.org/rfc/rfc6296
- https://www.rfc-editor.org/rfc/rfc4864
- https://www.rfc-editor.org/rfc/rfc6887
- https://www.rfc-editor.org/rfc/rfc6888
- https://www.rfc-editor.org/rfc/rfc6333
- https://www.rfc-editor.org/rfc/rfc6877
- https://www.rfc-editor.org/rfc/rfc6598
- https://www.rfc-editor.org/rfc/rfc6092
- https://www.rfc-editor.org/rfc/rfc7084
- https://www.rfc-editor.org/rfc/rfc4193
- https://www.rfc-editor.org/rfc/rfc8064
- https://www.rfc-editor.org/rfc/rfc7217
- https://www.rfc-editor.org/rfc/rfc4941
- https://www.rfc-editor.org/rfc/rfc8981
- https://www.rfc-editor.org/rfc/rfc8305
- https://www.rfc-editor.org/rfc/rfc6724
- https://datatracker.ietf.org/doc/draft-ietf-happy-happyeyeballs-v3/
- https://blog.apnic.net/2026/01/20/ip-addresses-through-2025/
- https://aws.amazon.com/vpc/pricing/
- https://aws.amazon.com/blogs/aws/new-aws-public-ipv4-address-charge-public-ip-insights/
- https://learn.microsoft.com/en-us/troubleshoot/windows-server/networking/configure-ipv6-in-windows
- https://learn.microsoft.com/en-us/powershell/module/nettcpip/set-netipv6protocol
- https://networkmanager.dev/docs/api/latest/settings-ipv6.html
- https://openwrt.org/docs/guide-user/firewall/firewall_configuration
- https://www.threadgroup.org/What-is-Thread