More info:
Ok I am trying to get the concepts down.
I did a traceroute from the router:
Tracing the route to www.kame.net (2001:200:0:8002:203:47FF:FEA5:3085)
1 moc-1.tunnel.tserv12.mia1.ipv6.he.net (2001:470:4:138::1) 104 msec 80 msec 76 msec
2 gige-g2-3.core1.mia1.he.net (2001:470:0:8C::1) 76 msec 84 msec 80 msec
3 10gigabitethernet5-4.core1.ash1.he.net (2001:470:0:4B::1) 112 msec 104 msec 104 msec
...
Oct 9 03:18:09.123: IPv6: SAS picked source 2001:470:4:138::2 for 2001:200:0:8002:203:47FF:FEA5:3085 (Tunnel0)
Oct 9 03:18:09.123: IPV6: source 2001:470:4:138::2 (local)
Oct 9 03:18:09.123: dest 2001:200:0:8002:203:47FF:FEA5:3085 (Tunnel0)
Oct 9 03:18:09.123: traffic class 0, flow 0x0, len 48+0, prot 17, hops 1, originating
Oct 9 03:18:09.123: IPv6: Sending on Tunnel0
The trace is successful and the way I read the debug the router knows to use its "public" ipv6 address and send it out the tunnel. Works great.
Here is the same thing from my linux host on the LAN side of that router:
traceroute 2001:200:0:8002:203:47ff:fea5:3085
traceroute to 2001:200:0:8002:203:47ff:fea5:3085 (2001:200:0:8002:203:47ff:fea5:3085), 30 hops max, 40 byte packets
1 fe80::217:59ff:fe71:5439%eth1 (fe80::217:59ff:fe71:5439%eth1) 1.881 ms 2.951 ms 4.211 ms
2 * * *
DEBUG FROM ROUTER:
Oct 9 03:16:45.852: IPV6: source FE80::201:6CFF:FE33:E26D (FastEthernet0/1)
Oct 9 03:16:45.852: dest 2001:200:0:8002:203:47FF:FEA5:3085 (Tunnel0)
Oct 9 03:16:45.852: traffic class 0, flow 0x0, len 88+14, prot 17, hops 1, bad hop count
Oct 9 03:16:45.852: IPv6: SAS picked source FE80::217:59FF:FE71:5439 for FE80::201:6CFF:FE33:E26D (FastEthernet0/1)
Oct 9 03:16:45.852: IPV6: source FE80::217:59FF:FE71:5439 (local)
Oct 9 03:16:45.852: dest FE80::201:6CFF:FE33:E26D (FastEthernet0/1)
Oct 9 03:16:45.852: traffic class 0, flow 0x0, len 136+0, prot 58, hops 64, originating
Oct 9 03:16:45.852: IPv6: Sending on FastEthernet0/1
Oct 9 03:16:45.856: IPV6: source FE80::201:6CFF:FE33:E26D (FastEthernet0/1)
Oct 9 03:16:45.856: dest 2001:200:0:8002:203:47FF:FEA5:3085 (Tunnel0)
Oct 9 03:16:45.856: traffic class 0, flow 0x0, len 88+14, prot 17, hops 2, invalid source address
The way I am reading this the linux host "knows" that the ipv6 route is out through the FastEth0/1 interface of the router. But the router is using the faste ipv6 addr instead of the one on the tunnel when forwarding the packets. This to me seems similar to a NAT problem. Am I on track ? if I were able to add a NAT statement to translate the ipv6 address on the fastE0/1 interface to the ipv6 address on the tunnel 0 interface, would that work ?