Android and IPv6


I am having a problem configuring OpenWRT to use IPv6, specially with Android clients.
As far as I know, Android doesn't have DCHPv6, and must use NDP to work. Windows/Linux could use both. I read a lot of tutorials and technical data, but I am stuck.

I use Hughes satellite internet, that gives /64 IPv6 adresses (seems what I need). It comes with a cheap router, with that I could use IPv6 with Android/Windows/Linux gracefully, but I'm unable to get and copy those configuration to OpenWRT. So ISP maybe not a problem.
For Android I mean 7.0 Nougat and for OpenWRT I mean version 18.06.1.

So far, the only configuration of DHCP I was able to use IPv6 with Windows/Linux is:

        option ra_default '1'
        option ra 'hybrid'
        option ra_management '0'
        option dhcpv6 'hybrid'
        option ndp 'hybrid'

But with this config, Android connects to WiFi, gets an IPv4, then gets an IPv6 and then disconnects, like not having connectivity. Even if I put the WiFi network to keep connected without Internet access...
Any other combination of this and Windows/Linux can't connect to IPv6 address. I couldn't understand why.
In order to connect Android to WiFi, I need to disable IPv6 (WAN6, all DHCP configs or at least "Router Advertisement-Service").

I've tried disable firewall, and nothing changes, so probably it is not a missing rule of NDP. I've also have a guest network, same problem occurs without it. I was able to have lan with IPv6 for Windows/Linux and use guest without IPv6 only for Androids...

Any help is welcome. If needed I send more config files and screenshots. I want to bring this for discussion to try to isolate the problem.


I'm not sure what type of IPv6 WAN you have...but I use the following after assigning an IPv6 [static] address and prefix to LAN:

	option ra 'server'                 
	list dns 'xxxx:xxxx:xxxx:xxxx:xxxx:1'

I likewise don't use DHCPv6 due to Android not supporting it.

I have WAN and WAN6 using DHCP from modem. I understand that should not be needed, as it define itself as gateway and DNS server.

I was messing around, and tried to remove "list dns"/"Announced DNS servers" options (I was using Google IPv6 DNS). Now it's working with server or hybrid configs, Android at all.
I'm not sure if it is a bug or why this is happening.

If you're receiving an IPv6 address son WAN via DHCPv6, your issue is likely that your LAN doesn't have IPv6 addresses.

Glad you got it working.

My LAN is working fine, I get one local IPv4, one fe80 IPv6 and two 2804 IPv6s.

But GUEST network still not working, even cloning all configurations and disabling firewall. In Android I only get I get one local IPv4 and one fe80 IPv6, then it disconnects.

Correct, you don't have IPv6 on the local network "Guest."

And what can block network GUEST to get IPv6?

Firewall is off. DHCP is set as

        option ra_default '1'
        option ra 'hybrid'
        option ra_management '1'
        option dhcpv6 'hybrid'
        option ndp 'hybrid'


        option ra 'server'
        option dhcpv6 'server'

DNS server should not affect IP assign.

I never said it did.

How are you assigning prefix to lan? You would do the same.

You likely need a larger subnet, 2 subnets, or to divide the /64.

I hooked up a travel router to a site that had Hughes and got an ip6 prefix, so I do think they offer more than a 64. It was a while back and don't remember details.

I have Comcast, not Hughes. That said, I was unable to divide a /64 back with LEDE, it would cause errors. So I request and receive a /60 from Comcast and divide that between the regular and guest networks.


Thanks, now I understand.
I tried to request /60 or less with no success. It is the same Hughes, I am using in Brazil, so is another satelitte. I will contact support.
I will maybe leave GUEST with IPv4 only. It is better to have any internet than none.

Two things are still not clear to me:

  1. Is IPv6 assignment length and hint configs in LAN/GUEST used for NDP or only for DHCPv6?
  2. Is it possible to have LAN/GUEST /65 or /68 subnets? How to do this? (Sorry I didn't find anywhere)

Smallest proper subnet is a /64 according to standards. ISPs should give /60 or /56 routinely, but they don't always do it. Still I think Hughes does based on the one place I encountered it.

1 Like