Client 192.168.1.254 has been rate-limited (current config allows up to 1000 queries in 60 seconds)

You said IPv6 was disabled.
So above DNS nameserver shouldnt't work anymore for local running processes/apps etc that need to resolve via DNS.
You can validate if its broken with below:

nslookup pi-hole.net 2a02:a46c:xxxx:xx:xxxx:xxx:xxxx:xxxx

Which is most likely the cause of why nothing resolves anymore on the Pi-hole host.
Thats an OS thing and is unrelated to whats configured as upstream DNS servers in the Pi-hole webGUI (the screenshots).
Whats output for below ones to determine whats configuring networking for the Pi?

hostnamectl | grep Operating

sudo journalctl --full --no-hostname --lines 10 --no-pager --boot --grep eth0

resolvconf -l

Above makes me suspect some rouge dnsmasq directive messing things up.

$ dig +short @127.0.0.1 version.bind chaos txt
"dnsmasq-pi-hole-v2.90+1"

What does below output?
Might want to redact certain bits!

sudo rgrep -v '^ *#\|^ *$' /etc/dnsmasq.*

EDIT: Oh and have you tried:

:wink:

Oh another thing that comes to mind, you might profit from extending the TTL for local DNS records from default zero into two seconds by creating a new config file eg:

$ dig +noall +answer @localhost pi.hole
pi.hole.                0       IN      A       127.0.0.1
$ sudo nano /etc/dnsmasq.d/99-local-ttl.conf
local-ttl=2
$ pihole-FTL --test
dnsmasq: syntax check OK.
$ pihole restartdns
  [✓] Restarting DNS server
$ dig +noall +answer @localhost pi.hole
pi.hole.                2       IN      A       127.0.0.1

That stopped queries from my NAS flooding Pi-hole.

FYI:

$ man dnsmasq
[..]
       -T, --local-ttl=<time>
              When replying with information from /etc/hosts or con‐
              figuration  or the DHCP leases file dnsmasq by default
              sets the time-to-live field to zero, meaning that  the
              requester  should  not  itself  cache the information.
              This is the correct thing to do in almost  all  situa‐
              tions.  This option allows a time-to-live (in seconds)
              to be given for these replies. This  will  reduce  the
              load  on  the  server  at the expense of clients using
              stale data under some circumstances.

yes, on my Fritz!box and Linksys Velop Mesh.
I 'm not aware of configuring IPv6 on my Raspberry PiHole.

pi@Pi-hole:~ $ nslookup pi-hole.net 2a02:<redacted>5b
;; connection timed out; no servers could be reached

so yes, it's broken....

pi@Pi-hole:~ $ hostnamectl | grep Operating
  Operating System: Raspbian GNU/Linux 11 (bullseye)
pi@Pi-hole:~ $ sudo journalctl --full --no-hostname --lines 10 --no-pager --boot --grep eth0
-- Journal begins at Tue 2024-04-30 07:32:06 CEST, ends at Mon 2025-01-06 07:30:54 CET. --
Jan 06 07:30:23 NetworkManager[333]: <info>  [1736145023.9081] policy: set 'eth0' (eth0) as default for IPv6 routing and DNS
Jan 06 07:30:54 sudo[32078]:       pi : TTY=pts/0 ; PWD=/home/pi ; USER=root ; COMMAND=/usr/bin/journalctl --full --no-hostname --lines 10 --no-pager --boot --grep eth0
pi@Pi-hole:~ $ resolvconf -l

# resolv.conf from NetworkManager
# Generated by NetworkManager
search home.arpa
nameserver 2a02:<redacted>5b
pi@Pi-hole:~ $ sudo rgrep -v '^ *#\|^ *$' /etc/dnsmasq.*
/etc/dnsmasq.conf:conf-dir=/etc/dnsmasq.d
/etc/dnsmasq.conf.old:conf-dir=/etc/dnsmasq.d
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=30:23:03:xx:xx:xx,ignore_Hal2e-AP
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=30:23:03:xx:xx:xx,ignore_Hal1e-AP
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=30:23:03:xx:xx:xx,ignore_Garage-AP
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=30:23:03:xx:xx:xx,ignore_Meterkast-AP
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=C8:69:CD:xx:xx:xx,192.168.1.100,Logeerkamer
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=DC:EF:CA:xx:xx:xx,192.168.1.101,ToonV2
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=70:EE:50:xx:xx:xx,192.168.1.102,Netatmo-Personal-Weather-Station
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=A0:C9:A0:xx:xx:xx,192.168.1.103,TRADFRI-Gateway
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=9C:76:13:xx:xx:xx,192.168.1.105,Ring-Doorbell
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=9C:76:13:xx:xx:xx,192.168.1.106,Ring-Chime
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=98:D8:63:xx:xx:xx,192.168.1.107,GoodWe-HF-LPB100
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=BC:DD:C2:xx:xx:xx,192.168.1.109,WiFi-Hub
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=B8:27:EB:xx:xx:xx,192.168.1.110,Domoticz
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=B8:27:EB:xx:xx:xx,192.168.1.112,homeassistant
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=B8:27:EB:xx:xx:xx,192.168.1.113,Hyperion
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=5C:2F:AF:xx:xx:xx,192.168.1.115,HW-p1meter-04D30E
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=8C:AA:B5:xx:xx:xx,192.168.1.130,Shelly1
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=D4:A3:3D:xx:xx:xx,192.168.1.194,Woonkamer
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=4C:1B:86:xx:xx:xx,192.168.1.196,SoundBar
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=2C:2B:F9:xx:xx:xx,192.168.1.197,LGwebOSTV
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=E8:5B:5B:xx:xx:xx,192.168.1.198,TV-42LS570S-ZB
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=00:24:E4:xx:xx:xx,192.168.1.224,Withings-weegschaal
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=C0:D9:62:xx:xx:xx,192.168.1.227,DELL589DEF
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=F0:99:BF:xx:xx:xx,192.168.1.240,AirPort-Time-Capsule-van-Pieter
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=40:9F:38:xx:xx:xx,192.168.1.132,Koogeek-DM-059249
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=34:85:18:xx:xx:xx,192.168.1.124,esp-wp-control
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=B8:16:5F:xx:xx:xx,192.168.1.104,LGE_AWHP_HM093MR
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=58:D3:49:xx:xx:xx,192.168.1.192,Keuken-2
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=E0:5F:45:xx:xx:xx,192.168.1.133,Nestkastje
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=5C:2F:AF:xx:xx:xx,192.168.1.118,kWh-Warmtepompboiler
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=B8:16:5F:xx:xx:xx,192.168.1.108,LGE_WH27S
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=F8:81:1A:xx:xx:xx,192.168.1.131,Somfy-Connexoon
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=9C:3D:CF:xx:xx:xx,192.168.1.134,VMB4000
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=8C:AA:B5:xx:xx:xx,Wat_is_deze
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=5C:2F:AF:xx:xx:xx,192.168.1.119,HW-watermeter
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=5C:2F:AF:xx:xx:xx,192.168.1.117,kWh-Warmtepomp
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=3C:39:E7:xx:xx:xx,192.168.1.116,kWh-Zonnepanelen
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=EC:FA:BC:xx:xx:xx,192.168.1.125,esp-buffervat-sensoren
/etc/dnsmasq.d/04-pihole-static-dhcp.conf:dhcp-host=58:D3:49:xx:xx:xx,192.168.1.193,Keuken-1
/etc/dnsmasq.d/01-pihole.conf:addn-hosts=/etc/pihole/local.list
/etc/dnsmasq.d/01-pihole.conf:addn-hosts=/etc/pihole/custom.list
/etc/dnsmasq.d/01-pihole.conf:localise-queries
/etc/dnsmasq.d/01-pihole.conf:no-resolv
/etc/dnsmasq.d/01-pihole.conf:log-facility=/var/log/pihole/pihole.log
/etc/dnsmasq.d/01-pihole.conf:log-async
/etc/dnsmasq.d/01-pihole.conf:cache-size=10000
/etc/dnsmasq.d/01-pihole.conf:log-queries
/etc/dnsmasq.d/01-pihole.conf:server=1.1.1.1
/etc/dnsmasq.d/01-pihole.conf:server=1.0.0.1
/etc/dnsmasq.d/01-pihole.conf:domain-needed
/etc/dnsmasq.d/01-pihole.conf:expand-hosts
/etc/dnsmasq.d/01-pihole.conf:bogus-priv
/etc/dnsmasq.d/01-pihole.conf:dnssec
/etc/dnsmasq.d/01-pihole.conf:trust-anchor=.,20326,8,2,E06D44B80B8F1D39A95C0B0D7C65D08458E880409BBC683457104237C7F8EC8D
/etc/dnsmasq.d/01-pihole.conf:local-service
/etc/dnsmasq.d/06-rfc6761.conf:server=/test/
/etc/dnsmasq.d/06-rfc6761.conf:server=/localhost/
/etc/dnsmasq.d/06-rfc6761.conf:server=/invalid/
/etc/dnsmasq.d/06-rfc6761.conf:server=/bind/
/etc/dnsmasq.d/06-rfc6761.conf:server=/onion/
/etc/dnsmasq.d/02-pivpn.conf:addn-hosts=/etc/pivpn/hosts.wireguard
/etc/dnsmasq.d/02-pihole-dhcp.conf:dhcp-authoritative
/etc/dnsmasq.d/02-pihole-dhcp.conf:dhcp-range=192.168.1.1,192.168.1.99,8h
/etc/dnsmasq.d/02-pihole-dhcp.conf:dhcp-option=option:router,192.168.1.254
/etc/dnsmasq.d/02-pihole-dhcp.conf:dhcp-leasefile=/etc/pihole/dhcp.leases
/etc/dnsmasq.d/02-pihole-dhcp.conf:domain=home.arpa
/etc/dnsmasq.d/02-pihole-dhcp.conf:local=/home.arpa/
/etc/dnsmasq.d/02-pihole-dhcp.conf:dhcp-rapid-commit
/etc/dnsmasq.d/02-pihole-dhcp.conf:dhcp-option=option6:dns-server,[::]
/etc/dnsmasq.d/02-pihole-dhcp.conf:dhcp-range=::,constructor:eth0,ra-names,ra-stateless,64

:wink: yes lots of times...

Thanks for all your help till now...

1 Like

Thats sufficient for not having the router advertise IPv6 DNS server(s) to the clients.

Looks like NetworkManager (NM) is responsible for populating that /etc/resolv.conf file (via resolvconf).
Is the host manually configured with static IP details on the host itself or does it acquire those details via DHCP (maybe a static DHCP reservation)?
Could you post output for below one pls?

nmcli -t -f name con show --active | xargs -d '\n' -n 1 nmcli -p -f ipv4.method,ipv4.dns,ipv6.method,ipv6.dns connection show

You can edit above displayed NM "profile", if any, with below one (but first run above one!):

sudo nmtui

Above indicates you still have Pi-hole's "Enable IPv6 support (SLAAC + RA)" setting active while your intentions are to drop IPv6 support entirely!

Still have no clue why the version.bind query on the localhost IP doesnt return the version.
Could you also post output for below ones run on the Pi?

sudo nft list ruleset

nslookup -class=chaos -type=txt version.bind 192.168.1.111

nslookup pi.hole 192.168.1.111

And also the output for when run above two nslookup's on a Windows, MacOS or Linux client?

EDIT: Oh and when you tail/follow the logs live with below, do all four above nslookup's register?

pihole tail

It is manual configured (IPv4)

pi@Pi-hole:~ $ nmcli -t -f name con show --active | xargs -d '\n' -n 1 nmcli -p -f ipv4.method,ipv4.dns,ipv6.method,ipv6.dns connection show
===============================================================================
                       Connection profile details (eth0)
===============================================================================
ipv4.method:                            manual
-------------------------------------------------------------------------------
ipv4.dns:                               --
-------------------------------------------------------------------------------
ipv6.method:                            auto
-------------------------------------------------------------------------------
ipv6.dns:                               --
-------------------------------------------------------------------------------
===============================================================================
                       Connection profile details (wg0)
===============================================================================
ipv4.method:                            manual
-------------------------------------------------------------------------------
ipv4.dns:                               --
-------------------------------------------------------------------------------
ipv6.method:                            disabled
-------------------------------------------------------------------------------
ipv6.dns:                               --
-------------------------------------------------------------------------------
pi@Pi-hole:~ $

I added pi-holes address as DNS-server and set IPV6 to disabled:

pi@Pi-hole:~ $ nmcli -t -f name con show --active | xargs -d '\n' -n 1 nmcli -p -f ipv4.method,ipv4.dns,ipv6.method,ipv6.dns connection show
===============================================================================
                       Connection profile details (eth0)
===============================================================================
ipv4.method:                            manual
-------------------------------------------------------------------------------
ipv4.dns:                               192.168.1.111
-------------------------------------------------------------------------------
ipv6.method:                            disabled
-------------------------------------------------------------------------------
ipv6.dns:                               --
-------------------------------------------------------------------------------
===============================================================================
                       Connection profile details (wg0)
===============================================================================
ipv4.method:                            manual
-------------------------------------------------------------------------------
ipv4.dns:                               --
-------------------------------------------------------------------------------
ipv6.method:                            disabled
-------------------------------------------------------------------------------
ipv6.dns:                               --
-------------------------------------------------------------------------------
pi@Pi-hole:~ $
pi@Pi-hole:~ $ sudo nft list ruleset
table ip filter {
	chain INPUT {
		type filter hook input priority filter; policy accept;
		iifname "eth0" meta l4proto udp udp dport 51820  counter packets 4223 bytes 1131768 accept
		iifname "wg0" meta l4proto udp udp dport 53  counter packets 66 bytes 4847 accept
	}

	chain FORWARD {
		type filter hook forward priority filter; policy accept;
	}

	chain OUTPUT {
		type filter hook output priority filter; policy accept;
	}
}
table ip nat {
	chain PREROUTING {
		type nat hook prerouting priority dstnat; policy accept;
	}

	chain INPUT {
		type nat hook input priority 100; policy accept;
	}

	chain OUTPUT {
		type nat hook output priority -100; policy accept;
	}

	chain POSTROUTING {
		type nat hook postrouting priority srcnat; policy accept;
		oifname "eth0" ip saddr 10.210.160.0/24  counter packets 79 bytes 10948 masquerade 
	}
}
pi@Pi-hole:~ $
pi@Pi-hole:~ $ nslookup -class=chaos -type=txt version.bind 192.168.1.111
Server:		192.168.1.111
Address:	192.168.1.111#53

Non-authoritative answer:
*** Can't find version.bind: No answer

Authoritative answers can be found from:

pi@Pi-hole:~ $
pi@Pi-hole:~ $ nslookup pi.hole 192.168.1.111

Server:		192.168.1.111
Address:	192.168.1.111#53

Name:	pi.hole
Address: 192.168.1.111

pi@Pi-hole:~ $
user@MacBookAir ~ % nslookup -class=chaos -type=txt version.bind 192.168.1.111


Server:		192.168.1.111
Address:	192.168.1.111#53

Non-authoritative answer:
*** Can't find version.bind: No answer

Authoritative answers can be found from:

user@MacBookAir ~ %
user@MacBookAir ~ % nslookup pi.hole 192.168.1.111


Server:		192.168.1.111
Address:	192.168.1.111#53

Name:	pi.hole
Address: 192.168.1.111

user@MacBookAir ~ %

I do see at the moment when I hit enter after the command on my MacBookAir via VPN nslookup -class=chaos -type=txt version.bind 192.168.1.111 the following: Jan 7 07:54:52: gravity blocked version.bind is NODATA

and after the command nslookup pi.hole 192.168.1.111

Jan  7 07:55:46: query[A] pi.hole from 10.210.160.4
Jan  7 07:55:46: Pi-hole hostname pi.hole is 192.168.1.111

And from/on the Pi-Hole itself:
nslookup pi.hole 192.168.1.111

Jan  7 07:57:55: query[A] pi.hole from 192.168.1.111
Jan  7 07:57:55: Pi-hole hostname pi.hole is 192.168.1.111
Jan  7 07:57:55: query[AAAA] pi.hole from 192.168.1.111
Jan  7 07:57:55: Pi-hole hostname pi.hole is NODATA

nslookup -class=chaos -type=txt version.bind 192.168.1.111

Jan  7 07:59:21: query[TXT] version.bind from 192.168.1.111
Jan  7 07:59:21: gravity blocked version.bind is NODATA

So yes, that seems to work?

pihole -d works again :slight_smile:

Your debug token is: https://tricorder.pi-hole.net/oUQKGEs3/

Glad the Pi resolves via DNS again.
You should see that nmtui configured DNS server(s) in below file now:

grep nameserver /etc/resolv.conf

I remember I experienced same where the IPv6 nameserver entry stuck when I enabled and disabled IPv6 on my router to try something out a month ago.
Some of my hosts still even now have that router advertised IPv6 DNS configured while IPv6 is disabled on my router:

pi@ph5a:~ $ uptime
 20:57:31 up 112 days, 19:24,  1 user,  load average: 0.38, 0.35, 0.33
pi@ph5a:~ $ grep nameserver /etc/resolv.conf
nameserver 10.0.0.1
nameserver 2a02:a459:xxxx:x:xxxx:xxxx:xxxx:xxxx
pi@ph5a:~ $ sudo rdisc6 eth0
Soliciting ff02::2 (ff02::2) on eth0...
Timed out.
Timed out.
Timed out.
No response.
pi@ph5a:~ $ nslookup pi-hole.net 2a02:a459:xxxx:x:xxxx:xxxx:xxxx:xxxx
;; connection timed out; no servers could be reached

You dont necessarily need to disable IPv6 on the Pi or any host though!

$ ip -br -6 address
lo               UNKNOWN        ::1/128
eth0             UP             fe80::3def:6053:8805:851b/64
 $ nslookup pi-hole.net fe80::3def:6053:8805:851b
Server:         fe80::3def:6053:8805:851b
Address:        fe80::3def:6053:8805:851b#53

Non-authoritative answer:
Name:   pi-hole.net
Address: 3.18.136.52

If you want the processes and apps running on the Pi to use Pi-hole for DNS, you should configure its localhost IP 127.0.0.1 for DNS.
That IP resides on the virtual loopback interface named lo:

$ ip -br link show lo
lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
$ ip -br -4 address show lo
lo               UNKNOWN        127.0.0.1/8
$ nslookup pi-hole.net 127.0.0.1
Server:         127.0.0.1
Address:        127.0.0.1#53

Non-authoritative answer:
Name:   pi-hole.net
Address: 3.18.136.52

That lo interface is way faster as your physical eth0 interface, isn't depending on if a cable is connected or not and nothing gets broadcasted on the eth0 interface:

There is a drawback though if do so.
Whenever you break Pi-hole for some reason (upgrade/change/tweak), all processes on the Pi host loose DNS resolution.
Complicating diagnosing issues as even Pi-hole repair (pihole -r) or the debugger (pihole -d) wont be able to resolve via DNS.

Thats a new one for me.
On which list does that version.bind domain reside if query with below one?

pihole -q version.bind

I dont see any reason to block that one.
Or any of the other chaos domains:

Do you still experience issues with your setup?

pi@Pi-hole:~ $ pihole -q version.bind
 Match found in https://raw.githubusercontent.com/DandelionSprout/adfilt/master/Alternate%20versions%20Anti-Malware%20List/AntiMalwareHosts.txt:
   version.bind
pi@Pi-hole:~ $

Till now everything seems to work, and no errors. I'll will post after a week if I still have no errors.

No strange things found in de debug.log?

Thanks for your help!

1 Like

I cant see that uploaded debug log for privacy reasons.
Only devs and mods can.
And it gets purged from the tricorder server after 48 hours.

EDIT:

$ curl -s https://raw.githubusercontent.com/DandelionSprout/adfilt/master/Alternate%20versions%20Anti-Malware%20List/AntiMalwareHosts.txt | grep '\.bind'
127.0.0.1 version.bind
127.0.0.1 hostname.bind

Next time, I'll use below one to test:

$ dig +short @localhost version.ftl chaos txt
"v5.22"

I cant imagine anyone putting that one on their list(s) :wink:

Just a little fun :wink:

$ dig +noall +answer @localhost chaos txt {version,authors,copyright,cachesize,insertions,evictions,misses,hits,auth,servers}.bind {version,api,{domain,local}.api}.ftl
version.bind.           2       CH      TXT     "dnsmasq-pi-hole-v2.90+1"
authors.bind.           2       CH      TXT     "Simon Kelley"
copyright.bind.         2       CH      TXT     "Copyright (c) 2000-2024 Simon Kelley"
cachesize.bind.         0       CH      TXT     "10000"
insertions.bind.        0       CH      TXT     "478"
evictions.bind.         0       CH      TXT     "0"
misses.bind.            0       CH      TXT     "334"
hits.bind.              0       CH      TXT     "430"
auth.bind.              0       CH      TXT     "0"
servers.bind.           0       CH      TXT     "127.0.0.1#5335 265 0" "10.0.0.2#53 69 0"
version.ftl.            2       CH      TXT     "v5.25.2"
api.ftl.                0       CH      TXT     "127.0.0.1#5335 265 0\01610.0.0.2#53 69 0"
domain.api.ftl.         0       CH      TXT     "127.0.0.1#5335 265 0\01610.0.0.2#53 69 0"
local.api.ftl.          0       CH      TXT     "127.0.0.1#5335 265 0\01610.0.0.2#53 69 0"

Its missing an authors.ftl though!

$ dig +short @localhost chaos txt authors.ftl
$

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