是否可以使用 dnsmasq 覆盖单个域名?

Mat*_*hew 6 domain-name-system routing spoofing dnsmasq

我有一个服务器应用程序,我正在运行生产和开发的两个实例,即:

prod.example.com (10.0.0.1)
dev.example.com (10.0.0.2)
Run Code Online (Sandbox Code Playgroud)

第三方编写了一个客户端应用程序,该应用程序已被硬编码为指向prod.example.com. 但是,我希望将这些请求发送到dev.example.com服务器,而我无权访问第三方源代码。

我有访问(临时)连接到LAN的客户端和服务器上,所以我可以使用运行dnsmasq至决心prod.example.com10.0.0.2,此时我的工作已经完成,客户端应用程序将是(不知不觉中)谈论到开发服务器(或所以我认为)。

我已经将以下配置添加到dnsmasq.conf..

address=/prod.example.com/10.0.0.2
Run Code Online (Sandbox Code Playgroud)

..它确实有效,但它具有阻止所有其他域解析的副作用。

我怎样才能拥有我的蛋糕并吃掉它?

小智 7

将此行添加到/etc/dnsmasq.conf

addn-hosts=/etc/dnsmasq.hosts
Run Code Online (Sandbox Code Playgroud)

然后将您的域名插入到/etc/dnsmasq.hosts

10.0.0.1  prod.example.com.
10.0.0.2  dev.example.com.
Run Code Online (Sandbox Code Playgroud)

不要忘记域名末尾的句点。它将其标记为 TLD,而不是本地主机名。

与往常一样,在配置更改后,重新启动dnsmasq

sudo service dnsmasq restart
Run Code Online (Sandbox Code Playgroud)