1

I have a home network with a router provided by the ISP (Free in France). This router supports IPv6 and broadcasts RA which includes the DNS to use. It also offers DHCP services and forwards DNS queries.

To simplify things, let's assume I started with this setup - everything works fine, and all my Wi-Fi devices connect correctly.

I then decided to add a host with Pihole. The idea is to replace with it the router's DHCP and DNS functionality and disable the DHCP server on the router). I installed the service and started to distribute via its DHCP the IPv4 DNS address (= the address of the Pihole).

It worked everywhere, except for a single Pixel 6 phone that started to continuously disconnect and reconnect to the WiFi, in a loop (as soon as it would connect, it would disconnect - the frequency was about a second).

I spend countless hours trying to understand what that phone fails (out of many other Wifi devices that work great: phones, radios, Chromecasts, Google minis, my own Arduino IoTs, Tuya devices, ESPHome devices, ... → all of them worked fine).

Because of unrelated issues I realized that the ISP router is sending a faulty IPv6 DNS server address as part of its RA (it was sending a non-existing address). I fixed that and immediately the Pixel 6 started to behave normally (connects to the WiFi and stays there).

My question: how can a faulty IPv6 DNS advertisement (part of the RA) impact the WiFi connection (specifically: the continuous presence in that WiFi, the low-level connexion went fine) of a Pixel 6?

My question is more general, but I only witnessed first-hand the issue with a Pixel 6.

2
  • Do you mean that you now have two DHCP servers on the local network?
    – harrymc
    May 7 at 10:47
  • @harrymc: no no, the router DHCP is disabled (I now clarified this in the question)
    – WoJ
    May 7 at 12:00

1 Answer 1

1

This behavior seems logical from a phone that doesn't give up.

As the router was still the source of the internet, the Pixel 6 phone was correctly trying to get IPv6 internet from an IP that however doesn't exist, so entering into a loop.

Perhaps the loop was caused by the phone broadcasting repeatedly its request for the address of the router, and getting repeatedly the wrong answer.

(I remark that this phone seems to be really determined to get everything going correctly. Most phones would have stopped trying at some point.)

4
  • This is what I thought too, but here the only faulty information it was getting was the DNS server address. The other ones were fine (notably its own IP). It means it must have tried to connect to the DNS server (the one that did not exist). And the appropriate response would have been "No Internet Connection" (which is incorrect but at least conveys a reasonable message). Disconnecting entirely from the network does not seem to be a wise decision as it does not even allow for troubleshooting. Its IPv4 connectivity would have been OK from end to end (IP, DNS server, connectivity, ...)
    – WoJ
    May 7 at 12:42
  • There was internet connection with DNS from that router on IPv4, so the phone couldn't just discard it out of hand. The Pixel programmers did not foresee a case where IPv4 works perfectly and that IPv6 is connected and answers are coming back, but are actually wrong.
    – harrymc
    May 7 at 12:50
  • I am not sure I understand your last comment. Yes there was Internet connection at all times, both for IPv4 and IPv6. IPv4 had a correct DNS server provided. IPv6 had a wrong DNS server (not even the router's one, it was another one) - so it could have gone either into "Internet OK" (and forget about IPv6 DNS resolution), or "Internet not OK" (if it insisted to have both stacks OK). Either would have been OK, but completely disconnecting from the Wi-Fi is not. I was hoping for some IPv6 without DNS cannot work and the RFC states that you have to abort your network connection at layer 2 :)
    – WoJ
    May 7 at 13:03
  • The logic of the pixel programmers was different : The RA broadcast message with a wrong DNS IPv6 address advertised the router, or the phone had broadcast a request and received this answer. The DNS server failed to function, so the pixel decided to reconnect and try again in an unlimited loop. That's what the programmers decided, which I agree was very short-sighted.
    – harrymc
    May 7 at 16:38

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .