Skip to content

Commit 59db951

Browse files
committed
bind: add DNS-over-TLS forwarding support and fix missing NS record in zone files
Add a 'DNS over TLS' checkbox to the BIND general settings that enables forwarding queries to upstream resolvers via DoT (port 853) using BIND 9.18+ tls ephemeral mode. When disabled, plain UDP forwarding is used as before. Also fix the domain.db zone template to include a mandatory NS record after the SOA record. Without the NS record, BIND refuses to load the zone with 'has no NS records' error, causing all queries for that zone to fail with SERVFAIL. Changes: - General.xml: add forwardertls BooleanField - general.xml form: add DNS over TLS checkbox after DNS Forwarders - named.conf template: use 'forwarders port 853 tls ephemeral' when forwardertls is enabled - domain.db template: add NS record using the configured dnsserver
1 parent 4d7a938 commit 59db951

4 files changed

Lines changed: 15 additions & 0 deletions

File tree

dns/bind/src/opnsense/mvc/app/controllers/OPNsense/Bind/forms/general.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,12 @@
6969
<allownew>true</allownew>
7070
<help>Set one or more hosts to send your DNS queries if the request is unknown.</help>
7171
</field>
72+
<field>
73+
<id>general.forwardertls</id>
74+
<label>DNS over TLS</label>
75+
<type>checkbox</type>
76+
<help>Use DNS-over-TLS (port 853) when forwarding queries. Requires BIND 9.18+.</help>
77+
</field>
7278
<field>
7379
<id>general.filteraaaav4</id>
7480
<label>Enable filter-aaaa on IPv4 Clients</label>

dns/bind/src/opnsense/mvc/app/models/OPNsense/Bind/General.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@
4848
<forwarders type="NetworkField">
4949
<AsList>Y</AsList>
5050
</forwarders>
51+
<forwardertls type="BooleanField">
52+
<Default>0</Default>
53+
<Required>Y</Required>
54+
</forwardertls>
5155
<filteraaaav4 type="BooleanField">
5256
<Default>0</Default>
5357
<Required>Y</Required>

dns/bind/src/opnsense/service/templates/OPNsense/Bind/domain.db

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
{% if domaindb.enabled == '1' and domaindb.type == 'primary' %}
66
$TTL {{ domaindb.ttl }}
77
@ IN SOA {{ domaindb.dnsserver }}. {{ domaindb.mailadmin|replace('@', '.') }}. ( {{ domaindb.serial|trim }} {{ domaindb.refresh }} {{ domaindb.retry }} {{ domaindb.expire }} {{ domaindb.negative }} )
8+
NS {{ domaindb.dnsserver }}.
89
{% if helpers.exists('OPNsense.bind.record.records.record') %}
910
{% for record in helpers.sortDictList(OPNsense.bind.record.records.record, 'name', 'type' ) %}
1011
{% if record.domain == domaindb['@uuid'] %}

dns/bind/src/opnsense/service/templates/OPNsense/Bind/named.conf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,11 @@ options {
3939
{% endif -%}
4040

4141
{% if helpers.exists('OPNsense.bind.general.forwarders') and OPNsense.bind.general.forwarders != '' %}
42+
{% if helpers.exists('OPNsense.bind.general.forwardertls') and OPNsense.bind.general.forwardertls == '1' %}
43+
forwarders port 853 tls ephemeral { {{ OPNsense.bind.general.forwarders.replace(',', '; ') }}; };
44+
{% else %}
4245
forwarders { {{ OPNsense.bind.general.forwarders.replace(',', '; ') }}; };
46+
{% endif %}
4347
{% endif -%}
4448

4549
{% if helpers.exists('OPNsense.bind.dnsbl.enabled') and OPNsense.bind.dnsbl.enabled == '1' %}

0 commit comments

Comments
 (0)