IPv6 Tunneling Guide: SixXS Setup
Master IPv6 connectivity on IPv4 networks with this comprehensive SixXS tunnel broker tutorial for seamless dual-stack transition.

Transitioning to IPv6 remains a critical step for modern networks, especially when your ISP lags behind with native support. Tunnel brokers like SixXS provide a reliable bridge, encapsulating IPv6 traffic within IPv4 packets to deliver full IPv6 functionality. This guide explores the complete process of setting up a SixXS IPv6 tunnel, focusing on Linux environments but adaptable to others. We’ll cover everything from account creation to propagating IPv6 across your local area network (LAN), ensuring you achieve stable, high-performance connectivity.
Understanding IPv6 Tunneling and SixXS Role
IPv6 tunneling solves the chicken-and-egg problem of adopting the next-generation internet protocol. Without native IPv6 from your provider, tunnels allow IPv6 packets to traverse existing IPv4 infrastructure. SixXS, a prominent tunnel broker, operates Points of Presence (PoPs) worldwide, offering static tunnels, dynamic heartbeat detection, and AYIYA for NAT traversal.
Key benefits include free /48 prefix delegation for subnets, low-latency PoP selection, and tools like AICCU for automated tunnel management. According to official SixXS documentation, their service supports various protocols, making it versatile for routers, servers, and endpoints. This approach is particularly valuable for testing, development, or production environments awaiting ISP upgrades.
Prerequisites for Successful Tunnel Deployment
Before diving in, ensure your setup meets these requirements:
- A publicly routable IPv4 address (no NAT if using static proto-41 tunnels; AYIYA handles NAT).
- Administrative access to a Linux server or router acting as the tunnel endpoint.
- Basic command-line proficiency for package management and network configuration.
- Static IPv4 preferred; dynamic IPs work with heartbeat tunnels.
Verify IPv4 connectivity with ping -c 4 tunnelbroker.sixxs.net. Tools like traceroute help identify the nearest PoP for optimal performance.
Step 1: Creating and Verifying Your SixXS Account
Visit the SixXS website and initiate registration. Provide detailed information including full name, EUI-64 formatted MAC address derivative, phone number, and physical address. SixXS maintains a WHOIS database, so accuracy is essential for approval, which typically takes 1-2 days.
Upon email confirmation, log in and navigate to the tunnel creation section. Select a PoP based on geographic proximity and metrics like establishment date, served prefixes, and load. Each PoP details IPv4 endpoint, supported tunnel types, and user count. For U.S. users, Chicago Equinix or similar might offer balanced performance.
Submit tunnel request with your IPv4 endpoint. Approval grants a /64 prefix for the tunnel and optional /48 for routed subnets.
Step 2: Installing and Configuring AICCU Client
AICCU is SixXS’s recommended client for automated tunnel setup, supporting static, heartbeat, and AYIYA tunnels. On Ubuntu/Debian:
sudo apt updatesudo apt install aiccuEdit /etc/aiccu.conf:
daemonize trueuser rootgroup rootverbose trueexample notunnel_id your_tunnel_idipv6_interface he-ipv6tunnel_server_pool autoprotocol ayiya # or tic for heartbeat, 6in4 for staticObtain your tunnel ID from the SixXS dashboard. Start the service:
sudo systemctl enable aiccusudo systemctl start aiccuAICCU dynamically fetches credentials via SixXS API, establishes the tunnel, and assigns addresses. Monitor with journalctl -u aiccu.
Step 3: Manual Tunnel Configuration on Linux
For platforms without AICCU or custom needs, configure manually. Assume tunnel details: Server IPv4 192.0.2.1, Client IPv4 198.51.100.1, Client IPv6 2001:db8::2/64.
sudo ip tunnel add he-ipv6 mode sit remote 192.0.2.1 local 198.51.100.1 ttl 255sudo ip link set he-ipv6 upsudo ip addr add 2001:db8::2/64 dev he-ipv6sudo ip -6 route add ::/0 dev he-ipv6Persist via /etc/network/interfaces or systemd-networkd. For systemd-networkd:
[NetDev]Name=he-ipv6Kind=sitMTUBytes=1480[Tunnel]Remote=192.0.2.1Local=198.51.100.1TTL=255Test with ping6 ipv6.google.com.
Optimizing Tunnel Performance and MTU
Tunnels often face Path MTU Discovery issues. Set MTU to 1480 (IPv4 overhead: 20 bytes header + 20 bytes IPv6):
sudo ip link set he-ipv6 mtu 1480Enable PMTUD on endpoints. For firewalls, allow protocol 41 (IPv6-in-IPv4). On iptables:
sudo ip6tables -A INPUT -i he-ipv6 -j ACCEPTsudo ip6tables -A OUTPUT -o he-ipv6 -j ACCEPT| Tunnel Type | NAT Support | Automation | Best Use |
|---|---|---|---|
| Static 6in4 | No | Manual/AICCU | Static IPv4 |
| Heartbeat | Partial | AICCU | Dynamic IPv4 |
| AYIYA | Yes | AICCU | Home NAT |
Extending IPv6 to Your Local Network
With the tunnel active, delegate prefixes to LAN. Request a /48 routed prefix from SixXS. On the tunnel server (e.g., Ubuntu), install radvd:
sudo apt install radvdConfigure /etc/radvd.conf:
interface eth0 { AdvSendAdvert on; prefix 2001:db8:1::/64 { AdvOnLink on; AdvAutonomous on; AdvRouterAddr on; };};Enable forwarding:
sudo sysctl -w net.ipv6.conf.all.forwarding=1Restart radvd: sudo systemctl restart radvd. Clients auto-configure via SLAAC or DHCPv6.
Troubleshooting Common Issues
Encounters like “tunnel not coming up” often stem from firewall blocks or IP mismatches. Check:
ip -6 addr showfor assigned addresses.tcpdump -i he-ipv6 ip6for traffic.- SixXS tic command:
tic tunnel_idfor diagnostics.
If behind NAT, switch to AYIYA. Verify no IPv6 firewall drops with ip6tables -L.
Comparing SixXS with Other Brokers
SixXS excels in prefix sizes and PoP density but requires approval. Hurricane Electric offers instant /64s and web-based verification, ideal for quick setups. Per pfSense docs, HE integrates seamlessly with firewalls. Choose based on needs: SixXS for subnets, HE for simplicity.
Security Considerations for IPv6 Tunnels
Treat tunnels as untrusted links. Implement:
- IPv6 firewall rules limiting inbound traffic.
- RA Guard to prevent rogue advertisements.
- IPsec for encryption if sensitive.
Monitor with tools like ip6tables logging.
FAQ
Q: Does SixXS work behind NAT?
A: Yes, via AYIYA tunnels with AICCU.
Q: How do I get a /48 prefix?
A: Request via dashboard after tunnel approval; announce with BGP if needed.
Q: What’s the latency impact?
A: Minimal with nearby PoP; typically <50ms added.
Q: Can I use this on routers like pfSense?
A: Yes, configure GIF interface and set as default IPv6 gateway.
Advanced Configurations and Use Cases
For enterprises, BGP peering with SixXS PoPs enables prefix advertisement. Home labs benefit from subnetting /48 into /64s for VLANs. Integrate with SDN controllers for dynamic allocation. Recent standards from IETF emphasize tunneling as a transitional mechanism toward native IPv6.
This setup empowers direct IPv6 application access, future-proofs networks, and prepares for IoT proliferation demanding vast addresses.
References
- FAQ: Connectivity (Tunnels and Subnets) — SixXS. 2023-05-01. https://www.sixxs.net/faq/connectivity/?faq=ossetup&os=ciscoios
- Points of Presence — SixXS. 2023-10-15. https://www.sixxs.net/pops/
- Configuring IPv6 Through A Tunnel Broker Service — Netgate pfSense Documentation. 2025-01-20. https://docs.netgate.com/pfsense/en/latest/recipes/ipv6-tunnel-broker.html
- IPv6 Tunnel Broker Setup — Arch Linux Wiki. 2024-11-05. https://wiki.archlinux.org/title/IPv6_tunnel_broker_setup
- IPv6 Tunnelling: Tutorial With Examples & Instructions — Catchpoint. 2023-08-12. https://www.catchpoint.com/benefits-of-ipv6/ipv6-tunnelling
Read full bio of Sneha Tete










