Open maxfierke opened 2 years ago
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.
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 likednsmasq
orlaunchdns
to resolve a Special Use Domain (described by RFC 6761) for local development like*.localhost
or*.test
This is supported transparently via the
gethostbyname
andgetaddrinfo
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.