我实际上试图添加Server=/example.com/11.22.33.44
到 dnsmasq 的配置中,以便将对 example.com 的查询路由到特定的名称服务器。为了实现这一点,我做了以下事情。
- 我注释掉该行
dns=dnsmasq
并/etc/NetworkManager/NetworkManager.conf
重新启动网络管理器 - 我
apt-get install dnsmasq
- 我
/etc/dnsmasq.conf
根据需要进行编辑并重新启动 dnsmasq
从我的终端,测试像 一样host foo.example.com
正常工作。但所有应用程序(例如 Firefox、midori、remmina)似乎都使用“旧”设置(也就是说,我看到 DNS 查询失败tcpdump
)。我不知道如何合并像这样的自动和手动设置。
编辑:与此同时,我甚至尝试过一些不寻常的、绝望的措施(例如,重新启动),但没有成功。而且,似乎区别并不在于与其他应用程序。甚至在单个终端会话中,我观察到
#host foo.example.com
foo.example.com has address 1.2.3.4
#ping foo.example.com
ping: unknown host foo.example.com
最终,这让我找到了解决方案。不可否认,这是一个夸张的匿名化让问题无法回答的例子:我所讨论的域名实际上是 的一个子域名.local
,mdns 从正确的 dns 中窃取了它。编辑/etc/nsswitch.conf
解决了这个问题。
答案1
编辑/etc/nsswitch.conf
主机行
hosts: files dns mdns4