What is Android CLAT?

CLAT handles the translation of ipv4 to ipv6 for applications that do not support dns64. CLAT is needed when transitioning to ipv6 on gsm networks using nat64 as the ipv4 access method. Android CLAT is the implementation of CLAT for the Android platform

Below, you can see how CLAT fits in to the other pieces of 464xlat (RFC6877)

How can I install Android CLAT?

If you have Android 4.3 jellybean or later on your phone: it's already installed. Official Google Nexus images of 4.3 will need a /system/etc/clatd.conf file. CyanogenMod 10.2 and Google's 4.4 works from a fresh install.

How can I test that 464xlat is operating properly?

While on the IPv6 APN, visit this helpful ipv6 test page

Where can I see the source code?

the source to the clatd process

Can I use clat/464xlat with a wifi connection?

Android does not (yet) support IPv6-only wifi connections, and this software was not designed to offer CLAT services via a wifi connection. It can be made to work by giving CLAT an IP to use in the config file, along with answering ND for that IP on the handset (set the proxy_ndp sysctl and use ip -6 neighbor add proxy ...). Please note that running this CLAT implementation requires IPv6 forwarding turned on, so if you're relying on RA autoconfiguration (SLAAC) you'll need to configure a static IPv6 global address on the wifi interface. Also note that multiple handsets running 464xlat on the same wifi network will result in IPv6 address conflicts if you don't make sure each one has a unique hostid for its clat function.

Can I use the same IPv6 IP for my handset's global traffic and CLAT traffic?

Not for this implementation. It relies on the routing table of the handset to separate traffic to the handset and traffic to the CLAT process. You will need one global IPv6 address for the handset and one for the CLAT process.

How can I be notified of changes to this project?

There are no further changes planned

How does ipv6 tethering work when there's only one /64 prefix delegated to the handset?

This is documented in RFC7278: Sharing /64 3GPP Mobile Interface Subnet to a LAN. Note that this functionality is not in base Android as of 5.1 Lollipop, but some vendors have implementations.


- maintenance taken over by Google/Android -
2014-03-16 - rebuilt apk to work on Android 4.1 devices without FORTIFY_SOURCE
2013-08-20 - note that 464xlat is built into Android 4.3 and by extension, CyanogenMod 10.2
2013-06-14 - worked around bug in skype's assumptions about default routes
2013-05-07 - rooted app updated to include logging to /data/misc/clatd.log, fixed a bug related to the dns server being unreachable during startup, fixed a bug related to the config file location
2012-12-21 - built App that brings 464xlat and IPv6 tethering to rooted phones
2012-12-02 - built Jellybean v4.2.1 ROM for the Galaxy Nexus
2012-08-25 - fixed IPv6 tethering
2012-08-19 - fixed procrank/procmem, fixed clatd hanging on network transition
2012-08-07 - rebuilt against cm10 (jellybean)
2012-05-23 - update the website, added some FAQ's, added an RSS feed
2012-05-18 - [1.6.1] fixed memory leak on locking
2012-04-27 - [1.6.0] built as rom instead of a mod, includes ipv6+ipv4 tethering, switched to github
2012-03-19 - rebuilt the mod against Codename Android 1.5.5 ROM, include a patch for IPv4 tethering
2012-02-22 - rebuilt the mod against Codename Android 1.4.0 ROM
2012-02-06 - rebuilt the mod against Codename Android 1.3.2 ROM
2012-02-03 - rebuilt the mod against Codename Android 1.2.0 ROM
2012-02-02 - don't stop clat if a secondary PDP is brought up
2012-01-23 - rebuilt the mod for the v3.0.3 ROM
2012-01-16 - fix a byte-order bug and guard against a race when shutdown is still running while setup is starting
2012-01-15 - add a config option to re-add the default route, in case it comes from an RA (which will be cleared when ipv6 forwarding is turned on)
2012-01-06 - create a new init script that gets called on clat shutdown, to disable ipv6 forwarding (so IPv6 RA/autoconfiguration works on wifi)
2011-12-10 - started Android port
2010-12-29 - switched from a LD_PRELOAD library to a tun-based nat46
2010-12-28 - ipv6 tethering on the n900 using 64share (rfc7278)
2010-08-10 - project started on the n900 - https://code.google.com/p/n900ipv6/