DNSv6 in use, despite it beeing disabled.

Expected Behaviour:

I want all my devices to only use my DNSv4 (pihole), but my network needs IPv6 enabled.

Following this (@Bucking_Horn) advice, I should not give my pihole an IPv6 address inside docker. Or at least it is not necessary.

I also followed this advice, where I configured my router like this:

a. Untick Also announce DNSv6 server via router advertisement (RFC 5006).
b. Tick Disable DHCPv6 server in the FRITZ!Box for the home network and
b.1. choose There are no other DHCPv6 servers for the home network.

Setup:

Operating System (Family and Version)

  • DSM 7.2.2-72806 Update 4

Hardware

  • Synology DS723+

Docker compose file or Docker run command

services:
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
    environment:
      TZ: #myTimezone
      WEBPASSWORD: #myPassword
      WEB_PORT: #myPort
      FTLCONF_LOCAL_IPV4: #piholesIPV4
      DNSMASQ_USER: 'root'
      DNSMASQ_LISTENING: 'local'
    volumes:
      - '#myPath/:/etc/pihole'
      - '#myPath/:/etc/dnsmasq.d'
    network_mode: "host"
    restart: unless-stopped  

Docker engine version

  • 24.0.2

Actual Behaviour:

My desktop PC still uses DNSv6.

nslookup google.com
  Server:fritz.box
  Address:  fd30:...:3cdd

Thus, bypassing my pihole, which is my configured upstream DNSv4.

This probably should not show the IPv6 address of my router anymore?

ipconfig /release
ipconffig /renew
ipconfig /flushdns
ipconfig /all
...
DNS-Server  . . . . . . . . . . . : fd30:...:3cdd #fritzbox DNSv6-Server
                                    2a02:...:3cdd #ig also fritzbox?
                                    192... #my pihole ip
...

After follwing the router settings from above, it was working yesterday. But today my PC is using DNSv6 again. Did I miss something?

I appreciate your help :blush:

Please upload a debug log and post just the token URL that is generated after the log is uploaded by running the following command from the Pi-hole host terminal:

pihole -d

or if you run your Pi-hole as a Docker container:

docker exec -it <pihole-container-name-or-id> pihole -d

where you substitute <pihole-container-name-or-id> as required.

1 Like

Note about your compose file:

These environment variables are invalid when used with Pi-hole v6.

Please base your compose file on the v6 compose file example.

Also, read the Configuration documentation and the tips to upgrade the environment variables.

1 Like

Sure: https://tricorder.pi-hole.net/XCIv42AH/

Okay, good to know!

Today my Desktop PC is using the pihole again, altough I didn’t change anything.

nslookup googleadservices.com
Server:  fritz.box
Address:  fd30:...:3cdd

*** No internal type for both IPv4 and IPv6 Addresses (A+AAAA) entries available for googleadservices.com.
(Also shown in the Pihole query log)
2025-10-01 19:39:02		AAAA	googleadservices.com	192.168.1.1	8.1 µs	
2025-10-01 19:39:02		A	googleadservices.com	192.168.1.1	16.0 µs	
ipconfig /all
...
DNS-Server  . . . . . . . . . . . : fd30:...:3cdd
                                    2a02:8108:...:3cdd
                                    192... #Pihole IP
...

Fresh debug log: https://tricorder.pi-hole.net/HqRwaKyU/

What Windows version is that PC running?

Your debug log shows that you've successfully disabled IPv6 RDNSS RAs: Your Fritzbox does no longer advertise its own IPv6 addresses as local DNS servers.

   * Received 136 bytes from fe80::<reacted>d @ ovs_eth0
     Hop limit: 255
     Stateful address conf.: No
     Stateful other conf.: No
     Mobile home agent: No
     Router preference: Medium
     Neighbor discovery proxy: No
     Router lifetime: 1800 s
     Reachable time: N/A
     Retransmit time: N/A
     - Prefix: 2a<redacted>00::/64
       Valid lifetime: 7200 sec
       Preferred lifetime: 3600 sec
       On-link: Yes
       Autonomous address conf.: Yes
     - Prefix: fd30:8f46:a10a::/64
       Valid lifetime: 7200 sec
       Preferred lifetime: 3600 sec
       On-link: Yes
       Autonomous address conf.: Yes
     MTU: 1500 bytes (valid)
     - Route: ::/0
       Route preference: Medium
       Route lifetime: 1800 sec
     - Route: 2a<redacted>00::/64
       Route preference: Medium
       Route lifetime: 1800 sec
     - Route: fd30:8f46:a10a::/64
       Route preference: Medium
       Route lifetime: 1800 sec

Your debug log shows that your networks IPv6 addresses would remain valid for 7200 seconds/2 hours, which in turn may suggest that a client may have held on to IPv6 DNS server information for at most those 2 hours.

However, your Windows PC seems to still fall back to using those IPv6 addresses that it apparently has learned in the past, long after those 2 hours have expired.

This starts to look like a potential bug in Windows.

You could try to coax Windows into forgetting about those, by temporarily configuring a manual IPv6 address for its network adapter, pointing it to use your Pi-hole's ULA instead.
Then try if rebooting the machine and switching it back to automatic would fix it.

1 Like

The PC has windows 11 24H2 installed.

As far as I know there has not been an update the last days.

Your debug log shows that you've successfully disabled IPv6 RDNSS RAs: Your Fritzbox does no longer advertise its own IPv6 addresses as local DNS servers.

Good to hear that the RDNSS RAs part works :blush:

You could try to coax Windows into forgetting about those, by temporarily configuring a manual IPv6 address for its network adapter, pointing it to use your Pi-hole's ULA instead.
Then try if rebooting the machine and switching it back to automatic would fix it.

Okay thanks, I will try to do that!

Also run below on the MS host instead of ipconfig /all as it specifically mentions if DNS servers are configured through DHCP/RA:

netsh interface ipv6 show dnsservers

I remember it took a while for all my clients to forget about the advertised IPv6 DNS servers by my router after I shortly toggled IPv6 support on and off on my router.
One particular 24/7 on Linux client held on for weeks.

1 Like

Okay, thats my result:

netsh interface ipv6 show dnsservers
Konfiguration der Schnittstelle "Ethernet"
Ăśber DHCP konfigurierte DNS-Server:  fd30:...:3cdd #my fritzbox
                                     2a02:...:3cdd
Mit welchem Suffix registrieren:     Nur primäres
Konfiguration der Schnittstelle "Loopback Pseudo-Interface 1
"Statisch konfigurierte DNS-Server: fec0:0:0:ffff::1%1
                                    fec0:0:0:ffff::2%1
                                    fec0:0:0:ffff::3%1
Mit welchem Suffix registrieren:    Nur primäres

:wink:

C:\>netsh interface ipv6 delete dnsservers ?

Usage: delete dnsservers [name=]<string> [[address=]<IPv6 address>|all] [[validate=]yes|no]

Parameters:

      Tag            Value
      name         - The name or index of the interface where DNS
                     servers are deleted.
      address      - One of the following values:
                     <IPv6 address>: A specific IPv6 address of a DNS server
                                   you are deleting.
                     all: Deletes all configured IPv6 addresses for DNS
                                   servers.
      validate     - Specifies whether validation of the DNS server setting
                     will be performed. The value is yes by default.

Remarks: Deletes statically configured DNS server IPv6 addresses for a
         specific interface. If Validate switch is yes, then the remaining
         DNS servers are validated.

Examples:

       delete dnsservers "Wired Ethernet Connection" fec0:0:0:ffff::1
       delete dnsservers "Wired Ethernet Connection" all

EDIT: You most likely need to run the CMD/shell prompt with Administrative powers!

1 Like

I did some tinkering on my MS gaming rig and it looks like you can only delete if the DNS server(s) is/are configured statically (manually and not through DHCP/RA).
But could give it a try.

Or give below a try:

C:\>netsh interface ipv6 reset ?

Usage: reset

Parameters: none

Remarks: Removes all user configured settings.  Restarting computer is
         required before the default settings to be effect.
1 Like

The netsh interface ipv6 delete dnsserverscommand did not work for me, as you mentioned.
I ran netsh interface ipv6 reset and restarted my PC. Now my PC does not use the pihole again. Before running the reset command, it did use the pihole.

I did not change any pihole config.

Current config, after resetting the ipv6 interface and restarting the PC:

netsh interface ipv6 show dnsservers
Konfiguration der Schnittstelle "Ethernet"
Ăśber DHCP konfigurierte DNS-Server:  fd30:...:3cdd #my fritzbox
                                     2a02:...:3cdd
Mit welchem Suffix registrieren:     Nur primäres
Konfiguration der Schnittstelle "Loopback Pseudo-Interface 1"
Statisch konfigurierte DNS-Server:    fec0:0:0:ffff::1%1
fec0:0:0:ffff::2%1
fec0:0:0:ffff::3%1
Mit welchem Suffix registrieren:      Nur primäres

Not using the pihole anymore:

nslookup googleadservices.com
Server:  fritz.box
Address:  fd30:...:3cdd
Nicht autorisierende Antwort:
Name:    googleadservices.com
Address:  142.250.185.66

Most DNS implementations prefer to resolve via IPv6 transport instead of via IPv4.
And I believe this also to be true for Windows.
You can check for IPv4 DNS servers configured with that same command:

netsh interface ipv4 show dnsservers

What do you mean by that?
It wasnt using Pi-hole before either:

Could you run below one on the UGreen host in a shell session and check if there are any lines reading "Recursive DNS server" (RDNSS)?

sudo docker exec -it <CONTAINER_NAME> pihole-FTL dhcp-discover

1 Like

Do you have another Linux machine with a x86_64 architecture?

arch

uname -m

If so, you could also download the pihole-FTL binary and run an IPv6 RA solicitation to check for advertised RDNSS like so:

dehakkelaar@nas:~$ wget https://ftl.pi-hole.net/master/pihole-FTL-amd64
[..]
Saving to: 'pihole-FTL-amd64'
dehakkelaar@nas:~$ chmod +x pihole-FTL-amd64
dehakkelaar@nas:~$
dehakkelaar@nas:~$ sudo ./pihole-FTL-amd64 dhcp-discover
Scanning all your interfaces for DHCP servers and IPv6 routers
[..]

You could also try running above in a shell on that UGreen like I did above on my Synology NAS.

This to double check its not the Docker network implementation on UGreen deceiving us in thinking no IPv6 DNS servers are advertised.

EDIT: Ps. binaries for other architectures below:

1 Like

Aha you mean below:

That still says fd30:...:3cdd is used for resolving DNS and not the Pi-hole IP.
And the proper reply should be 0.0.0.0 for IPv4 and :: for IPv6:

C:\>nslookup googleadservices.com
Server:  ph6a.home.dehakkelaar.nl
Address:  10.0.0.2

Name:    googleadservices.com
Addresses:  ::
          0.0.0.0
1 Like
netsh interface ipv4 show dnsservers

Konfiguration der Schnittstelle "Ethernet"
    Ăśber DHCP konfigurierte DNS-Server:  192... #my pihole
    Mit welchem Suffix registrieren:      Nur primäres

Konfiguration der Schnittstelle "Loopback Pseudo-Interface 1"
    Statisch konfigurierte DNS-Server:    Keine
    Mit welchem Suffix registrieren:      Nur primäres

(Before analyzing the following: I still had ipv6 enabled on my NAS interface, and it also had an IPv6 address assigned. After disabling that, I got a different result from that command. I will post that after this one.)

sudo docker exec -it pihole pihole-FTL dhcp-discover
Scanning all your interfaces for DHCP servers and IPv6 routers
Timeout: 6 seconds

Error while sending Router Solicitation on ovs_eth1: Network unreachable
Error while sending Router Solicitation on docker0: Network unreachable
* Received 136 bytes from fe80::XXXX:3cdd @ ovs_eth0
  Hop limit: 255
  Stateful address conf.: No
  Stateful other conf.: No
  Mobile home agent: No
  Router preference: Medium
  Neighbor discovery proxy: No
  Router lifetime: 1800 s
  Reachable time: N/A
  Retransmit time: N/A
  - Prefix: 2a02:XXXX::/64
    Valid lifetime: 7200 sec
    Preferred lifetime: 3600 sec
    On-link: Yes
    Autonomous address conf.: Yes
  - Prefix: fd30:XXXX:a10a::/64
    Valid lifetime: 7200 sec
    Preferred lifetime: 3600 sec
    On-link: Yes
    Autonomous address conf.: Yes
  MTU: 1500 bytes (valid)
  - Route: ::/0
    Route preference: Medium
    Route lifetime: 1800 sec
  - Route: 2a02:XXXX:4d00::/64
    Route preference: Medium
    Route lifetime: 1800 sec
  - Route: fd30:XXXX:a10a::/64
    Route preference: Medium
    Route lifetime: 1800 sec
  Source link-layer address: D4:.. #mac address

* Received 32 bytes from fe80::XXXX:dfc0 @ ovs_eth0
  Hop limit: undefined
  Stateful address conf.: No
  Stateful other conf.: No
  Mobile home agent: No
  Router preference: Medium
  Neighbor discovery proxy: No
  Router lifetime: 0 s
  Reachable time: N/A
  Retransmit time: N/A
  - Route: fdf0:XXXX:1::/64
    Route preference: Medium
    Route lifetime: 1800 sec

No answer on docker0
No answer on docker-af085599
No answer on docker-55773a21
No answer on docker-32a5b43d
No answer on ovs_eth1
Received 0 DHCP (IPv4) and 2 RA (IPv6) answers on ovs_eth0

After disabling ipv6 on my NAS interface:

sudo docker exec -it pihole pihole-FTL dhcp-discover
Scanning all your interfaces for DHCP servers and IPv6 routers
Timeout: 6 seconds

Error while sending Router Solicitation on ovs_eth1: Network unreachable
Error while sending Router Solicitation on ovs_eth0: Network unreachable
Error while sending Router Solicitation on docker0: Network unreachable
No answer on docker0
No answer on docker-af085599
No answer on docker-55773a21
No answer on docker-32a5b43d
No answer on ovs_eth1
No answer on ovs_eth0

Does this look good?:thinking:

Yup, I thought that looks good :smiley: because googlead… did not resolve. Eventho it looks weird that an IPv6 address is in use.

Okay, so the lines above were not working fine ^^

I guess that’s not suprising, but when resolving it with the pihole IP given, it works:

nslookup googleadservices.com 192... #pihole ip
Server:  pi.hole
Address:  192.... #pihole ip

Name:    googleadservices.com
Addresses:  ::
          0.0.0.0

No, not yet :confused:

Sadly, I can not really follow you on the rest of your comment :sweat_smile:

My pihole instance is running on my Synology (but I guess that does not differ from UGreen), inside docker (“container manager”).

Could you enable IPv6 on the NAS again and post output for below run on the NAS in a shell (redact IPv6 adresses!):

grep nameserver /etc/resolv.conf

I dont have any means to validate your assumption :wink:

EDIT: Oh that was a mistake on my part assuming you were running it on a UGreen.
Dont know where I got that from :smiley:

1 Like

I'm a little confused about your intentions.
Dont you want your devices to still keep using IPv6 for connecting to anything on the Internet etc?

What I recommend is to make IPv6 work for all your clients,
and only advertise the Pi-hole IPv4 address via DHCP as the sole DNS server for your clients.
No advertising of any IPv6 DNS servers via IPv6 RA or DHCPv6.
Clients can resolve a domain name to an IPv6 address via IPv4 DNS and vice versa.
The clients would still connect to the IPv6 address resolved through IPv4 DNS.
This simplifies matters considerably instead of having the clients also resolve through IPv6 DNS.
From what I've read here, this should be feasible with a Fritzbox.
Hold on, I'll have a look if I can find some!

1 Like