IPv6Config allows to configure some of the IPv6 kernel settings. Currently, it allows to automatically enable the "Privacy Extensions for Stateless Address Autoconfiguration in IPv6" as specified in IETF RFC4941 and implemented by the standard Linux kernel and to establish 6to4 tunnels for IPv6 connectivity with providers that only provide IPv4 addresses so far. This will currently ONLY WORK ON ROOTED DEVICES!
With IPv6 as the next Internet Protocol, the default behavior on current Android systems is to derive IPv6 addresses from a so-called prefix that is automatically announced (broadcast) in a network that has been IPv6-enabled and the so-called suffix that includes the MAC address of the network card.
Including the MAC address in this automatically generated IPv6 addressing scheme means that, independently of the network a specific device connects to, the last 64 Bits of its IPv6 address will always remain the same. Even when moving between different networks, each device using this scheme is therefore uniquely identifieable by its suffix. This allows to easily track devices as they connect to different networks and whenever they use any network resources.
When enabled, the RFC4941 extensions cause a device to generate dynamic IPv6 address with random suffixes and change these addresses randomly. This prevents tracking a device, as it is unlikely that it will use the same address again (and if so, then only by chance). This android application can be set to start at device bootup and automatically set the appropriate Linux kernel configuration option on all known network interfaces (WiFi and GPRS/UMTS, mostly) so that they will use randomly generated addresses instead of those derived from the device MAC address.
In addition to enabling privacy, this application also allows to configure so-called 6to4 tunnels based on a single IPv4 address the device holds (e.g. the UMTS/GPRS/EDGE assigned IPv4 address). This allows using IPv6 even when your Internet provider does not yet support it.
This application has been tested successfully on:
* Google Nexus S GT-i9023 with Android 2.3.3 (rooted with Clockwork Recovery 220.127.116.11-crespo, then busybox installed with Busybox Installer app)
* HTC Desire with Android 2.2 (unrevoked)
* HTC Desire HD with Android 2.3 (Visionary+ r14)
* Samsung Galaxy S2 rooted with modified kernel (flashed with Odin)
* Motorola Milestone with Cyanogenmod 7 rc3
IPv6Config will not currently work on:
* Motorola Milestone with stock Android 2.1 (ip binary missing)
* Samsung Galaxy Tab GT-P1000 (z4root) because the Samsung kernel has not been compiled with IPv6 address privacy extensions. (busybox also doesn't link to the ip binary, but that could be worked around by calling "busybox ip" instead of "ip".)
Full source code of this application can be downloaded from https://gitorious.org/android-ipv6config under the terms of the GNU General Public License version 3. If you wish to support development of this and other Android applications for network protocol support and security and privacy, consider buying the donate version of IPv6Config.
Enhancements: This version will react to changes in network connectivity and try to re-establish the 6to4 tunnel automatically. A new expert option allows to ignore the address sanity checks and force creation of a tunnel. Additionally, the user interface is more responsive.
Bugfixes v2.2: This version fixes a few error cases on a small number of devices caused by different interface names and ip binary locations. It now works on a (rooted) Samsung Galaxy S2. Further sanity checks for devices.