feat(resolver): filter_aaaa for IPv4-only networks (#112)
When enabled, AAAA queries short-circuit to NODATA (NOERROR + empty answer) so Happy Eyeballs clients don't stall waiting on a v6 address they can't use. Also strips `ipv6hint` SvcParam from HTTPS/SVCB answers (RFC 9460) so Chrome ≥103, Firefox, and Safari don't bypass the AAAA filter via the HTTPS record path. Local data is preserved: overrides, zones, the .numa proxy, and the blocklist sinkhole keep whatever v6 addresses they configure — the filter only kicks in on the cache/forward/recursive path. NODATA is correct per RFC 2308 here; NXDOMAIN would incorrectly imply the name doesn't exist for A queries either. Off by default. Opt in via `filter_aaaa = true` under `[server]`.
This commit is contained in:
10
numa.toml
10
numa.toml
@@ -8,6 +8,16 @@ api_port = 5380
|
||||
# %PROGRAMDATA%\numa on windows. Override for
|
||||
# containerized deploys or tests that can't
|
||||
# write to the system path.
|
||||
# filter_aaaa = true # on IPv4-only networks, answer AAAA queries with
|
||||
# NODATA (NOERROR + empty answer) so Happy Eyeballs
|
||||
# clients don't wait on a v6 attempt that can't
|
||||
# succeed. Also strips `ipv6hint` from HTTPS/SVCB
|
||||
# records (RFC 9460) so modern browsers (Chrome
|
||||
# ≥103, Firefox, Safari) don't bypass the AAAA
|
||||
# filter via SVCB hints. Local zones, overrides,
|
||||
# and the .numa proxy are NOT filtered — you can
|
||||
# still configure v6 records for local services.
|
||||
# Default: false.
|
||||
|
||||
# [upstream]
|
||||
# mode = "forward" # "forward" (default) — relay to upstream
|
||||
|
||||
Reference in New Issue
Block a user