Skip to content

Taiscale's DNS settings override DNS apps / configuration profile #15512

Description

@dominikconrads

What is the issue?

If you want to use Tailscale's MagicDNS, you have to enable Tailscale's DNS settings on macOS. This ensures that the name resolution of devices connected to Tailscale works correctly.
However, Tailscale on macOS has problems in combination with apps or configuration profiles that provide their own DNS servers for the OS (such as nextDNS). When using nextDNS, this leads to nextDNS apparently no longer being used as soon as Tailscale's DNS settings are activated.
This is impractical in that all DNS queries are then answered by Tailscale's DNS server (100.100.100.100) and no longer by the nextDNS servers (which means that any queries can be answered, even those that should actually be blocked by nextDNS).
My understanding is that DNS queries from Tailscale should only be answered for my tailnet in order to realize the name resolution for MagicDNS. But apparently, queries that Tailscale cannot assign to my tailnet are sent to the local DNS server that macOS has received from the local DHCP server - but not to the DNS service that is set via an app or a configuration profile.
The order of the DNS servers is then:
100.100.100.100 (tailscale DNS) -> 192.168.178.1 (local DHCP/DNS server) -> xxx.xxx.xxx.xxx (global DNS of the ISP) -> Internet
Therefore you have to deactivate the use Tailscale DNS settings on macOS at the moment, because otherwise you cannot use the nextDNS DNS servers, but you cannot use the MagicDNS either.
This behavior is only present on macOS. On iOS/iPadOS and on Windows, the problem does not exist if you use Tailscale's DNS settings and nextDNS at the same time. Everything works correctly as expected on these platforms.
I am aware that nextDNS can also be set as a global name server in the Tailscale admin UI, but this is then inevitably activated for all clients. However, I do not want to do this, as I only want to use nextDNS on Apple devices for certain reasons.
Therefore, I suspect a bug in the DNS implementation of Tailscale on macOS**, which bypasses DNS servers through other VPN apps or configuration profiles by always selecting the local DNS server (which is propagated by the DHCP server) of the current network interface.
The order of the DNS servers should look like this (if use Tailscale DNS settings and nextDNS is activated):
100.100.100.100 (Tailscale DNS) -> xxx.xxx.xxx.xxx (public DNS server nextDNS) -> Internet

** There is no difference in behavior between App Store and .pkg file variant. The error occurs in both versions, this has already been verified.

Steps to reproduce

  1. use macOS 15.4
  2. install Tailscale (from the App Store or website)
  3. install nextDNS (from the App Store or configuration profile)
  4. activate both apps as VPN in macOS settings
  5. contect to your Tailscale
  6. check status on https://my.nextdns.io/ if it shows 'All good! This device is using NextDNS with this profile.'
  7. enable 'use Tailscale DNS settings'
  8. check status on https://my.nextdns.io/ if it shows 'This device is not using NextDNS.
    This device is currently using ”$localdnsprovider” as DNS resolver.

Are there any recent changes that introduced the issue?

No response

OS

macOS

OS version

15.4

Tailscale version

1.82.0

Other software

Bug report

BUG-f7f0323369db8e26dd7ceed0ee04f70025386d8fb8ecded532f129c26d7a57ee-20250402192031Z-f8e099cb37d3c8d0

Metadata

Metadata

Assignees

No one assigned

    Labels

    OS-macosIssues involving Tailscale for macOSbugBugdnsvpn-interopIssues that arise when Tailscale is used alongside other VPN apps

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions