Client device does not resolve local domain

I would like to type in “http://viacore.local” instead of “http://10.0.0.1” into my web browser to access my Mikotik router. I have configured my DNS settings; I am able to resolve from the router but unable to resolve from a DHCP client device. How do I configure my router properly to resolve this?

Here are some things I have tried already:

  • Searched this forum for “DNS static”
  • Confirmed that the bridge interface is working correctly (I am able to browse on the internet via a physical Ethernet connection to the router [i.e. no Wifi])
  • Deleted DNS caches on the router and on the DHCP client device
  • Manually added the DNS entry into my DHCP server settings

Output from Mikrotik

 > /ping viacore.local 
  SEQ HOST                                     SIZE TTL TIME       STATUS                                                                                                         
    0 10.0.0.1                                   56  64 475us     
    1 10.0.0.1                                   56  64 383us     
    2 10.0.0.1                                   56  64 387us     
    3 10.0.0.1                                   56  64 380us     
    sent=4 received=4 packet-loss=0% min-rtt=380us avg-rtt=406us max-rtt=475us 
 
> /ip dns static print 
Columns: NAME, TYPE, ADDRESS, TTL
# NAME                TYPE  ADDRESS   TTL
0 viacore.local       A     10.0.0.1  1d 
1 vialinkstorm.local  A     10.0.0.2  1d 
2 vialinkcloud.local  A     10.0.0.3  1d 
3 jupiterdisk.local   A     10.0.1.0  1d 
4 mercurymac.local    A     10.0.1.1  1d 
5 marstv.local        A     10.0.1.2  1d 
6 atlasbook.local     A     10.0.2.0  1d 
> /ip dns print 
                      servers: 10.0.0.1     
              dynamic-servers: 139.175.1.243
                               8.8.8.8      
               use-doh-server:              
              verify-doh-cert: no           
   doh-max-server-connections: 5            
   doh-max-concurrent-queries: 50           
                  doh-timeout: 5s           
        allow-remote-requests: yes          
          max-udp-packet-size: 4096         
         query-server-timeout: 2s           
          query-total-timeout: 10s          
       max-concurrent-queries: 100          
  max-concurrent-tcp-sessions: 20           
                   cache-size: 2048KiB      
                cache-max-ttl: 1w           
      address-list-extra-time: 0s           
                          vrf: main         
           mdns-repeat-ifaces:              
                   cache-used: 79KiB

/ip/dhcp-server> /ip dhcp-server network print detail 
Flags: D - dynamic 
 0   ;;; defconf
     address=10.0.0.0/16 gateway=10.0.0.1 netmask=16 dns-server=10.0.0.1 wins-server="" ntp-server="" caps-manager="" dhcp-option="" 

 1   address=192.168.64.0/20 gateway=192.168.66.254 dns-server="" wins-server="" ntp-server="" caps-manager="" dhcp-option=""

DHCP client configuration
Screen Shot 2025-02-16 at 2.27.49 PM.png

Your router is properly configured, I bet on research error.
Use nslookup on dhcp client to check dns reply …

nslookup
>server 10.0.0.1
viacore.local

nslookup can find it:

 > nslookup 10.0.0.1
Server:		10.0.0.1
Address:	10.0.0.1#53

Non-authoritative answer:
1.0.0.10.in-addr.arpa	name = viacore.local.

Authoritative answers can be found from:
viacore.local	internet address = 10.0.0.1

ChatGPT seems to think that

mDNS

might be an issue here because .local is often handled by it in macOS. I’m not sure where to go from here…

Which router os version are you using? There have been many changes in DNS lately. On my 7.16.2 it works fine.

What’s new in 7.17.2 (2025-Feb-06 11:10):
*) dns - do not show warning messages for DNS static entries when they are not needed;
What’s new in 7.17.1 (2025-Jan-30 12:29):
*) resolver - fixed static FQDN resolving (introduced in v7.17);
What’s new in 7.17 (2025-Jan-16 10:19):
*) dns - DoH whitelist support for adlist using static FWD entries;
*) dns - refactored DNS service internal processes;
*) dns - whitelist support for adlist using static FWD entries;
What’s new in 7.16.2 (2024-Nov-26 14:09):
*) dns - fixed lookup order for static DNS entries (introduced in v7.16.1);
What’s new in 7.16.1 (2024-Oct-10 17:03):
*) dns - do not look up local cache when executing “:resolve” command with specified “server” parameter (introduced in v7.16);
What’s new in 7.16 (2024-Sep-20 16:00):
*) dns - added support for DoH with adlist;
*) dns - added support for DoH with static FWD entries;
*) dns - added support for mDNS proxy;
*) dns - improved imported adlist parsing;
*) dns - refactored adlist service internal processes and improved logging;
*) dns - refactored DNS service internal processes;
*) dns - show static entry type “A” field in console;

I’m not sure if this is correct but…

It seems like, for macOS, any domain name that ends in .local is looked up via a mDNS query and not a standard DNS query. It seems that RouterOS cannot handle mDNS queries and so macOS ends up not getting a reply for .local. Would the encouragement, then, be to use a different suffix? Is there a way to configure RouterOS to handle mDNs queries?

I’m using MikroTik RouterOS 7.17.2

Are you using macOS on your client device?
I am using macOS Monterey 12.7.6 (21H1320)

I think you need to allow/accept explicitly in input chain UDP traffic for 224.0.0.251 and port 5353 for mDNS, see:
http://forum.mikrotik.com/t/ros-7-16-rc4-mdns/177078/1

I added the firewall rule and verified that the mDNS query was received using the Torch tool. The problem still persists though: macOS generates an mDNS query (I’m guessing because the domain ends in .local) but RoS is unable to provide the appropriate domain name resolution.

Is there a way to get RoS to be an mDNS responder?

I’m going with “Don’t use .local as a private domain because mDNS uses it.” From my own research it seems clear that mDNS and unicast DNS are two different systems and that it’s not really that reasonable to hope that they can cooperate with one another (i.e. macOS does not fall-back on unicast DNS when an mDNS query fails). I could install another entity on my network as an mDNS responder but I’m not interested in doing that.