DDI Central discovers and manages BIND (named) servers on Linux.
To let DDI Central:
You need to:
These steps assume:
What it does
What it does
What it does
What to look for
You paste in this content:
[Unit]
Description=Berkeley Internet Name Domain (DNS)
Wants=nss-lookup.target
Wants=named-setup-rndc.service
Before=nss-lookup.target
After=network.target
After=named-setup-rndc.service
[Service]
Type=forking
#User=ddi
#Group=ddi
Environment=NAMEDCONF=/etc/bind/named.conf
Environment=LD_LIBRARY_PATH=${dir1}/sharedlib:$LD_LIBRARY_PATH
ExecStartPre=/bin/bash -c 'if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/bin/named-checkconf "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi'
ExecStart=/usr/sbin/named -c ${NAMEDCONF} $OPTIONS
ExecReload=/bin/sh -c '/usr/sbin/rndc reload > /dev/null 2>&1 || /bin/kill -HUP $MAINPID'
ExecStop=/bin/sh -c '/usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID'
TimeoutStartSec=30s
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/var/cache/bind
AmbientCapabilities=CAP_NET_BIND_SERVICE
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
What this does
Why before discovery
Running as root with standard paths keeps the environment simple so DDI Central can:
After you save this unit file, you would normally run:
systemctl daemon-reload
systemctl restart named
systemctl status named
(Even though not listed explicitly here, daemon-reload is required after editing a unit.)
At this point, you perform the DNS server discovery from DDI Central.
Before onboarding and discovering a BIND9-based DNS server into DDI Central, you must reconfigure it to run under a dedicated, low-privilege user (ddi) and grant only the minimum required capabilities. This is because running named as root is risky—it gives the DNS process unnecessary system-level privileges. In order to harden security, transitioning the ddi user ensures the DNS server operates with just enough permission to function, significantly reducing the attack surface.
For DDI Central to read, discover, and ingest your BIND9 configuration and zone files, they must be owned and accessible by the ddi user. Changing ownership (chown) and permissions (chmod) ensures proper access without exposing files to the wrong users.
Ensure the `ddi` user owns the necessary files and directories:
or
This makes sure the ddi user—and only that user—owns all of the BIND configuration and zone files.
or
Now that ddi owns them, only ddi (read/write) and the root or members of the file’s group (read/write) can touch those files. Everyone else is denied access.
Linux privileges normally require you to run as root to open ports below 1024. To enable the `ddi` user to bind to privileged ports (TCP/UDP 53, 853, 443) without full root privileges, apply the following capabilities:
It grants just the CAP_NET_BIND_SERVICE capability to those two binaries, so they can open low ports.
Verify with:
Both commands should show that cap_net_bind_service=ep is set. By using Linux’s cap_net_bind_service, the DNS server can still bind to critical ports (53 for DNS, 853 for DoT, 443 for DoH) without needing root. This is essential for secure environments where full root execution is discouraged or prohibited.
-Open and edit your BIND systemd service file—depending on your OS it’ll be named either:Depending on your OS and setup, open:
Then under [Service] section make these changes:
[Service]
ExecStart=/usr/sbin/named -u ddi -c ${NAMEDCONF} $OPTIONS
TimeoutStartSec=30s
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/usr/local/bind9/var
AmbientCapabilities=CAP_NET_BIND_SERVICE
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
Here,
After saving the changes, reload systemd:
Once the above steps are complete and `named` is running as the `ddi` user with the proper security context, proceed to:
Once the cluster is created, you'll be immediately directed to the Servers page to add your DNS and DHCP servers. If not, you can add servers by selecting the Settings menu from the menu bar along the left side of the screen. From the submenus that appear in parallel, choose Servers.

Enter the server details below:
Follow the steps below to onboard the target DNS/DHCP servers into DDI Central, either through Discovery or by bypassing Discovery.
Step 1 -> SERVER NAME: A required field where you assign a unique name to the server being configured or added for identification.


Step 6 -> DISCOVER EXISTING CONFIGURATIONS?: You have two choices to make here; opt for Step 7 or Step 8 depending on your requirement.
Step 7 -> Adding and configuring servers using DDI Central without discovery
Specify No if you just want to add and onboard a new server from the scratch. You can setup the required DNS, DHCP or IP address configurations to your server through the user-friendly DDI Central user interface later.
This enables you any Linux server to DDI console and enable DDI Central to transform the ordinary Linux servers into DNS and DHCP servers.
This is because DDI Central has DNS and DHCP software services bundled with the product and it gets deployed on your Linux servers while installing the product. Then you can start implementing, configuring, and managing DNS, DHCP and IPAM from scratch.
For this, you'll have to choose No for Discover Existing Configurations? option.
Choosing the path of discovering the existing configurations from the server.
Choose any one of the three options: DNS, DHCP, Both, for the Discover Existing Configurations?.
Choosing the option Bothdiscovers all the advanced configurations of DNS-DHCP services, all the DNS objects including the IP automated DNS zones controlled by DHCP events, the whole IP address plan and policies managed under the DHCP service and the whole IP address inventory

Provide the essential Config Path and the Zone File path (for the DNS service running in the server), while providing the Lease Path and the DHCP server path (for the DHCP service running in the server).
Enter the essential details of the main server running the Management UI Console. This step is mandatory, as it helps establish the connection between the to be onboarded DNS/DHCP server and the Main Console server.
APP CONSOLE: Enter the static IP address of the central server that hosts the DDI Central Management UI console.
Step 10 -> Click Save to add the server into the ME DDI console.
If you have chosen the discovery option as outlined in Step 7, ManageEngine DDI Central will begin to discover configurations from the designated paths for each service.
After the discovery, once your servers are added into the DDI Central console you can further proceed modifying the discovered DNS-DHCP-IPAM configurations or quickly start setting up the DNS-DHCP-IPAM configurations for the new server through the user-friendly DDI Central user interface.
A root jail in Linux DNS refers to a security mechanism used to limit the access of the BIND process to a specific portion of the file system. This is done by just changing the root directory to a subdirectory creating a "chroot jail" (change root jail), which confines the BIND service to a designated directory tree. For example, '/var/named/chroot'becomes the root directory '/ '.
To successfully integrate all the contents in the chroot directory into the DDI Central UI, all you have to do is inform DDI Central whether you want to discover the chroot directory or not by selecting
Choosing Yes, DDI Central prompts you to enter the relative path of the CHROOT directory. Enter all the other essential details for the discovery and click Save.

Once DDI Central has completed discovering all the necessary configuration files, zone files, and libraries within the chroot directory, it converts all relative paths within the service directory to absolute paths. Therefore a DDI Central admin, should ensure the following steps are followed:
When you onboard a new DNS server using No Discovery (i.e., you select No for Discover Existing Configurations), DDI Central can optionally show a special step called DNS Domain Migrations.
This option appears only when you are adding the server into a cluster/site that already contains one or more DNS servers with active domains/zones managed under that same cluster/site.
The goal of DNS Domain Migrations is to help you build redundancy cleanly while onboarding the new server—so domains already served in the cluster can be extended to this new server as either an additional Primary (multi-primary) or as a Secondary (multi-secondary), depending on the role you want the new server to play.
During this step, you choose how the to-be onboarded server should participate for the existing cluster domains:
You can migrate all domains from the incumbent DNS servers in the cluster/site, or select only specific domains to extend to the new server. If you choose None, the server will be onboarded into the cluster/site without adding any domains, and you can configure zones and domain participation later.
Once you finalize the role (Primary or Secondary) and domain selection, click Save to begin the migration. Migration may take some time depending on the number of domains/zones, so wait for on-screen status updates before proceeding further.

Once DDI Central has successfully discovered and imported the DNS server, you tighten security and let BIND run as a dedicated, limited user (ddi).
What it does
Sets rwxrws--- on folders/files:
Why
What it does
[Unit]
Description=Berkeley Internet Name Domain (DNS)
Wants=nss-lookup.target
Wants=named-setup-rndc.service
Before=nss-lookup.target
After=network.target
After=named-setup-rndc.service
[Service]
Type=forking
User=ddi
Group=ddi
Environment=NAMEDCONF=/etc/bind/named.conf
Environment=LD_LIBRARY_PATH=${dir1}/sharedlib:$LD_LIBRARY_PATH
ExecStartPre=/bin/bash -c 'if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/local/bind9/bin/named-checkconf "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi'
ExecStart=/usr/sbin/named -u ddi -c ${NAMEDCONF} $OPTIONS
ExecReload=/bin/sh -c '/usr/sbin/rndc reload > /dev/null 2>&1 || /bin/kill -HUP $MAINPID'
ExecStop=/bin/sh -c '/usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID'
TimeoutStartSec=30s
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/usr/local/bind9/var
AmbientCapabilities=CAP_NET_BIND_SERVICE
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
Key Changes
Why
This is the hardened, production mode:
What it does
What they do
What it does
systemctl disable apparmor
aa-teardown
What they do
Why
In some environments, the default AppArmor profile for BIND conflicts with:
Disabling removes that restriction.
Obviously, from a security perspective, you’d do this only if AppArmor is actually blocking named, and you don’t have a tailored profile. But this is what the given runbook specifies.
What to confirm
You should see named owned by ddi, not root.
Once the servers running Linux DNS-DHCP services are onboarded, DDI Central enables you to perform the following actions:
Action 1 -> Flush DNS Cache: Hit the button "Flush DNS Cache" to refresh the DNS cache of the selected server to ensure that the DNS information hosted on the server is up-to-date.

A dialog box appears prompting you to specify the scope of the cache flush. If you want to flush the cache of all the zones on the server, click Flush All or if you just want to flush the cache of a specific zone on the server, click Flush Specific.

Subsequently, specify the zone name and click Flush Cache.

Action 2 -> Reset Password: Enables network admins to improve security with enhanced controls over DDI Central's Node Agent authentication. This option allows admins to reset passwords to ensure secure transactions between DDI Central's Node Agent and DDI Central's App Console.
The Node Agent, installed on all DNS and DHCP servers in your network, securely communicates with the DDI Central App Console using encrypted authentication. Previously, in DDI Central password resets were automatic and did not require admin involvement. Now, admins can reset the Node Agent password to enhance security, especially if they suspect it has been intercepted or compromised.
Action 3 -> Suspend Operations: Both DNS and DHCP servers within a cluster can be suspended from providing further updates to the app console UI, by going to Servers>Actions, and clicking on Suspend option in the dropdown menu.


After selecting yes to suspend the selected server, the server will be marked Unmanaged in the status section.
When the admin wants to change the state back to Manage, the suspended servers can also be resumed to reflect their updates in app console UI, by clicking on the Resume Operations option.


Action 4 -> Upgrade PPM:
(UI-based PPM upgrade for Linux Discovery Node Agent): The Upgrade PPM option is available starting DDI Central v6.1. When you click Upgrade PPM, DDI Central triggers an in-app upgrade of the onboarded Linux Discovery Node Agent to the latest supported build—so you don’t have to update the agent manually on the Linux server.

Prerequisites:
Action 5 -> Agent Version:You can now view the node agent version installed on each server under the Agent Version column in the table.

Action 6 -> Check Status: DDI Central enables users to update the status of their servers and associated services by clicking the Check Status button after selecting the desired server. This action refreshes and displays the current status of both the server and the services it hosts. Users can select one or multiple servers to update their status simultaneously.

Action 7 -> Identifying the Main App Console Server
