You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
### Summary
When set up in a configuration that includes multiple Name Servers for a given Zone [Domain], Technitium DNS Version 14.3 employs AXFR/IXFR transfers to replicate zone data between name servers.
However, the transfers themselves do not seem to respect or follow local [host] network configuration settings when installed on a multi-homed server. As a result this may introduce complexity to configurations for other network infrastructure and to issue triage and management for any service involving the host.
Important Note To the best of my abilities to test this, I've been able to get synchronisation to work, even though it seems to be using the primary address for the Secondary Host, rather than the virtual address I set up to be dedicated to Technitium DNS. In order to do this, I just had to make a minor change on the Primary, specifically in the Zone [Zone Name] Zone Options >> Zone Transfer tab, I had to select "Use Specified Network Access Control List (ACL) as the Zone Transfer type, then make sure that I had the Primary IP address of the Secondary server in the "Network Access Control List (ACL)" text box...
### Vulnerable Environment
The "Steps to Reproduce" section, below, has been tested [and re-tested] using a pair of Raspberry Pi 4B hosts, each running a fully-patched version of Raspberry Pi OS 13, "Trixie". Each machine has been created as a "clean build" host, i.e. installation, basic configuration and patching of the host OS with no other software installed [apart from tools used during installation [e.g. gparted]. No other application, software, or services have been applied prior to testing.
To be a bit more explicit, I have a pair of Raspberry Pi machines, with the following setup:-
### Desired Deployment / Use Case
In case it helps for context... I currently have a small collection of Raspberry Pi machines running a variety of local services supporting a home lab and family network, including a pair of Pi3B+ machines, each running effectively stand-alone versions of PiHole. However, I want to experiment with hosting a local mail server, which requires MX and TXT records, hence the switch to Technitium. To retain resiliency, I want to keep two hosts, but at the same time move from Pi3B + machines to 8Gb Pi4B machines and co-host Technitium DNS along with other apps and services [NextCloud, WordPress, Bookstack, Home Assistant, etc. I do this by using IP-based segregation of apps and services and setting up each Pi with multiple IP Addresses, such that each service on the network has a dedicated IP address to support it, which makes troubleshooting much [much] simpler.
** ### Steps to Reproduce **
Set up two hosts to serve as the operational platforms for the Primary and Secondary servers of a DNS Domain hosted by Technitium DNS.
Add a "Virtual IP Address" to each host such that it adopts a "multi-homed" configuration. [ For example, when deploying to a pair of Raspberry Pi hosts running Raspberry Pi OS 13, Trixie", use "sudo nmtui" to access the Network Manager Text User Interface. Select "Edit", go to the existing, default connection. Change the IPv4 settings from "Automatic" to "Manual" if required, then "Add" a second IP address to the host. Repeat for each server.
Perform a conventional installation of Technitium DNS for both Primary and Secondary servers in a Zone.
On each host, use the Web Admin panels [Settings >> General >> "DNS Server Local End Points" ] to explicitly set the added Virtual IP Address to be the listener for the DNS service on the host.
Evidence Create LICENSE #1 - Open a command prompt on the host in question and issue either the following command, or a functional equivalent if not performing validation on a Raspberry Pi:-
[The above example output has been edited to remove two rows of returned detail that were related to the AVAHI daemon, listening on port 5353].
Complete the activation of synchronization and confirm effectiveness by checking the value of the "Status" column in the "Zones" view of the Admin web screens.
Open or switch to a browser tab/window connected to the Secondary DNS Server's Web Admin panels and select Zones
Navigate to and select the Zone used for issue reproduction
Select the "Resync" function by clicking the button displayed near the top of display
Open or switch to a browser tab/window connected to the Primary DNS Server's Web Admin panels and select "Logs"
Click on the most recent log [these are listed in reverse date order; it should be the log at the top of the list]
Open the log and scroll to the bottom
Look for a timestamped log entry that includes the text "DNS Server received zone transfer request for zone:"
Examine the record and note that the Source IP Address of the requesting secondary server [which can be found in a field between the record's timestamp [1st field] and the "[TCP] DNS Server received zone transfer" text [3rd field], the second field, enclosed in square brackets, contains the PRIMARY IP Address of the Secondary Server, NOT the secondary address defined in the Secondary Server's "Settings" >> "General" Admin/Configuration values.
### Partial Log Extract
[2026-02-23 12:07:16 UTC] DNS Server auth config file was saved: /etc/dns/auth.config
[2026-02-23 13:01:43 UTC] [172.16.103.24:44230] [TCP] DNS Server received zone transfer request for zone: saurian.net
[2026-02-23 13:01:48 UTC] [172.16.104.1:33286] Check for update was done {updateAvailable: False; updateVersion: 14.3; updateTitle: New Update (14.3) Available!; updateMessage: Follow the instructions from the link below to update the DNS server to the latest version. Read the change logs before installing this update to know if there are any breaking changes.; instructionsLink: https://blog.technitium.com/2017/11/running-dns-server-on-ubuntu-linux.html; changeLogLink: https://github.com/TechnitiumSoftware/DnsServer/blob/master/CHANGELOG.md;}
### Expected Behaviour
I would like/expect Technitium DNS to use the nominated IP Address [in this example, 172.16.103.241] for AXFR/IXFR transfer requests, since this is the address nominated for the service via the General Settings tab...
What seems to be happening with my setup is that the Secondary Server does not use/respect the "DNS Server Local End Points" value provided in the "Settings" >> "General" configuration options. That is probably a bit of an unfair way to describe it; it might be more accurate to say that there is no option in the configuration settings to allow an administrator to explicitly define a local host's IP address to be used for AXFR/IXFR traffic - instead the running binary just seems to grab the host's primary address and uses that for all synchronisation traffic with the Primary.
I'm reporting this as a bug - rather than an enhancement request - because I think that the label of "DNS Server Local End Points" implies the IP address to be used for "all DNS related network activity", even though that is not currently happening in practice.
I think there are two possible technical approaches to a solution I would like to see... One might be to change the code so that the AXFR/IXFR traffic uses whatever IP Address is set in the "DNS Server Local End Points" field [which, honestly, I'm less keen on]. The other would be to create a new field and allow the admin user to explicitly nominate the address they want to use.
I absolutely appreciated that:-
I already have a functional work-around - this is not a "show stopper" issue by any means
I am one of those extreme outlier use cases - someone who wants to deploy Technitium in a possibly unconventional way.
As a result, I do not expect this to get priority attention. However, I very much hope that you're able to come up with a way to make Technitium's use of IP addresses more transparent [and, hopefully, more configurable], for users.
### Summary
When set up in a configuration that includes multiple Name Servers for a given Zone [Domain], Technitium DNS Version 14.3 employs AXFR/IXFR transfers to replicate zone data between name servers.
However, the transfers themselves do not seem to respect or follow local [host] network configuration settings when installed on a multi-homed server. As a result this may introduce complexity to configurations for other network infrastructure and to issue triage and management for any service involving the host.
Important Note To the best of my abilities to test this, I've been able to get synchronisation to work, even though it seems to be using the primary address for the Secondary Host, rather than the virtual address I set up to be dedicated to Technitium DNS. In order to do this, I just had to make a minor change on the Primary, specifically in the Zone [Zone Name] Zone Options >> Zone Transfer tab, I had to select "Use Specified Network Access Control List (ACL) as the Zone Transfer type, then make sure that I had the Primary IP address of the Secondary server in the "Network Access Control List (ACL)" text box...
### Vulnerable Environment
The "Steps to Reproduce" section, below, has been tested [and re-tested] using a pair of Raspberry Pi 4B hosts, each running a fully-patched version of Raspberry Pi OS 13, "Trixie". Each machine has been created as a "clean build" host, i.e. installation, basic configuration and patching of the host OS with no other software installed [apart from tools used during installation [e.g. gparted]. No other application, software, or services have been applied prior to testing.
To be a bit more explicit, I have a pair of Raspberry Pi machines, with the following setup:-
Host 1: [Primary DNS]
Primary IP: 172.16.103.21
Technitium Virtual IP: 172.16.103.211
Host 2: [Secondary DNS]
Primary IP: 172.16.103.24
Technitium Virtual IP: 172.16.103.241
### Desired Deployment / Use Case
In case it helps for context... I currently have a small collection of Raspberry Pi machines running a variety of local services supporting a home lab and family network, including a pair of Pi3B+ machines, each running effectively stand-alone versions of PiHole. However, I want to experiment with hosting a local mail server, which requires MX and TXT records, hence the switch to Technitium. To retain resiliency, I want to keep two hosts, but at the same time move from Pi3B + machines to 8Gb Pi4B machines and co-host Technitium DNS along with other apps and services [NextCloud, WordPress, Bookstack, Home Assistant, etc. I do this by using IP-based segregation of apps and services and setting up each Pi with multiple IP Addresses, such that each service on the network has a dedicated IP address to support it, which makes troubleshooting much [much] simpler.
** ### Steps to Reproduce **
$ sudo netstat -tulpn | grep :53
tcp 0 0 172.16.103.211:53 0.0.0.0:* LISTEN 643/dotnet
tcp6 0 0 :::53 :::* LISTEN 643/dotnet
udp 0 0 172.16.103.211:53 0.0.0.0:* 643/dotnet
udp6 0 0 :::53 :::* 643/dotnet
[The above example output has been edited to remove two rows of returned detail that were related to the AVAHI daemon, listening on port 5353].
### Partial Log Extract
[2026-02-23 12:07:16 UTC] DNS Server auth config file was saved: /etc/dns/auth.config
[2026-02-23 13:01:43 UTC] [172.16.103.24:44230] [TCP] DNS Server received zone transfer request for zone: saurian.net
[2026-02-23 13:01:48 UTC] [172.16.104.1:33286] Check for update was done {updateAvailable: False; updateVersion: 14.3; updateTitle: New Update (14.3) Available!; updateMessage: Follow the instructions from the link below to update the DNS server to the latest version. Read the change logs before installing this update to know if there are any breaking changes.; instructionsLink: https://blog.technitium.com/2017/11/running-dns-server-on-ubuntu-linux.html; changeLogLink: https://github.com/TechnitiumSoftware/DnsServer/blob/master/CHANGELOG.md;}
### Expected Behaviour
I would like/expect Technitium DNS to use the nominated IP Address [in this example, 172.16.103.241] for AXFR/IXFR transfer requests, since this is the address nominated for the service via the General Settings tab...
What seems to be happening with my setup is that the Secondary Server does not use/respect the "DNS Server Local End Points" value provided in the "Settings" >> "General" configuration options. That is probably a bit of an unfair way to describe it; it might be more accurate to say that there is no option in the configuration settings to allow an administrator to explicitly define a local host's IP address to be used for AXFR/IXFR traffic - instead the running binary just seems to grab the host's primary address and uses that for all synchronisation traffic with the Primary.
I'm reporting this as a bug - rather than an enhancement request - because I think that the label of "DNS Server Local End Points" implies the IP address to be used for "all DNS related network activity", even though that is not currently happening in practice.
I think there are two possible technical approaches to a solution I would like to see... One might be to change the code so that the AXFR/IXFR traffic uses whatever IP Address is set in the "DNS Server Local End Points" field [which, honestly, I'm less keen on]. The other would be to create a new field and allow the admin user to explicitly nominate the address they want to use.
I absolutely appreciated that:-
As a result, I do not expect this to get priority attention. However, I very much hope that you're able to come up with a way to make Technitium's use of IP addresses more transparent [and, hopefully, more configurable], for users.