我正在尝试设置几个 DNS 服务器来仅解析指定的域。我的第一次尝试是运行 DNSmasq 并创建域/IP 的手动列表,如下所示:
no-resolv
address=/whatsapp.com/192.155.212.202
但是像 google、twitter、whatsapp、facebook 等大型服务使用多个 IP 范围并以不同的方式分配它们(子域、协议、地理位置、客户端的设备类型等),这会造成一些麻烦。
我认为最简单的方法是这么说:
将这些域的 DNS 查询转发到 resolv.conf 并阻止其他任何内容
有办法做到吗?
答案1
您正在寻找server=
指令而不是指令address=
。不幸的是,您必须指定实际的 DNS 服务器,它不会从中获取它们resolv.conf
(因为您使用 no-resolv 来防止这种情况)。
server=/whatsapp.com/8.8.8.8
server=/whatsapp.com/8.8.4.4
server=/example.com/8.8.8.8
server=/example.com/8.8.4.4
⋮
您可能想用脚本生成它。当然,您可以使用普通的 DNS 服务器而不是 Google 公共 DNS。
或者,您可以使用绑定(但请注意,如果您的目标不是过滤,还有其他配置)。