eworm on meadow QR code: rsc.eworm.de RouterOS Scripts
a collection of scripts for MikroTik RouterOS

Create DNS records for DHCP leases

GitHub stars GitHub forks GitHub watchers required RouterOS version Telegram group @routeros_scripts donate with PayPal

⬅️ Go back to main README

ℹ️ Info: This script can not be used on its own but requires the base installation. See main README for details.

Description

This script adds (and updates & removes) dns records based on dhcp server leases. An A record based on mac address is created for all bound lease, additionally a CNAME record is created from host name if available.

Requirements and installation

Just install the script:

$ScriptInstallUpdate dhcp-to-dns;

Then run it from dhcp server as lease script. You may want to use lease-script.

A scheduler cares about cleanup:

/system/scheduler/add interval=15m name=dhcp-to-dns on-event="/system/script/run dhcp-to-dns;" start-time=startup;

Configuration

On first run a disabled static dns record acting as marker (with comment “--- dhcp-to-dns above ---”) is added. Move this entry to define where new entries are to be added.

The configuration goes to dhcp server’s network definition. The domain is used to form the dns name:

/ip/dhcp-server/network/add address=10.0.0.0/24 domain=example.com;

A bound lease for mac address 00:11:22:33:44:55 with ip address 10.0.0.50 would result in an A record 00-11-22-33-44-55.example.com pointing to the given ip address.

Additional options can be given from comment, to add an extra level in dns name or define a different domain.

/ip/dhcp-server/network/add address=10.0.0.0/24 domain=example.com comment="domain=another-domain.com, name-extra=dhcp";

This example would result in name 00-11-22-33-44-55.dhcp.another-domain.com for the same lease.

If no domain is found in dhcp server’s network definition a fallback from global-config-overlay is used. This is the parameter:

ℹ️ Info: Copy relevant configuration from global-config (the one without -overlay) to your local global-config-overlay and modify it to your specific needs.

Host name from DHCP lease comment

Overwriting the host name from dhcp lease comment is supported, just add something like hostname=new-hostname in comment, and separate it by comma from other information if required:

/ip/dhcp-server/lease/add address=10.0.0.50 comment="my device, hostname=new-hostname" mac-address=00:11:22:33:44:55 server=dhcp;

Note this information can be configured in wireless access list with dhcp-lease-comment, though it comes with a delay then due to script execution order. Decrease the scheduler interval to reduce the effect.

Frequently asked questions

Is it possible to have the hostname in reverse lookup?

It used to be like that in the beginning. But there are way too many special cases… Devices without hostname, devices with same hostname, devices switching from one network to another, devices with same hostname in different network, …

Fixing one broke another. It never really worked without problems. So finally the code ended with what we have now.

I know about that side effect and limitation with reverse lookup, but there’s really no (easy) way to get that right without mac address. The reverse lookup will always give a name based on mac address.

See also


⬅️ Go back to main README
⬆️ Go back to top

RouterOS Scripts documentation generated on Wed, 25 Mar 2026 14:52:24 +0100 for main/3445/492edcd2
Copyright © 2013-2026 Christian Hesse <mail@eworm.de>