Skip to content

DNSSEC validation fails for wildcard domains #2751

@Ultimator14

Description

@Ultimator14

Versions

  • Pi-hole: 6.3
  • Web: 6.4
  • FTL: 6.4.1

Platform

  • OS and version: Gentoo Linux
  • Platform: Docker on Raspberry Pi

Problem description

I have set up a wildcard DNS record *.b.c.pygos.space.
The DNSSEC validation for all subdomains works e.g. a.b.c.pygos.space gives a valid DNSSEC result.
The validation for the wildcard *.b.c.pygos.space itself fails however.
Pihole somehow expects an NSEC record for wildcards although there is no NSEC record required here because the wildcard is an exact match of the DNS record.

Expected behavior

DNSSEC validation should also succeed for the wildcard domain itself.
dig *.b.c.pygos.space should pass DNSSEC validation.

Actual behavior / bug

Validation of wildcard DNS records fails with SERVFAIL (NSEC Missing):

dig *.b.c.pygos.space @my-pihole-ip

; <<>> DiG 9.18.42 <<>> *.b.c.pygos.space
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 43927
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; EDE: 12 (NSEC Missing)
;; QUESTION SECTION:
;*.b.c.pygos.space.		IN	A

;; Query time: 178 msec
;; SERVER: 192.168.157.10#53(192.168.157.10) (UDP)
;; WHEN: Sun Dec 21 15:15:33 CET 2025
;; MSG SIZE  rcvd: 52

The query log shows BOGUS DNS (see screenshot below).
The same query using any other resolver (e.g. cloudflare or a local recursive resolver) will correctly pass DNSSEC validation and display the result.

Steps to reproduce

Steps to reproduce the behavior:

  1. Enable DNSSEC in pihole settings
  2. dig a.b.c.pygos.space @my-pihole-ip works
  3. dig *.b.c.pygos.space @1.1.1.1 works
  4. dig *.b.c.pygos.space @my-pihole-ip fails

Screenshots

Image

Additional context

Compose file

services:
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
    network_mode: host
    environment:
      TZ: 'Europe/Berlin'
      WEBPASSWORD: 'redacted'
      ServerIP: 'redacted'
      ServerIPv6: 'redacted'
      IPv6: 'true'
      DNSMASQ_USER: root
    volumes:
      - './etc-pihole/:/etc/pihole/'
      - './etc-dnsmasq.d/:/etc/dnsmasq.d/'
    cap_add:
      - NET_ADMIN
    restart: unless-stopped
    ulimits:
      nofile:
        soft: 1024
        hard: 4096
    shm_size: '2gb'

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions