I'm having trouble setting up my tunnel on Slackware 13. I don't get any explicit errors, and unless I've overlooked something, there are no particular warning signs. Everything looks good until I try to actually use my connection, and then it's like my packets disappear into the mists.
I am behind a netgear router. My box that has the tunnel has the internal IP of 192.168.0.200, and is DMZ'd. (I have tried cutting the router out of the loop, but nothing changed.) The script I use to setup is:
ip tunnel add he-ipv6 mode sit remote 209.51.181.2 local 192.168.0.200 ttl 255
ip link set he-ipv6 up
ip addr add 2001:470:1f10:4fe::2/64 dev he-ipv6
ip route add ::/0 dev he-ipv6
ip -f inet6 addr
ifconfig output:
eth0 Link encap:Ethernet HWaddr 00:08:a1:04:37:80
inet addr:192.168.0.200 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::208:a1ff:fe04:3780/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:688 errors:0 dropped:0 overruns:0 frame:0
TX packets:543 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:79584 (77.7 KiB) TX bytes:93408 (91.2 KiB)
Interrupt:18 Base address:0xd800
he-ipv6 Link encap:UNSPEC HWaddr C0-A8-00-C8-FF-00-68-65-00-00-00-00-00-00-00-00
inet6 addr: 2001:470:1f10:4fe::2/64 Scope:Global
inet6 addr: fe80::c0a8:c8/128 Scope:Link
UP POINTOPOINT RUNNING NOARP MTU:1480 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:61 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:5984 (5.8 KiB)
Should I be worried about that UNSPEC?
I've tried a few different suggestions I've found on this forum, and the Internet in general, to no avail.
I've emailed HE, and they say everything is good on their end, and that they don't have trouble reaching me. Also, they've confirmed that my setup appears correct. So what gives?
TIA
UNSPEC is kind of weird. Maybe you have to modprobe sit? Mine looks like this (gentoo linux w/ 2.6.32-gentoo-r7):
he6 Link encap:IPv6-in-IPv4
inet6 addr: 2001:db8:1234:56::2/64 Scope:Global
inet6 addr: fe80::42da:357c/128 Scope:Link
UP POINTOPOINT RUNNING NOARP MTU:1280 Metric:1
RX packets:7114473 errors:0 dropped:0 overruns:0 frame:0
TX packets:4510267 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3495262385 (3.2 GiB) TX bytes:410184415 (391.1 MiB)
I notice that there are no RX packets on your interface. Are you sure that the proto-41 packets are making it back to your tunnel box? You may want to do a tcpdump on the eth0 nick and make sure you see the 6in4 traffic.
May also want to check if you are running iptables and see if that's blocking the incoming packets.
UNSPEC may, or may not, be relevant. I have a somewhat similar setup and I have the same problem as the OP. I downloaded a current copy of net-tools (the source for ifconfig) and built the package with IPv6 and tunnels enabled. Afterwards I get the desired "IPv6-in-IPv4" response.
Although you defined an IPv4 tunnel endpoint, I don't see an IPv4 address assigned to your "he-ipv6" interface.
On my colocated server, my base installation is Slackware 13.1 64-bit (with some packages updated to the most current by compiling from source), so there's very little difference in software. Therefore, your problem must be with the system's configuration -- and assigning an IPv4 address to the tunnel virtual interface is the one thing I did differently as compared to the above.
My ifconfig output:
Quotesit0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:XX.XX.XX.XX Mask:255.255.255.255
inet6 addr: ::XX.XX.XX.XX/96 Scope:Compat
inet6 addr: 2002:XXXX:XXXX::1/16 Scope:Global
UP RUNNING NOARP MTU:1480 Metric:1
RX packets:184682 errors:0 dropped:0 overruns:0 frame:0
TX packets:183930 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:15463052 (14.7 MiB) TX bytes:99187579 (94.5 MiB)
sit1 Link encap:UNSPEC HWaddr XX-XX-XX-FE-FF-FF-00-00-00-00-00-00-00-00-00-00
inet addr:XX.XX.XX.XX P-t-P:XX.XX.XX.XX Mask:255.255.255.255
inet6 addr: 2001:470:c:XXXX::2/126 Scope:Global (My IPv6 Tunnel Endpoint)
inet6 addr: fe80::XXXX:XXXX/128 Scope:Link
UP POINTOPOINT RUNNING NOARP MTU:1480 Metric:1
RX packets:53578899 errors:0 dropped:0 overruns:0 frame:0
TX packets:56838236 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:10873952606 (10.1 GiB) TX bytes:12255869749 (11.4 GiB)
Note the differences (ignoring the "X"s). The IPv4 address assigned to a virtual interface such as a tunnel endpoint can be the same as assigned to an ethernet address, e.g. 192.168.0.200 in your case.
Note that since you don't assign any global IPv6 address to your ethernet, all packets to and from that machine will carry your tunnel endpoint address.
The "UNSPEC" isn't anything to worry about. 6in4 and 6to4 work for me with it present.
My sit0 in slack 13.1 has nothing assigned.
Only difference between mine and his is that I use a globally routed v4 endpoint for tunnel termination.
echo -n "Creating tunnel..."
/sbin/ip tunnel add he-ipv6 mode sit remote 216.66.22.2 local 74.93.245.185 ttl 255
echo "done."
echo -n "Setting up tunnel interface he-ipv6..."
/sbin/ip link set he-ipv6 up
/sbin/ip addr add 2001:470:7:12::2/64 dev he-ipv6
/sbin/ip route add ::/0 dev he-ipv6
echo "done."
It should be noted I used this same config for slack 12.x as well as 13.x