Here's what I have in a Fedora system, in /etc/sysconfig/network-scripts/ifcfg-sit1 (there are three files with this name, hardlinked to each other).
# Hurricane Electric V6V4 tunnel
NAME="Hurricane Electric SIT"
DEVICE=sit1
ONBOOT=yes
USERCTL=yes
BOOTPROTO=none
PEERDNS=no
IPV6INIT=yes
IPV6_AUTOTUNNEL=yes
IPV6ADDR="$ipv6b/64"
# IPV6ADDR_SECONDARIES=""
IPV6_MTU=1280
IPV6_ROUTER=yes
IPV6_AUTOCONF=no
IPV6_CONTROL_RADVD=yes
IPV6TUNNELIPV4=$ipv4a
IPV6TUNNELIPV4LOCAL=$ipv4b
PHYSDEV=eth0
TYPE=sit
DEVICETYPE=sit
NM_CONTROLLED=no
You might want to turn off USERCTL, and tinker with the MTU; mine's at the minimum. IPV6_AUTOTUNNEL and IPV6_AUTOCONF are mysteries to me, but it works with those values. I'm not sure if PHYSDEV is necessary, but if it is, it's the interface with $ipv4b on it. TYPE and DEVICETYPE are probably redundant, but I'm not sure which one is really needed. You could try letting NetworkManager control it with NM_CONTROLLED, but if you do, you're on your own.
IPV6ADDR_SECONDARIES could be filled with extra addresses from your routed /64 and /48, if you want your routing Linux box to be able to use those addresses. Maybe.
And of course, in your /etc/sysconfig/network file, you should have "IPV6_DEFAULTDEV=sit1". If you like, you can also include "IPV6_DEFAULTGW=$ipv6a".
Edit: Minor typo in env variable name.