Installing IPv6 6to4

For 6to4 functionality, you need packages

  • 6to4
  • kmod-sit
  • iptunnel
  • iptunnel4
  • kernel

I didn’t think I would need to install the kernel package again, since the kernel versions was the same. I tried to skip that one with –force-depends, but when I tried to use the 6to4 protocol, I was seeing “missing symbol” errors from sit module in the logs. It seems that when you build kmod-sit as a module, this also causes some additional code branch dependencies to be built in the kernel itself.

Is was able to switch wan6 interface over to the 6to4 protocol, and something seems to be working because I see related info in the interface information:

root@libreCMC:~# ip addr
<snip>
4: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN qlen 1
 link/sit 0.0.0.0 brd 0.0.0.0
<snip>
8: 6to4-WAN6@NONE: <NOARP,UP,LOWER_UP> mtu 1280 qdisc noqueue state UNKNOWN qlen 1
 link/sit <snip-ipv4-public> brd 0.0.0.0
 inet6 2002:<snip>::1/16 scope global 
 valid_lft forever preferred_lft forever

Something stills seems to be amiss, though:

root@libreCMC:~# ping ipv6.google.com
PING ipv6.google.com (2607:f8b0:400a:806::200e): 56 data bytes
ping: sendto: Permission denied

Likely this will be the subject of a future post.

IPv6 Adventures

I’ve been getting a renewed interest in IPv6 lately. libreCMC default features include…

  • IPv6 stack
  • A WAN6 interface
  • IPv6 router functionality
  • DHCPv6 functionality

Unfortunately it seems that my ISP has not rolled out IPv6 support for residential customers, so I don’t have direct access to the IPv6 Internet. But of course I get IPv6 link local addresses generated automatically. And libreCMC by default advertises a router ULA prefix, meaning that my hosts automatically generate ULAs. ULA stands for Unique Local Addresses, which is basically the IPv6 equivalent of IPv4 private addresses. I can ping the libreCMC router from my host over IPv6:

christopher@nightshade:~$ ip neigh
<snip>
fd58:c37c:549c::1 dev eth0 lladdr e4:95:6e:4e:f0:a0 router STALE

# "one ping only"
christopher@nightshade:~$ ping -c 1 fd58:c37c:549c::1
PING fd58:c37c:549c::1(fd58:c37c:549c::1) 56 data bytes
64 bytes from fd58:c37c:549c::1: icmp_seq=1 ttl=64 time=0.471 ms

--- fd58:c37c:549c::1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.471/0.471/0.471/0.000 ms

I am able to view also the libreCMC Web page using the router’s ULA:

Screenshot from 2018-03-01 21-14-19.png

It seems that most Web browsers don’t support viewing a Web page by it’s link local address, for some reason. But, ssh has no trouble with them, so long as you specify the interface:

christopher@nightshade:~$ ssh root@fe80::e695:6eff:fe4e:f0a0%eth0
<snip>
root@libreCMC:~#

I’d like to connect to the IPv6 Internet but was having trouble figuring out the best transition option available to me. I can set the protocol for the WAN6 interface to 6in4 protocol, which I’d like to try, but I need to build and install the 6in4 package first.

It seems that my previous builds do not include busybox’s “ip neigh” program, for discovering other IPv6 hosts on the link. I’m planning to enable that in all future builds.