Michael Adams, 2-22-2010, 11-27-2011, 4-22-2013 (current rev)
![]() |
IntroductionWith the advent of Windows 7, advanced IPv6 support in Linux and OSX, and the exhaustion of IPv4 addresses, it becomes a matter of urgency to transition to IPv6 networking. This document is a successor to one I wrote back in 2007 that demonstrated static networking of a single subnet.Platforms and software for this reference 1. tinc: a mesh-capapble VPN software created in the 2000s. This example should work with any 1.0.x version or later. 2. Quagga: an open-source routing software. Version 0.98 or later is required: version 0.99.x highly suggested! 3. Babel: if you plan on using both IPv6 and IPv4 subnets (for security cameras, gate systems, and legacy industrial equipment). 3. Lower-capacity sites may successfully use routers reprogrammed with OpenWRT: use version 12.09 / Attitude Adjustment or later. This is also the easiest way to set this up. 4. Higher-capacity or main node sites should use Debian or Ubuntu Linux: latest version of either preferred. 5. IPFire 3.x (still in development as of 2013) appears to have support for IPv6, tinc, and Quagga. Babel support is less certain. 6. ClearOS as a platform works, but you'll need to hunt down the latest RPM files for RHEL or CentOS for tinc/Quagga/Babel; Fedora RPMs don't work with these variants. Workstation-specific materialsPrivacy AddressingIf you want to make it easier to administer Linux and Windows systems (as well as not clog up AD with a bunch of temporary addresses), you can force your workstations to not use privacy addresses that are used for accessing external servers. Windows: as an Administrator, run the following in command prompt...
netsh interface ipv6 set privacy state=disableLinux: add the following to you /etc/sysctl.conf ... net.ipv6.conf.all.use_tempaddr=0Software *. IPv6 workstation toolset : includes configuration batch files, copies of stone for 32-bit and x64 Windows, and a 3rd-party LPD for XP. *. VNC viewer for IPv6: the original author's website went down in 2010; I have a copy of it. Getting your networks For this setup, you will use have two networks: one internal for your administrative needs; and one to access global Internet with. * Internal network: read up on Unique Local Addressing, then generate a ULA range using UltraTools, SixXS, or KAME. * External network: obtain a /48 or /56 from your main site's ISP, else sign up for tunnel access with Hurricane Electric or SixXS. If you can get a /64 for each of your sites, adjust the "GLOBAL /48" entries as if they were local. |
| PASSWORD | Any password suitable for the config file in question. |
| LOCALNET | Interface name that will host local subnets: usually "br-lan" on OpenWRT or "eth0" on Debian/Ubuntu. |
| GLOBAL | First 3 parts of a globally-accessible IPv6 range, i.e. "2001:db8:beef". |
| ULA | First 3 parts of an internally-routed IPv6 range. |
| SITENAME | Name of the site being configured. In tinc, its also used to associate with hostname files. |
| SUB |
The octet of the local subnet, i.e. "a" in "2001:db8:beef:a::/64" |
| INT |
Integer number |
opkg update
opkg install kmod-ipv6 kmod-ip6tables kmod-tun ip nano libreadline
iptables-mod-extra kmod-sit
opkg install alive6 6tunnel tinc babeld quagga-libzebra quagga-zebra
quagga-ospf6d
opkg install luci luci-sgi-uhttpd
/etc/init.d/uhttpd enableopkg install netstat-nat htop iftop snmpd ntpclient
opkg install ip6tablestincd -n link
/etc/init.d/quagga restart
killall -9 babeld
rm /var/run/babeld.pid
babeld -c /etc/babeld.conf -D-A INPUT -p tcp -m multiport -j ACCEPT --dports 655
-A INPUT -p udp -m multiport -j ACCEPT --dports 655
| OpenWRT | Debian/Ubuntu |
kernel.panic=3 |
net.ipv4.ip_forward=1 |
/etc/tinc/nets.boot |
/etc/tinc/link/tinc.conf |
/etc/tinc/link/tinc-up (chmod a+x) |
/etc/tinc/link/tinc-down (chmod a+x) |
/etc/tinc/link/hosts/master |
/etc/tinc/link/hosts/SITENAME |
link
|
Name=SITENAME |
#!/bin/sh |
#!/bin/sh |
Address=IP
ADDRESS OF MASTER NODE |
Port=655
|
| /etc/babeld.conf |
/etc/restart-babel.sh (chmod a+x) |
interface
vpn6 wired false split-horizon true |
#!/bin/sh |
/etc/quagga/daemons |
/etc/quagga/ospf6d.conf | /etc/quagga/zebra.conf |
zebra=yes
|
password PASSWORD |
hostname SITENAME
|
| Debian/Ubuntu:
add to /etc/rc.local |
/etc/dhcpd6.conf |
/etc/reset-dhcp.sh
(chmod a+x) |
/usr/bin/touch
/var/lib/dhcp/dhcpd6.leases |
option
dhcp6.domain-search "DOMAIN";
|
#!/bin/sh
|