为本地网络设置 dnsmasq

K. *_*ert 21 domain-name-system dnsmasq

我和一小群开发人员刚搬到一个新办公室,我想在我们的开发服务器上设置 dnsmasq,所以当我们在那里部署 Web 应用程序时,我们不必编辑我们自己的主机文件。我们在 192.168.3.1 有一个我们无法访问的路由器。我想我会在开发盒上安装一个 DNS 服务器,我们都将它的 IP 记录为辅助 DNS 服务器。不幸的是,我正在努力完成这项工作。

开发服务器名称为devbox,IP为192.168.3.99,运行的是最新的Ubuntu Server(Karmic)

我的电脑正在运行 Ubuntu Desktop (Karmic)

我想要达到的目标

假设我在开发箱上运行了三个网站,网站 1、网站 2、网站 3。我想通过 URL 访问它们:

http://website1.devbox
http://website2.devbox
http://website3.devbox
Run Code Online (Sandbox Code Playgroud)

所以我已经在开发盒上配置了Apache,安装了dnsmasq,并将以下几行放入其hosts文件中:

192.168.3.99 website1.devbox
192.168.3.99 website2.devbox
192.168.3.99 website3.devbox
Run Code Online (Sandbox Code Playgroud)

并编辑了我自己的 resolv.conf 文件以将开发框包含为名称服务器:

nameserver 192.168.3.99 
Run Code Online (Sandbox Code Playgroud)

它工作正常,我可以访问这些网站。问题是它不能很好地扩展。我希望所有以 .devbox 结尾的域名都转发到开发箱,这就是我正在努力解决的问题。

我试过把

192.168.3.99 devbox
Run Code Online (Sandbox Code Playgroud)

进入主机文件,并编辑 dnsmasq.conf 中的行:

# Add local-only domains here, queries in these domains are answered
# from /etc/hosts or DHCP only.
local=/devbox/
Run Code Online (Sandbox Code Playgroud)

但我无法让它工作。如果我尝试任何未明确存在于开发箱的主机文件中的 URL,DNS 查找将失败。

本地指令是否用于其他用途?我看错地方了吗?

qua*_*ote 16

请参阅DNSmasq 文档,尤其是dnsmasq联机帮助页示例配置文件。在当地的关键字告诉的dnsmasq与本地数据执行这些域查找。例如,这会影响发送到 DNSmasq 的foo.localnetbar.localnet请求。我不认为这是你想要的。

# Add local-only domains here, queries in these domains are answered
# from /etc/hosts or DHCP only.
local=/localnet/
Run Code Online (Sandbox Code Playgroud)

要强制主机/子域查找解析为特定地址,您可能需要使用address关键字。下面的第二个例子应该允许web1.devboxweb2.devboxweb73872.devbox都解析到指定的地址。

# Add domains which you want to force to an IP address here.
# The example below send any host in doubleclick.net to a local
# webserver.
address=/doubleclick.net/127.0.0.1

# for your example
address=/devbox/192.168.3.99
Run Code Online (Sandbox Code Playgroud)

我在家里使用 DNSmasq 为我的 LAN 处理简单的 DNS 问题;在这种情况下,local和相关的domainexpand-hosts关键字是合适的。DNSmasq 服务器是我的主要名称服务器,因此所有请求都通过它;任何非本地地址都将传递回 ISP 的名称服务器。如果可能,您可以考虑该配置。


tek*_*aul 5

您还可以在中设置短主机名/etc/hosts

192.168.3.99 website1
192.168.3.99 website2
192.168.3.99 website3
192.168.3.100 website4
Run Code Online (Sandbox Code Playgroud)

并告诉 dnsmasq 将所有名称扩展/etc/hosts.devbox域中。

local=/localnet/
expand-hosts
domain=devbox
Run Code Online (Sandbox Code Playgroud)

website3.devbox应该解决。

这使您能够仅通过定义 DNS 名称/etc/hosts,我发现这比 dnsmasqaddress=条目更方便。

这种方法的缺点是,像这样管理的所有名称都必须位于同一域中。


归档时间:

查看次数:

51537 次

最近记录:

4 年,5 月 前