https://github.com/eworm-de/routeros-scripts/discussions/94 https://github.com/eworm-de/routeros-scripts/issues/104 https://github.com/eworm-de/routeros-scripts/issues/120 ... and possibly more.
4.7 KiB
Create DNS records for DHCP leases
ℹ️ 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:
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.
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
- Collect MAC addresses in wireless access list
- Comment DHCP leases with info from access list
- Create DNS records for IPSec peers
- Run other scripts on DHCP lease