====== Use Hostnames in Mikrotik Routers ======
Mikrotik routers, like most others, **do not directly support the use of hostnames** instead of IP addresses.
However, we can **use a simple script to resolve a hostname** to an ''address-list'', even if the hostname points to multiple IP addresses.
If the '':resolve'' command does not complete normally, the script aborts and you will be left with a bad ''address-list''.
As written, this script will not resolve multiple hostnames.
===== Example Scripts =====
==== resolve_delivery.antispamcloud.com ====
:!: This script is intended to resolve multiple hostnames in the ''source='' line.
/system script
add comment="Resolve DNS Hostname to Address List" name=resolve_delivery.antispamcloud.com owner=admin \
policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \
source=":local hosts {\"delivery.antispamcloud.com\"}\r\
\n:foreach k,v in=\$hosts do={\r\
\n :log info \"Doing \$v\"\r\
\n :local listname \$v\r\
\n :resolve \$v\r\
\n :local iscname [/ip dns cache all find where name=\$v and type=\"CNAME\"]\r\
\n :if (\$iscname != \"\") do={\r\
\n :local newname [/ip dns cache all get \$iscname data]\r\
\n :log info \"\$v is CNAME to \$newname\"\r\
\n :set v \$newname\r\
\n }\r\
\n :resolve \$v\r\
\n /ip firewall address-list remove [/ip firewall address-list find where list=\$listname]\r\
\n :foreach i in=[/ip dns cache all find where name=\$v and type=\"A\"] do={\r\
\n :local ipaddr [/ip dns cache all get \$i data]\r\
\n /ip firewall address-list add list=\$listname address=\$ipaddr comment=\$v\r\
\n :log info \"IP address: \$ipaddr\"\r\
\n }\r\
\n /ipv6 firewall address-list remove [/ipv6 firewall address-list find where list=\$listname]\r\
\n :foreach i in=[/ip dns cache all find where name=\$v and type=\"AAAA\"] do={\r\
\n :local ipaddr [/ip dns cache all get \$i data]\r\
\n /ipv6 firewall address-list add list=\$listname address=\$ipaddr comment=\$v\r\
\n :log info \"IPv6 address: \$ipaddr\"\r\
\n }\r\
\n}\r\
\n:log info \"end\""