NAT-safe IPv6 Tunnel from Mac OS X to Linux Server
Here is how I routed myself a block of IPv6 to my laptop, wherever I am in the world! Note that I deliberately route myself an entire /64, but only allow a /128 through tinc (to reduce the amount of junk I might drown in). It should be relatively trivial to swap addresses if necessary in future.
Mac OS X Laptop
tinc.conf
Name = laptop ConnectTo = server DeviceType = tun Mode = router
tinc-up
#!/bin/sh ifconfig $INTERFACE up ifconfig $INTERFACE inet6 add 2001:0db8:1234:5678:cafe:babe:feed:face prefixlen 64 route add -inet6 2001:0db8:1234:5600::1 -prefixlen 56 -iface $INTERFACE route add -inet6 :: -prefixlen 0 2001:0db8:1234:5600::1
tinc-down
#!/bin/sh route delete -inet6 :: -prefixlen 0 route delete -inet6 2001:0db8:1234:5678:: -prefixlen 64 route delete -inet6 2001:0db8:1234:5678:cafe:babe:feed:face ifconfig $INTERFACE inet6 delete 2001:0db8:1234:5678:cafe:babe:feed:face prefixlen 64 ifconfig $INTERFACE down
~/bin/ipv6
#!/bin/sh sudo /opt/local/sbin/tincd -D -c ~/.tinc
Debian Linux Server
nets.boot
tunnel-5600
tunnel-5600/tinc.conf
Name = server DeviceType = tun Mode = router Subnet = 0:0:0:0:0:0:0:0/0
tunnel-5600/tinc-up
#!/bin/sh ip addr add 2001:0db8:1234:5600::1/56 dev $INTERFACE ip link set $INTERFACE up
tunnel-5600/tinc-down
#!/bin/sh ip addr del 2001:0db8:1234:5600::1/56 dev $INTERFACE ip link set $INTERFACE down
Common
hosts/laptop
Subnet = 2001:0db8:1234:5678:cafe:babe:feed:face/128 -----BEGIN RSA PUBLIC KEY----- SNIP -----END RSA PUBLIC KEY-----
hosts/server
Address = 192.168.1.1 Subnet = 0:0:0:0:0:0:0:0/0 -----BEGIN RSA PUBLIC KEY----- SNIP -----END RSA PUBLIC KEY-----
