macos: support multiple system resolvers like C#18
Open
maxfierke wants to merge 1 commit intoruby:masterfrom
Open
macos: support multiple system resolvers like C#18maxfierke wants to merge 1 commit intoruby:masterfrom
maxfierke wants to merge 1 commit intoruby:masterfrom
Conversation
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.
Contributor
|
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 To make |
hanazuki
reviewed
Nov 26, 2023
| if /darwin/ =~ RUBY_PLATFORM && Dir.exist?('/etc/resolver') | ||
| Dir.each_child('/etc/resolver') do |filename| | ||
| resolver = DNS::Config.parse_resolv_conf("/etc/resolver/#{filename}") | ||
| resolver[:search] = [filename] unless resolver[:search] |
Contributor
There was a problem hiding this comment.
IIUC, the config filename implicitly specifies domain option, which is the key for DNS routing and is a different thing than search option or the search suffix.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
On macOS,
libresolvsupports 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 likednsmasqorlaunchdnsto resolve a Special Use Domain (described by RFC 6761) for local development like*.localhostor*.testThis is supported transparently via the
gethostbynameandgetaddrinfoC 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.