How to setup an IPv6 tunnel in 5 minutes, if you can follow steps carefully. 1) Use a GENERIC kernel. If you feel the urge to mess with a custom kernel, you're on your own. If you doubt that your 'harmless' modifications could possibly break the below procedure, use the GENERIC kernel while setting up the tunnel. Once it works, replace with your custom kernel. If it doesn't work anymore after that, your changes to the kernel did break IPv6. And, yes, you're on your own in that case. 2) In /etc/hostname.gif0 put exactly these two lines: up giftunnel 62.65.145.30 64.71.128.82 up inet6 2001:470:1f00:ffff::245 2001:470:1f00:ffff::244 prefixlen 128 Replace the two IPv4 addresses on the first line with your own IPv4 address and your tunnel's IPv4 endpoint. Replace the two IPv6 addresses on the second line with your tunnel's local and remote endpoint. 3) Add the following line at the bottom of your /etc/rc.local: route -n add -host -inet6 default 2001:470:1f00:ffff::244 Replace the IPv6 address with your tunnel's remote endpoint (equal to the second IPv6 address in the second line of /etc/hostname.gif0). 4) If you're running pf, allow the following traffic additionally: pass out on $ext_if inet proto ipv6 from $ext_if to 64.71.128.82 \ keep state pass in on $ext_if inet proto ipv6 from 64.71.128.82 to $ext_if \ keep state Replace 64.71.128.82 with your tunnel's IPv4 remote endpoint (equal to the second address on the first line of /etc/hostname.gif0). pass out on gif0 inet6 all keep state pass in on gif0 inet6 all keep state This allows all kinds of IPv6 traffic, you can restrict after you verified the setup works. Note that IPv6 traffic is filtered on gif0 (not $ext_if), and you have to pass 'proto ipv6' (which is the encapsulated IPv6-over-IPv4 packets) on $ext_if. If you block either, nothing will go through your tunnel. Note: these example rules are for pf in OpenBSD 3.1, if you're running an older version, you can't 'keep state' on proto ipv6, and have to pass that protocol statelessly (remove 'keep state'). 5) Reboot. Do it. You can activate the same changes without rebooting, but you'll have to figure out the correct syntax for the ifconfig calls. And if you've already issued some ifconfig gif0 commands, you'd have to properly undo them first. You'll have to reboot anyway to verify the settings works after reboot, so do it NOW. 6) ping6 your tunnel's remote IPv6 endpoint. If that works, your tunnel is up and running. If not, you screwed up one of the above steps. Repeat until it works.