From c41e69d8756c8604f3ea3f748faa42db0d548c69 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 24 Mar 2026 17:20:01 +0000 Subject: [PATCH] Add *.home.arpa / in-addr.arpa / ip6.arpa rules to ctrld TOML MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ctrld was only forwarding *.lan and *.local to Unbound. Reverse DNS (PTR) queries and RFC 8375 *.home.arpa names were leaking upstream instead of being answered by Unbound locally. Both router-mode and proxy-mode TOML rule blocks now include: *.home.arpa → upstream.local *.in-addr.arpa → upstream.local (IPv4 reverse DNS) *.ip6.arpa → upstream.local (IPv6 reverse DNS) This ensures all local/private DNS resolves correctly after reboot without any manual intervention or unknown/broken state. https://claude.ai/code/session_01JR2EMK7rwrZJowpstcaxQ6 --- switch_backend.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/switch_backend.py b/switch_backend.py index 1bbf6a9..77649fa 100644 --- a/switch_backend.py +++ b/switch_backend.py @@ -2093,6 +2093,9 @@ def _build_ctrld_toml(vlan_profiles: list, local_domain: str = "lan", lines += [ " { " + f"\'*.{domain_suffix}\' = [\'upstream.local\']" + " },", " { " + "\'*.local\' = [\'upstream.local\']" + " },", + " { " + "\'*.home.arpa\' = [\'upstream.local\']" + " },", + " { " + "\'*.in-addr.arpa\' = [\'upstream.local\']" + " },", + " { " + "\'*.ip6.arpa\' = [\'upstream.local\']" + " },", ] lines += [ " ]", @@ -2126,6 +2129,9 @@ def _build_ctrld_toml(vlan_profiles: list, local_domain: str = "lan", " rules = [", " { " + f"\'*.{domain_suffix}\' = [\'upstream.local\']" + " },", " { " + "\'*.local\' = [\'upstream.local\']" + " },", + " { " + "\'*.home.arpa\' = [\'upstream.local\']" + " },", + " { " + "\'*.in-addr.arpa\' = [\'upstream.local\']" + " },", + " { " + "\'*.ip6.arpa\' = [\'upstream.local\']" + " },", " ]", ] else: