我想使用 dnsmasq 覆盖某些域的 DNS 配置,以便将查询转发到其他地方进行解析。我可以使用以下配置代码片段来实现此目的:
server=/msecnd.net/10.0.0.10
server=/samsungotn.net/10.0.0.10
server=/samsungcloudsolution.net/10.0.0.10
问题是 - 我只想/需要为我的 LAN(我的智能电视)中的特定客户端进行此覆盖,并且我想让常规 DNS 为所有其他客户端解决相同的查询。
我想问一下 dnsmasq 是否支持这样的配置,因为我通过阅读它的手册找不到方法(也许我遗漏了一些东西或者搜索了错误的术语)。
解决这个问题的另一种方法是这样做:
- 创建一个与源匹配的 iptables INPUT 规则,我需要将目标 UDP 端口重写/修改为 53053 例如
- 运行一个不同的 dnsmasq 实例,监听端口 53053,并进行所需的配置
- 利润。
但是,虽然它应该可以工作,但它看起来很复杂,需要我设置额外的启动脚本。
我希望有一种更干净/更简单的方法来做到这一点。
谢谢!
答案1
我已经在我的设置中完成了此操作,但仅使用 NAT/端口重定向 iptables 规则。从某些方面来看,这实际上是一种更优雅的方法,因为 iptables 支持匹配进行 DNS 查询的客户端的源 MAC 地址,即使客户端的 IP 地址发生变化,它仍会捕获该客户端。
您建议的方法就是我会采用的方法。这确实意味着要运行两个或更多 dnsmasq 实例,但我认为没有其他选择,因为 dnsmasq 不支持这种功能。
答案2
如果您已经在使用两个 dnsmasq 实例,并且您可以让它们监听不同的 IP,那么您可以使用 DHCP 为不同的客户端分配不同的 DNS,这样您就不必处理 iptables。