Feedback for "Allow defining clients by their MAC address, host name and networking interface"

Macvendor detection is still not working.

development
Bildschirmfoto zu 2020-06-06 10-24-30

switiching to new/mac_clients and flush network table
Bildschirmfoto zu 2020-06-06 10-28-57

Hi everyone!

I am silently following the developments of this promising new feature for some time now.
However I do not seem not manage to get it functioning properly.

Problem
Basically, group assignments are ignored and the default group is used for every client.

Here's what I did so far:

  1. Installation
  • a fresh (minimal) Debian 10 with a clean PiHole installation (using the curl-Method) in VM on my NAS
  • Login to PiHole via the web-interface and configure basic settings:
    --> Use Quad9 Upstream DNS Server (both ipv4/6)
    --> Use DNSSEC
    --> Uncheck "Never forward non-FQDNs" and "Never forward reverse lookups for private IP ranges"
  • Checkout to the development branch using: pihole checkout dev
  • Switch to the mac_clients feature branches for ftl and web via pihole checkout ftl new/mac_clients and pihole checkout web new/mac_clients
  1. Setup of the ad-lists, groups and clients
  • I added several lists that focus on ads, malware, and tracking exclusively
  • For each list type I created a group, i.e. "Malware", "Tracking", "Advertisements"
  • I assign a group to each Adlist and remain one list, which is a mix of all list types, in the "Default" group as a fallback for new not configured clients. Each list is assigned to only one group.
  • My clients show up in Group Management -> Clients -> Known clients, with their MAC address along with their host name, vendor, and IP addresses. I add them and assign the groups (e.g. some clients should only use the "Malware"-group, some clients all groups, except "Default").
  1. Trouble Shooting
  • I am very sure that the "Default" group is always used, because clients that only belong to the "Malware"-group do not see ads. I have verified that the blocked (ad-)domains are in none of the "Malware"-lists. As soon as I disable the "Default" group these clients see ads again, but also the clients that supposedly belong to the "Advertisements" group.
  • "DEBUG_CLIENTS=true" gives the following output in pihole-FTL.log:
2020-06-23 01:10:29.803 5883] Querying gravity database for client with IP 192.168.2.112...
[2020-06-23 01:10:29.804 5883] --> No record for 192.168.2.112 in the client table
[2020-06-23 01:10:29.804 5883] Querying gravity database for client with IP 192.168.2.116...
[2020-06-23 01:10:29.804 5883] --> No record for 192.168.2.116 in the client table
[2020-06-23 01:10:29.804 5883] Querying gravity database for client with IP 192.168.2.101...
[2020-06-23 01:10:29.805 5883] --> No record for 192.168.2.101 in the client table
[2020-06-23 01:10:29.805 5883] Querying gravity database for client with IP fd00::931:91bd:81ed:9ae4...
[2020-06-23 01:10:29.805 5883] --> No record for fd00::931:91bd:81ed:9ae4 in the client table
[2020-06-23 01:10:29.805 5883] Querying gravity database for client with IP 127.0.0.1...
[2020-06-23 01:10:29.805 5883] --> No record for 127.0.0.1 in the client table
[2020-06-23 01:10:29.806 5883] Querying gravity database for client with IP fd00::11:32ff:fe2f:588e...
[2020-06-23 01:10:29.806 5883] --> No record for fd00::11:32ff:fe2f:588e in the client table
[2020-06-23 01:10:29.806 5883] Querying gravity database for client with IP 192.168.2.105...
[2020-06-23 01:10:29.806 5883] --> No record for 192.168.2.105 in the client table
[2020-06-23 01:10:29.806 5883] Querying gravity database for client with IP fd00::440d:2c60:a5bd:38d6...
[2020-06-23 01:10:29.806 5883] --> No record for fd00::440d:2c60:a5bd:38d6 in the client table
[2020-06-23 01:10:29.807 5883] Querying gravity database for client with IP fd00::ea1f:4f3:cf1:f0d2...
[2020-06-23 01:10:29.807 5883] --> No record for fd00::ea1f:4f3:cf1:f0d2 in the client table
[2020-06-23 01:10:29.807 5883] Querying gravity database for client with IP fd00::1102:7249:bb38:5eea...
[2020-06-23 01:10:29.807 5883] --> No record for fd00::1102:7249:bb38:5eea in the client table
[2020-06-23 01:10:29.807 5883] Querying gravity database for client with IP 192.168.2.103...
[2020-06-23 01:10:29.808 5883] --> No record for 192.168.2.103 in the client table
[2020-06-23 01:10:29.808 5883] Querying gravity database for client with IP fd00::68a8:44ff:fad7:85c8...
[2020-06-23 01:10:29.808 5883] --> No record for fd00::68a8:44ff:fad7:85c8 in the client table
[2020-06-23 01:10:29.809 5883] Querying gravity database for client with IP fd00::6eb7:49ff:fe08:1087...
[2020-06-23 01:10:29.809 5883] --> No record for fd00::6eb7:49ff:fe08:1087 in the client table
[2020-06-23 01:10:29.809 5883] Compiled 0 whitelist and 0 blacklist regex filters in 6.8 msec
[2020-06-23 01:12:45.273 5883] Resizing "/FTL-strings" from 16384 to 20480
[2020-06-23 01:12:56.350 5883] Reloading clinet groups after 832 seconds

I have never seen a message about checking the MAC address.

The clients table in the gravity-db-file contains only one MAC-address per client in the "IP address" column.

Of course I have issued "pihole restardns" several times already to no avail.

Do you see any obvious mistake I did during setup that would cause this behavior?
I would be happy to provide further feedback if the solution is not obvious.

Thank you!

No, there isn't something obviously wrong here. What is the output of

pihole-FTL branch
pihole-FTL version

?

The version command should show something like v5.0-142-gc4aff068.
Could you just try the pihole checkout ftl ... command again and watch closely for its output?

Thanks a lot for the quick response!!

pihole-FTL branch

gives

new/mac_clients

and

pihole-FTL version

gives

vDev-843c4ab

The version does not seem to be what you'd expect.

Therefore, I issued the checkout of ftl again, which now fails.
syslog after failig to start FTL

Jun 23 08:53:59 syno-pihole-VM systemd[1]: pihole-FTL.service: Start operation timed out. Terminating.
Jun 23 08:53:59 syno-pihole-VM systemd[1]: pihole-FTL.service: Control process exited, code=killed, status=15/TERM
Jun 23 08:53:59 syno-pihole-VM systemd[1]: pihole-FTL.service: Failed with result 'timeout'.
Jun 23 08:53:59 syno-pihole-VM systemd[1]: Failed to start LSB: pihole-FTL daemon.
Jun 23 08:54:09 syno-pihole-VM systemd[1]: Starting LSB: pihole-FTL daemon...
Jun 23 08:54:10 syno-pihole-VM pihole-FTL[10195]: Terminated
Jun 23 08:54:10 syno-pihole-VM systemd[1]: session-c16.scope: Succeeded.
Jun 23 08:54:10 syno-pihole-VM pihole-FTL[10299]: Stopped
Jun 23 08:54:10 syno-pihole-VM systemd[1]: Started Session c17 of user pihole.

Output of pihole-FTL after failing to start FTL

[2020-06-23 08:54:10.193 10336] Using log file /var/log/pihole-FTL.log
[2020-06-23 08:54:10.194 10336] ########## FTL started! ##########
[2020-06-23 08:54:10.194 10336] FTL branch: new/mac_clients
[2020-06-23 08:54:10.194 10336] FTL version: vDev-c4aff06
[2020-06-23 08:54:10.195 10336] FTL commit: c4aff06
[2020-06-23 08:54:10.195 10336] FTL date: 2020-06-23 05:29:07 +0200
[2020-06-23 08:54:10.195 10336] FTL user: pihole
[2020-06-23 08:54:10.195 10336] Compiled for x86_64 (compiled on CI) using gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
[2020-06-23 08:54:10.196 10336] Starting config file parsing (/etc/pihole/pihole-FTL.conf)
[2020-06-23 08:54:10.196 10336]    SOCKET_LISTENING: only local
[2020-06-23 08:54:10.196 10336]    AAAA_QUERY_ANALYSIS: Show AAAA queries
[2020-06-23 08:54:10.196 10336]    MAXDBDAYS: max age for stored queries is 365 days
[2020-06-23 08:54:10.197 10336]    RESOLVE_IPV6: Resolve IPv6 addresses
[2020-06-23 08:54:10.197 10336]    RESOLVE_IPV4: Resolve IPv4 addresses
[2020-06-23 08:54:10.197 10336]    DBINTERVAL: saving to DB file every minute
[2020-06-23 08:54:10.197 10336]    DBFILE: Using /etc/pihole/pihole-FTL.db
[2020-06-23 08:54:10.198 10336]    MAXLOGAGE: Importing up to 24.0 hours of log data
[2020-06-23 08:54:10.198 10336]    PRIVACYLEVEL: Set to 0
[2020-06-23 08:54:10.198 10336]    IGNORE_LOCALHOST: Show queries from localhost
[2020-06-23 08:54:10.198 10336]    BLOCKINGMODE: Null IPs for blocked domains
[2020-06-23 08:54:10.198 10336]    ANALYZE_ONLY_A_AND_AAAA: Disabled. Analyzing all queries
[2020-06-23 08:54:10.199 10336]    DBIMPORT: Importing history from database
[2020-06-23 08:54:10.199 10336]    PIDFILE: Using /run/pihole-FTL.pid
[2020-06-23 08:54:10.199 10336]    PORTFILE: Using /run/pihole-FTL.port
[2020-06-23 08:54:10.199 10336]    SOCKETFILE: Using /run/pihole/FTL.sock
[2020-06-23 08:54:10.200 10336]    SETUPVARSFILE: Using /etc/pihole/setupVars.conf
[2020-06-23 08:54:10.200 10336]    MACVENDORDB: Using /etc/pihole/macvendor.db
[2020-06-23 08:54:10.200 10336]    GRAVITYDB: Using /etc/pihole/gravity.db
[2020-06-23 08:54:10.200 10336]    PARSE_ARP_CACHE: Active
[2020-06-23 08:54:10.200 10336]    CNAME_DEEP_INSPECT: Active
[2020-06-23 08:54:10.201 10336]    DELAY_STARTUP: No delay requested.
[2020-06-23 08:54:10.201 10336]    BLOCK_ESNI: Enabled, blocking _esni.{blocked domain}
[2020-06-23 08:54:10.201 10336]    NICE: Set process niceness to -10 (default)
[2020-06-23 08:54:10.201 10336]    MAXNETAGE: No automated removal of IP addresses and host names from the network table
[2020-06-23 08:54:10.202 10336]    NAMES_FROM_NETDB: Enabled, trying to get names from network database
[2020-06-23 08:54:10.202 10336] Finished config file parsing
[2020-06-23 08:54:10.204 10336] Database version is 8
[2020-06-23 08:54:10.204 10336] Database successfully initialized
[2020-06-23 08:54:10.205 10336] New upstream server: 149.112.112.112 (0/128)

I can ping 149.112.112.112 successfully.

This is very strange as I restarted the dns-service and ftl (with restartdns) several times last night.

Issuing now a "restartdns" gives (after some time):

  [✗] Warning: The unit file, source configuration file or drop-ins of pihole-FTL.service changed on disk. Run 'systemctl daemon-reload' to reload units.
Job for pihole-FTL.service failed because a timeout was exceeded.
See "systemctl status pihole-FTL.service" and "journalctl -xe" for details.

I have also tried to start off from a fresh PiHole v5 installation without anything configured (using a snapshot of the VM from earlier this night):

  • FTL works and I can "restardns" without any issues
  • After switching to the dev-branch everything still works
  • When checking out the mac_clients branch for FTL it fails to restart the dns again.

This is the output when switching to the dev-branch from a fresh not configured PiHole 5 installation:

  Please note that changing branches severely alters your Pi-hole subsystems
  Features that work on the master branch, may not on a development branch
  This feature is NOT supported unless a Pi-hole developer explicitly asks!
  Have you read and understood this? [y/N] y

  [i] Shortcut "dev" detected - checking out development / devel branches...

  [i] Pi-hole Core
  [✓] Switching to branch: 'development' from 'refs/heads/master'
Already up to date.

  [i] Web interface
  [✓] Switching to branch: 'devel' from 'refs/heads/master'
Already up to date.
  [i] Running installer to upgrade your installation

  [✓] Root user check

        .;;,.
        .ccccc:,.                                                                                       
         :cccclll:.      ..,,                                                                           
          :ccccclll.   ;ooodc                                                                           
           'ccll:;ll .oooodc                                                                            
             .;cll.;;looo:.                                                                             
                 .. ','.
                .',,,,,,'.                                                                              
              .',,,,,,,,,,.                                                                             
            .',,,,,,,,,,,,....                                                                          
          ....''',,,,,,,'.......                                                                        
        .........  ....  .........                                                                      
        ..........      ..........                                                                      
        ..........      ..........                                                                      
        .........  ....  .........                                                                      
          ........,,,,,,,'......                                                                        
            ....',,,,,,,,,,,,.                                                                          
               .',,,,,,,,,'.                                                                            
                .',,,,,,'.                                                                              
                  ..'''.                                                                                

  [✓] Update local cache of available packages
  [i] Existing PHP installation detected : PHP version 7.3.14-1~deb10u1
  [i] Performing unattended setup, no whiptail dialogs will be displayed
  [✓] Disk space check

  [✓] Checking apt-get for upgraded packages... up to date!

  [i] Installer Dependency checks...
  [✓] Checking for dhcpcd5
  [✓] Checking for git
  [✓] Checking for iproute2
  [✓] Checking for whiptail
  [✓] Checking for dnsutils

  [✓] Supported OS detected
  [i] SELinux not detected
  [✓] Check for existing repository in /etc/.pihole
  [✓] Update repo in /etc/.pihole

  [✓] Check for existing repository in /var/www/html/admin
  [✓] Update repo in /var/www/html/admin

  [i] Main Dependency checks...
  [✓] Checking for cron
  [✓] Checking for curl
  [✓] Checking for iputils-ping
  [✓] Checking for lsof
  [✓] Checking for netcat
  [✓] Checking for psmisc
  [✓] Checking for sudo
  [✓] Checking for unzip
  [✓] Checking for wget
  [✓] Checking for idn2
  [✓] Checking for sqlite3
  [✓] Checking for libcap2-bin
  [✓] Checking for dns-root-data
  [✓] Checking for libcap2
  [✓] Checking for lighttpd
  [✓] Checking for php7.3-common
  [✓] Checking for php7.3-cgi
  [✓] Checking for php7.3-sqlite3
  [✓] Checking for php7.3-xml
  [✓] Checking for php7.3-intl

  [✓] Enabling lighttpd service to start on reboot...
  [✓] Checking for user 'pihole'

  [i] FTL Checks...

  [✓] Detected x86_64 architecture
  [i] Checking for existing FTL binary...
  [i] Checksums do not match, downloading from ftl.pi-hole.net.
  [✓] Downloading and Installing FTL
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LC_ADDRESS = "de_DE.UTF-8",
        LC_NAME = "de_DE.UTF-8",
        LC_MONETARY = "de_DE.UTF-8",
        LC_PAPER = "de_DE.UTF-8",
        LC_IDENTIFICATION = "de_DE.UTF-8",
        LC_TELEPHONE = "de_DE.UTF-8",
        LC_MEASUREMENT = "de_DE.UTF-8",
        LC_TIME = "de_DE.UTF-8",
        LC_NUMERIC = "de_DE.UTF-8",
        LANG = "C"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
  [✓] Installing scripts from /etc/.pihole

  [i] Installing configs from /etc/.pihole...
  [i] Existing dnsmasq.conf found... it is not a Pi-hole file, leaving alone!
  [✓] Copying 01-pihole.conf to /etc/dnsmasq.d/01-pihole.conf

  [i] Installing blocking page...
  [✓] Creating directory for blocking page, and copying files
  [i] Backing up index.lighttpd.html
      No default index.lighttpd.html file found... not backing up

  [✓] Installing sudoer file

  [✓] Installing latest Cron script

  [✓] Installing latest logrotate script
  [i] Backing up /etc/dnsmasq.conf to /etc/dnsmasq.conf.old
  [✓] man pages installed and database updated
  [i] Testing if systemd-resolved is enabled
  [i] Systemd-resolved is not enabled
  [✓] Restarting lighttpd service...
  [✓] Enabling lighttpd service to start on reboot...
  [i] Restarting services...
  [✓] Enabling pihole-FTL service to start on reboot...
  [✓] Restarting pihole-FTL service...
  [✓] Deleting existing list cache
  [i] Neutrino emissions detected...
  [✓] Pulling blocklist source list into range

  [✓] Preparing new gravity database
  [i] Target: https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
  [✓] Status: Retrieval successful
  [i] Received 57322 domains

  [i] Target: https://mirror1.malwaredomains.com/files/justdomains
  [✓] Status: Retrieval successful
  [i] Received 26853 domains

  [i] Target: https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt
  [✓] Status: Retrieval successful
  [i] Received 34 domains

  [i] Target: https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt
  [✓] Status: Retrieval successful
  [i] Received 2701 domains

  [✓] Storing downloaded domains in new gravity database
  [✓] Building tree
  [✓] Swapping databases
  [i] Number of gravity domains: 86910 (84475 unique domains)
  [i] Number of exact blacklisted domains: 0
  [i] Number of regex blacklist filters: 0
  [i] Number of exact whitelisted domains: 0
  [i] Number of regex whitelist filters: 0
  [✓] Flushing DNS cache
  [✓] Cleaning up stray matter
  [✓] Restarting DNS server

  [✓] DNS service is running
  [✓] Pi-hole blocking is Enabled

  [i] The install log is located at: /etc/pihole/install.log
Update Complete! 

  Current Pi-hole version is development v5.0-492-g3aaf9d8.
  Current AdminLTE version is devel v5.0-410-g536ecd6.
  Current FTL version is development vDev-336d72c.

The only thing I have noticed here is the warning about the locale from Perl.

Obviously something is seriously odd here on my end. I will investigate further, just wanted to give an update. I will report back!

You have been using the new_mac branche but not the latest version( you used the one from 5th of June):
https://github.com/pi-hole/FTL/commits/new/mac_clients

(I don't know where DL6ER does see gc4aff068 in this list?)

pihole -up does updated also manually checked out branches.

The last one in the commit history you linked is c4aff06. Not sure why he has the g you you don't, maybe your local git versions differ. Google said:

The "g" prefix stands for "git" and is used to allow describing the version of a software depending on the SCM the software is managed with. This is useful in an environment where people may use different SCMs. Git - git-describe Documentation

It should be contained in the standard output of git describe

Even without the g the hashes are different

c4aff068 and c4aff06

1 Like

The full hash is c4aff068905b52a94a89656b62b702cc42aa1598 so the extra 8 is in there. You can specify a commit with as many or as few characters as you like. It just needs to be unique within the project. Otherwise, git will complain.

Thanks for the hint!

After quite some testing and toying aroung I think I found a pattern:
As long as the PiHole instance is not serving as the DNS server in my network, everything works as expected:
When fetching the new/mac_clients branch of FTL indeed the latest Version vDev-c4aff06 seems to be retrieved (even though the prefix is different than in DL6ER's post). -> With this version my initial issue seems to be resolved, group assignments seem to work. Thanks a lot for that!

BUT as soon as I configure my router (FritzBox 7590) to advertise the PiHole as the DNS server and clients start to query it, things get out of order. I cannot perform a pihole restartdns anymore (it times out, with no clear error message in syslog, pihole.log, pihole-FTL.log, see my initial post from earlier today) and as soon as I attempt this, I never manage to get it running again, even after a reboot.

The same does not happen when I use the vanilla PiHole-v5.


Additionally I have noticed that I cannot set an ipv6 upstream server in this version of PiHole:

sudo pihole -a setdns "9.9.9.9,2620:fe::fe" domain-not-needed no-bogus-priv dnssec

results in

  [✗] Invalid IP has been passed

Everything works fine when setting ipv4 upstream DNS servers only. And this is no problem with the master branch of PiHole-v5.

I think for now I will use the master branch of PiHole again. But if you'd like me to provide further feedback on these issues, I'd be very happy to assist!

Anyway, thank you for your great work and support, everyone and especially DL6ER!!

Typically this is only seen when you create a DNS loop (Pi-hole -> router -> Pi-hole -> router -> ...). Have you double checked that?

This is bizarre, really. Can you only connect over network (= no monitor connected?). It may just seem stale when there are network issues.

Pinging @PromoFaux, he has changed the DNS server validation IIRC.

You are correct, I have! One thing I did not consider is that it is reasonable for pihole -a setdns to accept an IPv6 address. It will of course fail, because the change I made was to use the IP validation function from the installer, which is IPv4 only.

Presumably using this command to set IPv6 is required?

It is what the web interface calls, so likely it is not possible to set IPv6 DNS servers right now.

Sigh. Back to the drawing board!

I think this should not be the case:

  • I have set my router to use the DNS servers of the ISP for both (ipv4/6):


    It says: "Use DNSv4/6 server assigned by ISP (recommended)"

  • This is how I advertise PiHole by the router:
    DNSv4:


    "Address of local DNS server", 192.168.2.2 is the unique, static ipv4-address of the machine running PiHole.
    DNSv6:

    "Always assign unique local adrresses (ULA)"
    "Announce DNSv6 server by router advertisement" with the ULA of my PiHole instance.

  • Now on the machine running PiHole cat /etc/resolv.conf gives

# Generated by dhcpcd from ens3.dhcp
# /etc/resolv.conf.head can replace this line
nameserver 9.9.9.9
nameserver 149.112.112.112
# /etc/resolv.conf.tail can replace this line

(No DNSv6 server here since I could not set it trough pihole and did want to do so manually to avoid breaking more things. But good to know that you've got this covered already! Thanks!)
Also, I have never assigned my router to be an upstream DNS server for PiHole.
Is this sufficient to exclude a DNS loop? Or did I overlook sth?

Indeed, quite bizarre! Just now I have booted up the VM of the (broken) PiHole instance again. I am quite sure that is was properly shut down before by sudo poweroff and was not in a hibernation or frozen state. It is not used as DNS server in the network anymore, but still:
pihole restardns times out.
At the same time I can successfully ping both configures upstream DNS servers from that machine:

$>ping 9.9.9.9
PING 9.9.9.9 (9.9.9.9) 56(84) bytes of data.
64 bytes from 9.9.9.9: icmp_seq=1 ttl=60 time=16.8 ms
64 bytes from 9.9.9.9: icmp_seq=2 ttl=60 time=15.4 ms
64 bytes from 9.9.9.9: icmp_seq=3 ttl=60 time=15.1 ms
$>ping 149.112.112.112
PING 149.112.112.112 (149.112.112.112) 56(84) bytes of data.
64 bytes from 149.112.112.112: icmp_seq=1 ttl=60 time=15.4 ms
64 bytes from 149.112.112.112: icmp_seq=2 ttl=60 time=13.2 ms
64 bytes from 149.112.112.112: icmp_seq=3 ttl=60 time=12.8 ms

I connect to the machine via SSH, so I think the network connection should be functional.

This is the configuration of the (virtual) NIC of the VM running PiHole:

2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 02:11:32:22:92:2b brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.109/24 brd 192.168.2.255 scope global dynamic ens3
       valid_lft 863027sec preferred_lft 863027sec
    inet 192.168.2.2/24 brd 192.168.2.255 scope global secondary noprefixroute ens3
       valid_lft forever preferred_lft forever

It is reachable over both the static IP address (192.168.2.2), which is, of course, unique in my network, and a dynamically assigned address, which I basically never use. However, the dynamically assigned address is required as it is a headless VM with no other way to physically access it than via network (it runs on my NAS, which likewise does not have a VGA adapter).
The configuration is the same for the master branch PiHole where I do not experience issues concerning restarting FTL and the dns-server.

What dns servers do you have your pihole set to use?

The "Quad9 (filtered, DNSSEC )" DNSv4 servers (because I configured PiHole to use DNSSEC). Mh, good point! I could try if this happens with other DNS servers too.

Yes

Next idea is putting

DEBUG_ALL=true

into /etc/pihole/pihole-FTL.conf and running pihole restartdns

Next time it freezes, there should be some log lines in /var/log/pihole-FTL.log
Maybe you're running into some edge-case inter-lock state not covered somewhere.

@drwatson can you please try the branch fix/ip_validation_setdns ( by pihole checkout core fix/ip_validation_setdns) to see if this fixes the issue you saw adding IPv6 addresses?

Thanks!

I tried pihole restartdnsagain with verbose debug output. This is what I got:

[2020-06-23 21:33:19.601 1260] Using log file /var/log/pihole-FTL.log
[2020-06-23 21:33:19.601 1260] ########## FTL started! ##########
[2020-06-23 21:33:19.601 1260] FTL branch: new/mac_clients
[2020-06-23 21:33:19.601 1260] FTL version: vDev-c4aff06
[2020-06-23 21:33:19.601 1260] FTL commit: c4aff06
[2020-06-23 21:33:19.601 1260] FTL date: 2020-06-23 05:29:07 +0200
[2020-06-23 21:33:19.601 1260] FTL user: pihole
[2020-06-23 21:33:19.601 1260] Compiled for x86_64 (compiled on CI) using gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
[2020-06-23 21:33:19.601 1260] Starting config file parsing (/etc/pihole/pihole-FTL.conf)
[2020-06-23 21:33:19.601 1260]    SOCKET_LISTENING: only local
[2020-06-23 21:33:19.601 1260]    AAAA_QUERY_ANALYSIS: Show AAAA queries
[2020-06-23 21:33:19.601 1260]    MAXDBDAYS: max age for stored queries is 365 days
[2020-06-23 21:33:19.601 1260]    RESOLVE_IPV6: Resolve IPv6 addresses
[2020-06-23 21:33:19.601 1260]    RESOLVE_IPV4: Resolve IPv4 addresses
[2020-06-23 21:33:19.601 1260]    DBINTERVAL: saving to DB file every minute
[2020-06-23 21:33:19.601 1260]    DBFILE: Using /etc/pihole/pihole-FTL.db
[2020-06-23 21:33:19.601 1260]    MAXLOGAGE: Importing up to 24.0 hours of log data
[2020-06-23 21:33:19.602 1260]    PRIVACYLEVEL: Set to 0
[2020-06-23 21:33:19.602 1260]    IGNORE_LOCALHOST: Show queries from localhost
[2020-06-23 21:33:19.602 1260]    BLOCKINGMODE: Null IPs for blocked domains
[2020-06-23 21:33:19.602 1260]    ANALYZE_ONLY_A_AND_AAAA: Disabled. Analyzing all queries
[2020-06-23 21:33:19.602 1260]    DBIMPORT: Importing history from database
[2020-06-23 21:33:19.602 1260]    PIDFILE: Using /run/pihole-FTL.pid
[2020-06-23 21:33:19.602 1260]    PORTFILE: Using /run/pihole-FTL.port
[2020-06-23 21:33:19.602 1260]    SOCKETFILE: Using /run/pihole/FTL.sock
[2020-06-23 21:33:19.602 1260]    SETUPVARSFILE: Using /etc/pihole/setupVars.conf
[2020-06-23 21:33:19.602 1260]    MACVENDORDB: Using /etc/pihole/macvendor.db
[2020-06-23 21:33:19.602 1260]    GRAVITYDB: Using /etc/pihole/gravity.db
[2020-06-23 21:33:19.602 1260]    PARSE_ARP_CACHE: Active
[2020-06-23 21:33:19.602 1260]    CNAME_DEEP_INSPECT: Active
[2020-06-23 21:33:19.602 1260]    DELAY_STARTUP: No delay requested.
[2020-06-23 21:33:19.602 1260]    BLOCK_ESNI: Enabled, blocking _esni.{blocked domain}
[2020-06-23 21:33:19.602 1260]    NICE: Set process niceness to -10 (default)
[2020-06-23 21:33:19.602 1260]    MAXNETAGE: No automated removal of IP addresses and host names from the network table
[2020-06-23 21:33:19.602 1260]    NAMES_FROM_NETDB: Enabled, trying to get names from network database
[2020-06-23 21:33:19.603 1260] *****************************
[2020-06-23 21:33:19.603 1260] * Debugging enabled         *
[2020-06-23 21:33:19.603 1260] * DEBUG_DATABASE        YES *
[2020-06-23 21:33:19.603 1260] * DEBUG_NETWORKING      YES *
[2020-06-23 21:33:19.603 1260] * DEBUG_LOCKS           YES *
[2020-06-23 21:33:19.603 1260] * DEBUG_QUERIES         YES *
[2020-06-23 21:33:19.603 1260] * DEBUG_FLAGS           YES *
[2020-06-23 21:33:19.603 1260] * DEBUG_SHMEM           YES *
[2020-06-23 21:33:19.603 1260] * DEBUG_GC              YES *
[2020-06-23 21:33:19.603 1260] * DEBUG_ARP             YES *
[2020-06-23 21:33:19.603 1260] * DEBUG_REGEX           YES *
[2020-06-23 21:33:19.603 1260] * DEBUG_API             YES *
[2020-06-23 21:33:19.603 1260] * DEBUG_OVERTIME        YES *
[2020-06-23 21:33:19.603 1260] * DEBUG_EXTBLOCKED      YES *
[2020-06-23 21:33:19.603 1260] * DEBUG_CAPS            YES *
[2020-06-23 21:33:19.603 1260] * DEBUG_DNSMASQ_LINES   YES *
[2020-06-23 21:33:19.603 1260] * DEBUG_VECTORS         YES *
[2020-06-23 21:33:19.603 1260] * DEBUG_RESOLVER        YES *
[2020-06-23 21:33:19.603 1260] * DEBUG_CLIENTS         YES *
[2020-06-23 21:33:19.603 1260] *****************************
[2020-06-23 21:33:19.603 1260] Finished config file parsing
[2020-06-23 21:33:19.603 1260] Creating shared memory with name "/FTL-lock" and size 48
[2020-06-23 21:33:19.603 1260] Creating shared memory with name "/FTL-counters" and size 124
[2020-06-23 21:33:19.603 1260] Creating shared memory with name "/FTL-settings" and size 12
[2020-06-23 21:33:19.604 1260] Creating shared memory with name "/FTL-strings" and size 4096
[2020-06-23 21:33:19.604 1260] Creating shared memory with name "/FTL-domains" and size 98304
[2020-06-23 21:33:19.604 1260] DEBUG: LCM(4096, 664) == 339968 >= 664
[2020-06-23 21:33:19.604 1260] Creating shared memory with name "/FTL-clients" and size 339968
[2020-06-23 21:33:19.604 1260] DEBUG: LCM(4096, 32) == 4096 >= 32
[2020-06-23 21:33:19.604 1260] Creating shared memory with name "/FTL-upstreams" and size 4096
[2020-06-23 21:33:19.604 1260] Creating shared memory with name "/FTL-queries" and size 262144
[2020-06-23 21:33:19.604 1260] DEBUG: LCM(4096, 64) == 4096 < 9600
[2020-06-23 21:33:19.604 1260] DEBUG: Using 3*4096 == 12288 >= 9600
[2020-06-23 21:33:19.604 1260] Creating shared memory with name "/FTL-overTime" and size 12288
[2020-06-23 21:33:19.604 1260] initOverTime(): Initializing 150 slots from 1592852100 to 1592942100
[2020-06-23 21:33:19.604 1260] initSlot(149, 1592942100): Zeroing overTime slot
[2020-06-23 21:33:19.604 1260] initSlot(148, 1592941500): Zeroing overTime slot
[2020-06-23 21:33:19.604 1260] initSlot(147, 1592940900): Zeroing overTime slot
[2020-06-23 21:33:19.604 1260] initSlot(146, 1592940300): Zeroing overTime slot
[2020-06-23 21:33:19.604 1260] initSlot(145, 1592939700): Zeroing overTime slot
[2020-06-23 21:33:19.604 1260] initSlot(144, 1592939100): Zeroing overTime slot
[2020-06-23 21:33:19.604 1260] initSlot(143, 1592938500): Zeroing overTime slot
[2020-06-23 21:33:19.604 1260] initSlot(142, 1592937900): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(141, 1592937300): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(140, 1592936700): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(139, 1592936100): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(138, 1592935500): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(137, 1592934900): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(136, 1592934300): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(135, 1592933700): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(134, 1592933100): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(133, 1592932500): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(132, 1592931900): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(131, 1592931300): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(130, 1592930700): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(129, 1592930100): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(128, 1592929500): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(127, 1592928900): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(126, 1592928300): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(125, 1592927700): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(124, 1592927100): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(123, 1592926500): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(122, 1592925900): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(121, 1592925300): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(120, 1592924700): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(119, 1592924100): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(118, 1592923500): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(117, 1592922900): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(116, 1592922300): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(115, 1592921700): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(114, 1592921100): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(113, 1592920500): Zeroing overTime slot
[2020-06-23 21:33:19.605 1260] initSlot(112, 1592919900): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(111, 1592919300): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(110, 1592918700): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(109, 1592918100): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(108, 1592917500): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(107, 1592916900): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(106, 1592916300): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(105, 1592915700): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(104, 1592915100): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(103, 1592914500): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(102, 1592913900): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(101, 1592913300): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(100, 1592912700): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(99, 1592912100): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(98, 1592911500): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(97, 1592910900): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(96, 1592910300): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(95, 1592909700): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(94, 1592909100): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(93, 1592908500): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(92, 1592907900): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(91, 1592907300): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(90, 1592906700): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(89, 1592906100): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(88, 1592905500): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(87, 1592904900): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(86, 1592904300): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(85, 1592903700): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(84, 1592903100): Zeroing overTime slot
[2020-06-23 21:33:19.606 1260] initSlot(83, 1592902500): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(82, 1592901900): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(81, 1592901300): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(80, 1592900700): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(79, 1592900100): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(78, 1592899500): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(77, 1592898900): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(76, 1592898300): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(75, 1592897700): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(74, 1592897100): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(73, 1592896500): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(72, 1592895900): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(71, 1592895300): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(70, 1592894700): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(69, 1592894100): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(68, 1592893500): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(67, 1592892900): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(66, 1592892300): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(65, 1592891700): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(64, 1592891100): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(63, 1592890500): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(62, 1592889900): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(61, 1592889300): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(60, 1592888700): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(59, 1592888100): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(58, 1592887500): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(57, 1592886900): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(56, 1592886300): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(55, 1592885700): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(54, 1592885100): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(53, 1592884500): Zeroing overTime slot
[2020-06-23 21:33:19.607 1260] initSlot(52, 1592883900): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(51, 1592883300): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(50, 1592882700): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(49, 1592882100): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(48, 1592881500): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(47, 1592880900): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(46, 1592880300): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(45, 1592879700): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(44, 1592879100): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(43, 1592878500): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(42, 1592877900): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(41, 1592877300): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(40, 1592876700): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(39, 1592876100): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(38, 1592875500): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(37, 1592874900): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(36, 1592874300): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(35, 1592873700): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(34, 1592873100): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(33, 1592872500): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(32, 1592871900): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(31, 1592871300): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(30, 1592870700): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(29, 1592870100): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(28, 1592869500): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(27, 1592868900): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(26, 1592868300): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(25, 1592867700): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(24, 1592867100): Zeroing overTime slot
[2020-06-23 21:33:19.608 1260] initSlot(23, 1592866500): Zeroing overTime slot
[2020-06-23 21:33:19.609 1260] initSlot(22, 1592865900): Zeroing overTime slot
[2020-06-23 21:33:19.609 1260] initSlot(21, 1592865300): Zeroing overTime slot
[2020-06-23 21:33:19.609 1260] initSlot(20, 1592864700): Zeroing overTime slot
[2020-06-23 21:33:19.609 1260] initSlot(19, 1592864100): Zeroing overTime slot
[2020-06-23 21:33:19.609 1260] initSlot(18, 1592863500): Zeroing overTime slot
[2020-06-23 21:33:19.609 1260] initSlot(17, 1592862900): Zeroing overTime slot
[2020-06-23 21:33:19.609 1260] initSlot(16, 1592862300): Zeroing overTime slot
[2020-06-23 21:33:19.609 1260] initSlot(15, 1592861700): Zeroing overTime slot
[2020-06-23 21:33:19.609 1260] initSlot(14, 1592861100): Zeroing overTime slot
[2020-06-23 21:33:19.609 1260] initSlot(13, 1592860500): Zeroing overTime slot
[2020-06-23 21:33:19.609 1260] initSlot(12, 1592859900): Zeroing overTime slot
[2020-06-23 21:33:19.609 1260] initSlot(11, 1592859300): Zeroing overTime slot
[2020-06-23 21:33:19.609 1260] initSlot(10, 1592858700): Zeroing overTime slot
[2020-06-23 21:33:19.609 1260] initSlot(9, 1592858100): Zeroing overTime slot
[2020-06-23 21:33:19.609 1260] initSlot(8, 1592857500): Zeroing overTime slot
[2020-06-23 21:33:19.609 1260] initSlot(7, 1592856900): Zeroing overTime slot
[2020-06-23 21:33:19.609 1260] initSlot(6, 1592856300): Zeroing overTime slot
[2020-06-23 21:33:19.609 1260] initSlot(5, 1592855700): Zeroing overTime slot
[2020-06-23 21:33:19.609 1260] initSlot(4, 1592855100): Zeroing overTime slot
[2020-06-23 21:33:19.609 1260] initSlot(3, 1592854500): Zeroing overTime slot
[2020-06-23 21:33:19.609 1260] initSlot(2, 1592853900): Zeroing overTime slot
[2020-06-23 21:33:19.609 1260] initSlot(1, 1592853300): Zeroing overTime slot
[2020-06-23 21:33:19.609 1260] initSlot(0, 1592852700): Zeroing overTime slot
[2020-06-23 21:33:19.609 1260] DEBUG: LCM(4096, 16) == 4096 >= 16
[2020-06-23 21:33:19.609 1260] Creating shared memory with name "/FTL-dns-cache" and size 4096
[2020-06-23 21:33:19.609 1260] DEBUG: LCM(4096, 1) == 4096 >= 2
[2020-06-23 21:33:19.609 1260] Creating shared memory with name "/FTL-per-client-regex" and size 4096
[2020-06-23 21:33:19.610 1260] dbquery: "SELECT VALUE FROM ftl WHERE id = 0;"
[2020-06-23 21:33:19.610 1260]          ---> Result 8 (int)
[2020-06-23 21:33:19.610 1260] Database version is 8
[2020-06-23 21:33:19.610 1260] Unlocking database
[2020-06-23 21:33:19.610 1260] Unlocking database: Success
[2020-06-23 21:33:19.610 1260] Database successfully initialized
[2020-06-23 21:33:19.611 1260] Locking database
[2020-06-23 21:33:19.611 1260] Locking database: Success
[2020-06-23 21:33:19.611 1260] DB_read_queries(): "SELECT * FROM queries WHERE timestamp >= 1592854399"
[2020-06-23 21:33:19.611 1260] New upstream server: 9.9.9.9 (0/128)
[2020-06-23 21:33:19.611 1260] Adding "9.9.9.9" (len 8) to buffer. next_str_pos is 1
[2020-06-23 21:33:19.611 1260] getOverTimeID(1592924100): 119
[2020-06-23 21:33:19.611 1260] Adding "1.1.e.c.4.2.e.9.f.a.a.8.a.2.5.c.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.f.ip6.arpa" (len 73) to buffer. next_str_pos is 9
[2020-06-23 21:33:19.611 1260] Adding "127.0.0.1" (len 10) to buffer. next_str_pos is 82
[2020-06-23 21:33:19.611 1260] gravityDB_open(): Trying to open /etc/pihole/gravity.db in read-only mode
[2020-06-23 21:33:19.611 1260] gravityDB_open(): Setting location for temporary object to MEMORY
[2020-06-23 21:33:19.612 1260] gravityDB_open(): Preparing audit query
[2020-06-23 21:33:19.613 1260] gravityDB_open(): Setting busy timeout to 1000
[2020-06-23 21:33:19.613 1260] Initializing new sqlite3_stmt* vector with size 1
[2020-06-23 21:33:19.613 1260] Initializing new sqlite3_stmt* vector with size 1
[2020-06-23 21:33:19.613 1260] Initializing new sqlite3_stmt* vector with size 1
[2020-06-23 21:33:19.613 1260] gravityDB_open(): Setting busy timeout to zero
[2020-06-23 21:33:19.613 1260] gravityDB_open(): Successfully opened gravity.db
[2020-06-23 21:33:19.613 1260] Querying gravity database for client with IP 127.0.0.1...
[2020-06-23 21:33:19.613 1260] --> No record for 127.0.0.1 in the client table
[2020-06-23 21:33:19.613 1260] Querying gravity database for MAC address of 127.0.0.1...
[2020-06-23 21:33:19.613 1260] Locking database

The terminal output was

$>pihole restartdns
  [✗] Job for pihole-FTL.service failed because a timeout was exceeded.
See "systemctl status pihole-FTL.service" and "journalctl -xe" for details.

and

$>systemctl status pihole-FTL.service
● pihole-FTL.service - LSB: pihole-FTL daemon
   Loaded: loaded (/etc/init.d/pihole-FTL; generated)
   Active: failed (Result: timeout) since Tue 2020-06-23 21:38:19 CEST; 8min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 1223 ExecStart=/etc/init.d/pihole-FTL start (code=killed, signal=TERM)

Great, that seems work, @PromoFaux !

  • I set up a test machine with the development branch:
    Pi-hole vDev (fix/ip_validation_setdns, v5.0-493-g3205606)
    Web Interface vDev (devel, v5.0-441-g59bd4de)
    FTL vDev (development, vDev-bd405e9)
  • Updating the DNS servers over the terminal succeeds.
sudo pihole -a setdns "9.9.9.9,2620:fe::fe" domain-not-needed no-bogus-priv dnssec
 [✓] Restarting DNS server
  • Updating the over the web GUI succeeds as well but also prints in the pop-up:
    Updating DNS settings failed. Result: (exactly like this with empty space after 'Result:')
    However when refreshing the page, the chosen servers (including the DNSv6 servers) and settings are selected.

The content of resolv.conf is unchanged though (but I do not know whether this is the right place to look for changes).

~$ cat /etc/resolv.conf 
# Generated by dhcpcd from ens3.dhcp
# /etc/resolv.conf.head can replace this line
nameserver 9.9.9.9
nameserver 149.112.112.112
# /etc/resolv.conf.tail can replace this lin

(i.e. no DNSv6 server in here)