Skip to content
Go back

IPv6 on Your Home Lab: You Should Care (Here's Why)

By SumGuy 5 min read
IPv6 on Your Home Lab: You Should Care (Here's Why)

The Myth: “IPv6 is Coming Eventually”

You’ve been hearing this for 15 years. “Eventually IPv6 will replace IPv4.” Meanwhile you’re running on IPv4 and things work fine, so why bother?

Because IPv6 is already here and you’re already using it. Your ISP probably offers it. Your network probably has it broken. When you actually need it (and you will), you’ll wish you’d figured it out when you had time to think.

Real talk: IPv6 on your home network is way more useful than you think, and way less complicated than people claim.

The Real Reason You Should Care

  1. IoT devices expect IPv6: Smart home gear increasingly relies on IPv6-capable networks
  2. Your ISP likely offers it: And you’re not using it, leaving performance on the table
  3. Future-proofing: Dual-stack (IPv4 + IPv6) is the reality now
  4. Better subnet isolation: IPv6 subnets are massive. You can dedicate /64s to different purposes
  5. Easier than you think: Modern routers and Linux do most of the work for you

Check If Your Network Already Has IPv6

Terminal window
# Does your interface have an IPv6 address?
ip addr show
# Output includes:
# inet 192.168.1.100/24 <- IPv4
# inet6 fd12:3456:789a::100/64 <- IPv6 (if enabled)
# Can you reach IPv6-only services?
ping6 ipv6.google.com
# Check your router's public IPv6:
curl -6 https://icanhazip.com

If you get curl: (7) Failed to connect to ipv6.google.com port 443 or no IPv6 address shows up, your network isn’t configured for IPv6 yet.

How IPv6 Actually Works on Home Networks

Unlike IPv4, you don’t manually assign IPv6 addresses. Your router gets a block of addresses from your ISP (usually a /56 or /60, which is millions of addresses). It then:

  1. Creates subnets for different parts of your network
  2. Advertises those subnets to devices
  3. Devices auto-configure their own addresses

No DHCP for IPv6 addresses (usually). The devices just pick one. This is called Stateless Address Autoconfiguration (SLAAC).

Enable IPv6 on Your Linux Server

Terminal window
# Check if IPv6 is enabled:
sudo sysctl net.ipv6.conf.all.disable_ipv6
# Output of 0 = enabled, 1 = disabled
# If disabled, enable it:
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=0
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=0
# Make it permanent:
sudo tee /etc/sysctl.d/10-ipv6.conf << EOF
net.ipv6.conf.all.disable_ipv6=0
net.ipv6.conf.default.disable_ipv6=0
EOF
sudo sysctl -p /etc/sysctl.d/10-ipv6.conf

Get an IPv6 Address via DHCP

Most home networks use DHCPv6 for address assignment. Check if your interface gets one:

Terminal window
# Run DHCP client for IPv6:
sudo dhclient -6 eth0
# Check for new IPv6 address:
ip addr show eth0
# You should see:
# inet6 2001:db8::1234:5678/64 scope global mngtmpaddr

Or if your router supports SLAAC (most do), just wait a few seconds and devices auto-configure.

Check Your IPv6 Connectivity

Terminal window
# Ping IPv6-only server:
ping6 2001:4860:4860::8888 # Google's public DNS
# Try to curl a dual-stack site:
curl -6 https://www.example.com
# See which protocol was used:
curl -6 -w "IPv6: %{http_code}\n" https://www.example.com
curl -4 -w "IPv4: %{http_code}\n" https://www.example.com

Set a Static IPv6 Address (If You Need One)

For servers that need to stay put:

Terminal window
# Edit netplan config (Ubuntu/Debian):
sudo nano /etc/netplan/01-netcfg.yaml
network:
version: 2
ethernets:
eth0:
dhcp4: true
dhcp6: false
addresses:
- 192.168.1.100/24
- fd12:3456:789a::100/64 # IPv6 from your /64 subnet
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]

Apply it:

Terminal window
sudo netplan apply
# Verify:
ip addr show

Open IPv6 Ports in Your Firewall

If you have UFW:

Terminal window
# Allow SSH over IPv6:
sudo ufw allow 22/tcp
sudo ufw allow 22/udp
# UFW applies to both IPv4 and IPv6 automatically
# Check:
sudo ufw status

If using ip6tables directly:

Terminal window
# Allow incoming SSH on IPv6:
sudo ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo ip6tables -A INPUT -p tcp --dport 443 -j ACCEPT
# Save rules:
sudo ip6tables-save | sudo tee /etc/ip6tables.rules

Access Services Over IPv6

Once you have IPv6 working:

Terminal window
# SSH to server via IPv6:
ssh user@[fd12:3456:789a::100]
# Note the brackets—required for IPv6 addresses with colons
# Curl a local service:
curl -6 http://[fd12:3456:789a::50]:3000/api
# In your hosts file:
echo "fd12:3456:789a::50 myserver.local" | sudo tee -a /etc/hosts
ping6 myserver.local

Real-World Example: Service Discovery

Terminal window
# Find all IPv6 hosts on your /64:
ping6 ff02::1%eth0
# This pings the "link-local all-nodes" multicast address
# All devices on the network respond
# Output:
# From fd12:3456:789a::100: bytes=32
# From fd12:3456:789a::200: bytes=32
# From fd12:3456:789a::300: bytes=32

Now you know what’s on your network without scanning port ranges.

The One IPv6 Advantage Over IPv4

With IPv4, you get maybe 253 usable addresses in your home network. With IPv6, a single /64 subnet is 18 quintillion addresses. You can assign a full /64 to:

This is proper network segmentation without any of the “running out of addresses” problem.

Fallback: Tunneling If Your ISP Doesn’t Offer IPv6

If your ISP doesn’t have native IPv6:

Terminal window
# Use a tunnel broker (Hurricane Electric is free):
# Register at https://tunnelbroker.net/
# Then configure your tunnel:
sudo ip tunnel add he-ipv6 mode sit remote your.isp.ipv4 local your.local.ipv4 ttl 255
sudo ip link set he-ipv6 up
sudo ip addr add 2001:db8::1/64 dev he-ipv6
sudo ip route add ::/0 dev he-ipv6

It’s slower than native IPv6 but works fine for testing and low-traffic services.

Bottom Line

IPv6 isn’t complicated. It’s just different. Once you spend an hour getting it working, you’ll realize it’s actually easier than IPv4 because you get so many addresses that you never run out or have to do careful subnet planning.

Set it up on your homelab now. When the rest of the internet finally cares about IPv6, you’ll already know how it works.


Share this post on:

Send a Webmention

Written about this post on your own site? Send a webmention and it may appear here.


Previous Post
You Should Be Testing Your Restores
Next Post
DNS Over HTTPS and TLS: Encrypt Your DNS Before Your ISP Sells It

Related Posts