What does Android need so it uses IPv6

please explain why

and also explain here why.
Both are may be valid points but I would like to understand why they would matter.
Thank you

@_bernd thank you for your output, but I don't see any difference. Maybe the problem is that my wifi filters RA but then I would have thought my android clients would have no IPv6 connectivity at all instead of online failing to resolve AAAA records.
Are you maybe aware of a alternative to radvdump on android because it doesn't seem like radvdump does exists for termux?

Android uses SLAAC, which requires a 64 bit interface id.

Are you running on mvebu platform like WRT32X etc? Those seem to trash Ipv6 when I was running them. Switched like 4-5 years ago and everything just works.

as you can see on the radvdump output it uses a /64 via slaac but since I want to allocate from time to time to a router downstream via dhcpv6-pd also a /64 I need the /63 in the config.

My router is x86 so that shouldn't be the problem.

It's the wifi chipset that matters though. But if you don't have the mwlwifi gear then yeah that's not it.

I've recently fixed the Android IPv6 problem in my network and the issue for me was that the preferred lifetime was greater than the valid life time.

The valid life time has to be always equal or greater than the preferred life time, and although the router was announcing bad values, other clients were accepting it.

In your case, the valid life time is greater, but in my tests I've seen that Android rejects the prefix if the two life times are not equal.

Can you try to make both values equal? this is my setup for reference:

config dhcp 'lan'
	option interface 'lan'
	option start '100'
	option limit '150'
	option dhcpv4 'server'
	list dhcp_option '6,192.168.10.1'
	list ra_flags 'managed-config'
	list ra_flags 'other-config'
	option dhcpv6 'server'
	option ra 'server'
	option ra_useleasetime '1'
	option leasetime '10m'
	option preferred_lifetime '10m'
2 Likes

Thank you, sadly did not resolve my problem, my One Plus 8 still refuses to use ipv6 with my network. I'm starting to believe that the problem is maybe not my wifi but my phone. Sadly I don't have any other android device to test with, the linux and windows clients don't have any problem on that network even if I turn DHCPv6 off and do SLAAC only.

Ok I'm completly lost now, after some more testing I found that IPv6 works if I turn off the DHCP for IPv4 on that interface, I don't get it wtf is android doing there? I mean I can resolve AAAA records also via the IPv4 address of my DNS Server.
Maybe somebody with some more android knowledge can enlighten me what is going on here? Because having the Smartphone going IPv4 only mode as soon as there is working IPv4 can't be "works as designed" I would think

Is SLAAC (RA) set to announce the local IPv6 address of the DNS server?

(All of the Android config must come via SLAAC.)

yes it is, I posted the output of radvdump here What does Android need so it uses IPv6 - #9 by BigG there you can see the announced address and I can resolve DNS via it but that seems to be not enough for android, it wants something more and I don't know what.

1 Like

I don't see what I'm refrencing, or perhaps I dont understand your dump.

I usually see it a DNS (not RDNS) in the router SLAAC traffic running tcpdump.

I dont see anything wrong in the config tho - this is what I have:

config dhcp 'lan'
        option interface 'lan'
        option start '100'
        option limit '150'
        option leasetime '12h'
        option ra 'server'

That sets up IPv6 addresses whether I choose/setup prefixes from a 6in4 tunnel, link-local, ULA, wan6 or any combination.

Lease time config of "1" some one else posted...I'm almost certain thay means 1 second...that's seems odd.

1 Like

I don't see anything wrong too that is my problem. I tried everything in this thread and the One plus 8 simply ignored it. The only thing that worked to get IPv6 reliable to work was to break IPv4. I think I will have to read myself into 464XLAT and see if that helps.

1 Like

I was attempting to post all of my LAN config. But its mostly defualt.

  • I slect to assign prefixes
  • Choose to assign /64
  • I select to use prefixes from wan6
  • Under DHCP etc I ensure I announce the DNS via SLAAC
  • SLAAC should already be enabled in the config

Edit - here:

config interface 'lan'
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'
        option ip6assign '64'
        option device 'eth0.1'
        list ip6class 'wan6'
        list ip6class 'local'

(This assigns a wan6 and ULA IPv6 address.)

1 Like

I copied the config 1to1 no success. I even have factory reset the smartphone now.
Maybe that is a one plus 8 pro problem?
Does somebody here have a one plus 8 pro and got there IPv6 working on wifi?
I guess that is to specific for this forum, maybe I should clarify that first on xda or reddit.

Just poking in the dark: is it plain google android or some vendor mod? You could as a "last resort" dig into android debugging with xdb :see_no_evil:

1 Like

It is the factory image from one plus, no custom rom or root.

But is it android one or a vendor mod? Like I own a Nokia 7.2 and this comes with plain android one, but Samsung or Ericson devices have somehow vendor moded firmware and are not all the time allied with the upstream android. But as I said this is just poking. Even I can not quiet imagine that a vendor screw up the networking component that bad.

I'm not sure what the problem was in the end but with a build of the current master of openwrt, android has working IPv6 without changing any config file compared to when the problem still was there. It is a little bit sad that I don't know what the reason for it is, because if it breaks again in a later build I'm again without IPv6 and still in the dark what is causing this behaviour.

1 Like

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.