Okay, what is wrong with this?
ip tunnel add he mode sit remote 216.66.22.2
Usage: ip tunnel { add | change | del | show | prl | 6rd } [ NAME ]
[ mode { ipip | gre | sit | isatap } ] [ remote ADDR ] [ local ADDR ]
[ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ]
[ prl-default ADDR ] [ prl-nodefault ADDR ] [ prl-delete ADDR ]
[ 6rd-prefix ADDR ] [ 6rd-relay_prefix ADDR ] [ 6rd-reset ]
[ ttl TTL ] [ tos TOS ] [ [no]pmtudisc ] [ dev PHYS_DEV ]
Sure looks like the command matches the usage. It took me over an hour to figure out what was wrong. This command worked:
ip tunnel add he-tun mode sit remote 216.66.22.2
It turns out that interface name "he" appears to be confused with a command parameter. That goes away when it contains a special character. Caramelized syntactic sugar.