Answers:
Linux不支持通过来使用特定于域的DNS服务器resolv.conf
。您可以通过在本地运行缓存名称服务器(例如BIND
或dnsmasq
),然后为每个域配置显式转发器来解决此问题。
在OS X下,使用scutil
命令进行这种设置相对容易。此配置的常见用例是将针对VPN连接的DNS请求转发到特定于VPN的DNS服务器,因此您会发现与OpenVPN经常进行讨论。 这份文件对会谈scutil
一样命令这和谷歌搜索openvpn
,并scutil
取得更多成果。
我不确定Windows。如果需要,您可以将本地DNS服务器解决方案用于所有三个平台。
systemd-resolved
世界上仍然如此吗?(是的,我知道您的回答是7岁)
使用* nix(和Windows AFAIK)提供的标准DNS解析无法做到这一点,您需要使用自己的DNS服务器。在* nix上,dnsmasq是最佳选择,您既可以在每个工作站上运行它,也可以在服务器上运行它,并配置所有工作站以使用它。
/etc/resolv.conf
:
nameserver 127.0.0.1
nameserver 208.67.222.222
nameserver 208.67.220.220
/etc/dnsmasq.conf
:
server=/freenode.net/8.8.8.8
server=/freenode.net/8.8.4.4
@vpn0
在DNS服务器的末尾添加了。仅在VPN启动时使用它才有用。
在OS X下,您可以将/etc/resolver/example.com这样的文件与内容一起使用:
nameserver 172.16.5.5
将对* .example.com的dns请求转发到172.16.5.5
http://hints.macworld.com/article.php?story=2004062902195410
我在Fedora上通过安装本地DNS服务器来做到这一点。
首先安装bind:
sudo dnf install bind
步骤1:(/etc/named.conf
以root身分)附加一行:
include "/etc/named/freenode.net.conf";
步骤2:创建区域文件/etc/named/freenode.net.conf
(作为根):
zone "freenode.net" {
type forward;
forwarders { 8.8.8.8; };
};
现在重新启动名为:
sudo service named restart
现在,将您的局域网设置重新配置为使用127.0.0.1作为DNS服务器,而不是DCHP分配的主机。
您可以使用PowerShell在Windows上执行此操作:
Add-DnsClientNrptRule -Namespace "pqr.com" -NameServers "10.0.0.1"
参考:https : //docs.microsoft.com/zh-cn/powershell/module/dnsclient/add-dnsclientnrptrule?view=win10-ps