The 6to4 protocol is a "transitional" protocol which wraps IPv6 packets into raw IP packets (not TCP or UDP), and is very useful if you want to host your own IPv6 web site or another service over IPv6, but you don't have native IPv6 access. You can also sensibly use it only with static IPv4 addresses.
In FreeBSD, 6to4 is remarkably easy to setup. You basically need these lines in /etc/rc.conf:
The two things you need to change in this template are the network interface and your public, static IPv4 address which will be used for the tunnel. This address will also determine your (static) IPv6 address, as 6to4 is designed to "wrap" the entire IPv4 address space into a tiny segment of the IPv6 address space, so every static IPv4 address has a unique 6to4 IPv6 representation. Do not change the ipv6_defaultrouter setting as it is a special anycast address used to find a dynamic 6to4 relay router.
Note that if you use firewalls, you will need some special rules to allow this tunneling. You will need to pass IPv4 traffic of "type ipv6" (i.e. IPv4 protocol 41), and pay special attention to the traffic from the "stf" interface which will be created for the tunnel.
After a reboot to correctly reinitialize the network configuration, you should be able to issue a command like: "ping6 www.freebsd.org" and observe some actual IPv6 traffic.
Unfortunately, if a 6to4 relay router is not relatively near to your network, this kind of tunneling will be very slow - this is usually the case. If you get bad 6to4 tunneling performance, you could complain to your ISP to implement a local 6to4 relay!
For users with dynamic IPv4 addresses (i.e. residential, "dial-up", etc.), some solutions can be implemented using the services of:
Have fun, and search for the awesome KAME dancing turtle!