Tore Anderson <t...@fud.no> writes: > * Bjørn Mork >> Tore Anderson <t...@fud.no> writes: >> >>> This is implemented in Android - its wireless hotspot feature works just >>> fine using IPv6-only + 464XLAT as the upstream mobile connectivity. The >>> hotspot zone remains IPv4-only though, >> >> Really? I have only tested on Android 4.2 (without the CLAT), but USB >> tethering with IPv6 seems to work fine. The phone sends RAs with it's >> allocated prefix. It's also sharing the DNS64 enabled DNS servers via >> DHCPv6, so DNS64/NAT64 works fine from the clients (of the phone). > > Didn't try USB tethering, but there's no IPv6 on the wireless one as > far as I can tell. Here's how it looks under the hood with wireless > tethering enabled, using IPv6 for upstream connectivity: > > shell@maguro:/ $ ip -4 address list scope global > > 10: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state > UP qlen 1000 > inet 192.168.43.1/24 brd 192.168.43.255 scope global wlan0 > 760: clat4: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1480 qdisc > pfifo_fast state UNKNOWN qlen 500 > inet 192.0.0.4/32 brd 192.0.0.4 scope global clat4 > shell@maguro:/ $ ip -6 address list scope global > > 6: rmnet0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qlen 1000 > inet6 2a00:e18:8000:474::f0d9:7a01/128 scope global > valid_lft forever preferred_lft forever > shell@maguro:/ $ ip -6 route show dev wlan0 >
Bluetooth, usb and wifi tethering should all work the same: shell@android:/ $ ip -6 address list scope global 3: rmnet0: <ALLMULTI,PROMISC,UP,LOWER_UP> mtu 1500 qlen 1000 inet6 2a02:2121:0:20:1af7:9832:d35b:7244/64 scope global dynamic valid_lft forever preferred_lft forever shell@android:/ $ ip -4 address list scope global 23: rndis0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bridge0 state UP qlen 1000 inet 192.168.42.129/24 brd 192.168.42.255 scope global rndis0 29: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master bridge0 state UP qlen 100 inet 192.168.43.1/24 brd 192.168.43.255 scope global wlan0 31: bnep0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bridge0 state UNKNOWN qlen 1000 inet 192.168.44.1/24 brd 192.168.44.255 scope global bnep0 But what I believe you missed above is that these devices are added to a common bridge device, and *this* is the device with the global /64 route: shell@android:/ $ brctl show bridge name bridge id STP enabled interfaces bridge0 8000.1c7b214d06a4 no bnep0 rndis0 wlan0 shell@android:/ $ ip -6 route 2001:4600:4:fff::54 via 2a02:2121:0:20:5c56:a476:6058:769b dev rmnet0 metric 1024 2001:4600:4:1fff::54 via 2a02:2121:0:20:5c56:a476:6058:769b dev rmnet0 metric 1024 2a02:2121:0:20:5c56:a476:6058:769b dev rmnet0 metric 1024 2a02:2121:0:20::/64 dev bridge0 metric 1024 fe80::/64 dev bridge0 proto kernel metric 256 fe80::/64 dev rndis0 proto kernel metric 256 fe80::/64 dev rmnet0 proto kernel metric 256 fe80::/64 dev wlan0 proto kernel metric 256 fe80::/64 dev bnep0 proto kernel metric 256 default via 2a02:2121:0:20:5c56:a476:6058:769b dev rmnet0 metric 1024 If you run logcat you'll see that the "radish" process uses ebtables to set up bridge0 as a brouter, switching the shared global IPv6 prefix between USB, WiFi and Bluetooth while routing the RFC1918 IPv4 addresss. You'll also see how the RS and NS messages are processed. > shell@maguro:/ $ getprop ro.product.model > > Galaxy Nexus > shell@maguro:/ $ getprop ro.build.description > > yakju-user 4.3 JWR66Y 776638 release-keys FWIW I an using a Sony Xperia Z1 for my tests: shell@android:/ $ getprop ro.product.model C6903 shell@android:/ $ getprop ro.build.description C6903-user 4.2.2 14.1.G.2.257 _nZ-jw test-keys Bjørn