I have Xiaomi Redmi 4X with rooted Android 8.1.0 AospExtended-v5.3-OFFICIAL (but it also don't work on stock Xiaomi Redmi 4X - on Android 7 without root).
I set up RADVD on Raspberry Pi (forwarding enabled) and IPv6 Hurricane tunnel. My desktop and notebook with Archlinux working perfectly with IPv6 (DualStack and IPv6-only) but 2 Xiaomi don't work (with root and without it) although getting two IPv6 addresses (temporary) and SLAAC with EUI-64.
These addresses are from my /64 prefix. I can ping it from Desktop with fe80:: and can ping Desktop from Androids.
But i can't ping Goolge DNS (2001:4860:4860::8888) and other IPv6 addresses.
Adnroid get IPv6 from RADVD:
ip -6 addr
26: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 11:22:33:44:55:66 brd ff:ff:ff:ff:ff:ff inet 192.168.0.111/24 brd 192.168.0.255 scope global wlan0 valid_lft forever preferred_lft forever inet6 2001:470:****:****:1234:1234:1234:1234/64 scope global temporary dynamic valid_lft 86382sec preferred_lft 14382sec inet6 2001:470:****:****:1122:33ff:fe44:5566/64 scope global mngtmpaddr dynamic valid_lft 86382sec preferred_lft 14382sec inet6 fe80::1122:33ff:fe44:5566/64 scope link valid_lft forever preferred_lft forever
Output by ip -6 route is empty.
I trying differents flags like AdvOtherConfigFlag, AdvManagedFlag, AdvHomeAgentFlag and others but it were wrong - Android get IPv6, can ping fe80:: , but can't ping IPv6 Internet.
When i disable RADVD on my local network and set up IPv6 addresses on rooted Android manually:
ip link set dev wlan0 down
ip -6 addr add 2001:470:****:****:1234:1234:4321:4321/64 dev wlan0
ip -6 addr add 2001:470:****:****:1122:33ff:fe44:5566/64 dev wlan0
ip link set dev wlan0 up
ip -6 addr
28: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000 inet6 2001:470:****:****:1234:1234:4321:4321/64 scope global valid_lft forever preferred_lft forever inet6 2001:470:****:****:1122:33ff:fe44:5566/64 scope global valid_lft forever preferred_lft forever inet6 fe80::1122:33ff:fe44:5566/64 scope link valid_lft forever preferred_lft forever
After add default route to Raspberry Pi:
ip -6 route add default via fe80::****:**ff:fe**:**** dev wlan0 proto
ra metric 100 pref medium
Then pings starts to work! I can ping and open IPv6 sites on Android!
If i enable RADVD (Android get two IPv6) and add route manyally to Raspberry Pi - i whatever can't ping IPv6 addresses in Internet.
My radvd.conf on Raspberry Pi
interface eth0 {
AdvSendAdvert on;
MinRtrAdvInterval 300;
MaxRtrAdvInterval 600;
AdvHomeAgentFlag off;
AdvManagedFlag off;
AdvOtherConfigFlag off;
prefix 2001:470:****:****::/64 {
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
};
What do you think: why Andorid working with manually IPv6 and not work with RADVD?
Thank you for answers!
After 3 weeks i found a solution! Problem was in my router TPLink H-Ver = WR841N v8 00000000 : S-Ver = 3.16.9 Build 170210 Rel.42078n (last firmware).
IPv6 don't working with Wi-Fi devices Androids, Notebooks with different Linux. But notebooks works with Ethernet connection!
When i change my router with another, Androids and other Wi-Fi devices get IPv6, opening IPv6 sites and profit!
I think what my TPlink not supported IPv6 becouse it is very old.