resolv icon indicating copy to clipboard operation
resolv copied to clipboard

macos: support multiple system resolvers like C

Open maxfierke opened this issue 4 years ago • 1 comments

On macOS, libresolv supports multiple resolvers. This allows users, VPN clients, etc. to delegate queries for certain domains to other resolvers, in addition to the "Super Resolver" specified by /etc/resolv.conf. An example of this would be using something like dnsmasq or launchdns to resolve a Special Use Domain (described by RFC 6761) for local development like *.localhost or *.test

This is supported transparently via the gethostbyname and getaddrinfo C calls, but when replacing use of those APIs w/ Resolv, these resolutions no longer happen automatically.

If I can find a link to the respective man page on macOS about this functionality, I can post that here for review from anyone who doesn't have access to macOS.

maxfierke avatar Dec 15 '21 22:12 maxfierke

The "Search Strategy" section of resolver(5) on MacOS 14 says that each configured resolver has an associated domain name, which is specified implicitly by the filename in /etc/resolver/* or explicitly by the domain line in the file. DNS queries are routed to the best matching resolver(s), if any, in the order of search_order, or otherwise routed to the default resolver (that is, the one configuredavailable in /etc/resolv.conf).

To make resolv work like the macOS system resolver, I suppose we need to re-implement the DNS router functionality.

hanazuki avatar Nov 26 '23 08:11 hanazuki