How to test if your BSD system supports IPv6

BSD uses the KAME stack to implement the IPv6 networking protocols. KAME is the leading IPv6 stack and has been integrated into BSD/OS, FreeBSD, NetBSD and OpenBSD since 2000, so your BSD system should have it unless you run a very old version of BSD.

IPv6 will eventually replace the current internet protocol, IPv4. When you switch from IPv4 to IPv6, then BSD will be ready.

(1) Ping yourself
Run the command $ ping6 -c3 ::1

Note that ping6 is the IPv6 ping command and ::1 is the address of localhost. This should work because BSD automatically configures the loopback interface for IPv6. It its fails, then you have not started the network (and ping 127.0.0.1 also will not work).

(2) Connect to the IPv6 internet
If your internet connection supports IPv6 (or there is an IPv6 router upon your local area network), then you can use rtsol to connect to it. Otherwise, you need to use an IPv6-over-IPv4 tunnel.

Router solicitation with rtsol
The rtsol command is an IPv6 equivalent to dhclient for IPv4. To use it, you may need to adjust some sysctl settings. See the rtsol(8) manual page or try rtsol -F. You may want to have rtsol run at boot.

Point-to-point tunneling
You can create a tunnel using one of the following options:
 * by configuring a gif(4) interface with ifconfig(8) to use a tunnel broker such as http://tunnel-broker.net
 * by installing the Gateway6 client (gw6c), a BSD-licensed Tunnel Service Protocol (TSP) client and connecting to a tunnel broker such as Freenet6 from http://www.go6.net
 * by installing AICCU, the BSD-licensed Tunnel Information and Control Protocol (TIC) client, and connecting to a tunnel broker such as SixXS

If you are behind a NAT or firewall, then gif(4) will not work (unless you can configure it to forward IP protocol 41).
 * Your best option may be IPv6-over-UDP-over-IPv4 using Freenet6. However, the Gateway6 client supports this option only with FreeBSD. (An attempted patch for OpenBSD exists.)
 * Another way to bypass a NAT is AYIYA (AnYthing In AnYthing) using AICCU, TIC and SixXS.

Advanced tunneling
Instead of creating a point-to-point tunnel, you might consider a tunnel that reaches multiple IPv4 relays and endpoints.

If you are not behind a NAT, then you could try 6to4 (the stf(4) interface of FreeBSD and NetBSD). Tell it to connect to 192.88.99.1, a special IP for the nearest relay. Note that 6to4 has many potential security problems, because you cannot trust every potential relay.

Behind a NAT, you could investigate Teredo tunneling.

(3) Test your IPv6 connection
Visit http://www.kame.net and check if the kame dances. Or ping them:

ping6 -c3 www.kame.net

This uses IPv4 to contact the DNS server and resolve www.kame.net to an IPv6 address, and IPv6 to connect.

Only a few websites, including http://www.kame.net and http://www.netbsd.org, have IPv6 addresses.

You can also check which IPv6 IP address you are using for connecting internet at http://www.traceroute6.net.

Additionally, you can check your IPv6 address and connection speed at http://ipv6-test.com or http://www.speedtest6.com.

For more information

 * NetBSD: IPv6 Networking FAQ very detailed and presents several alternatives
 * The IPv6 Portal, current IPv6 website
 * The IPv6 Portal: Configuration Guides, BSD
 * AICCU Tunnel Brokers

From HowTo Wiki, a Wikia wiki.