![]() |
![]() |
RouterOS Scripts a collection of scripts for MikroTik RouterOS |
ℹ️ Info: This script can not be used on its own but requires the base installation. See main README for details.
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.
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;
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:
Domain: the domain used for dns recordsℹ️ Info: Copy relevant configuration from
global-config(the one without-overlay) to your localglobal-config-overlayand modify it to your specific needs.
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.
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.
⬅️ 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>