如何在本地网络上运行自己的 DNS 服务器

作者:四川成都联想服务器总代理 来源:成都联想服务器代理商 点击量:272

如何在本地网络上运行自己的 DNS 服务器


运行您自己的 DNS 服务器是加快网络响应速度、减少对公共基础设施的依赖并受益于主机名路由等额外功能的好方法。下面介绍如何使用 Dnsmasq 在 Linux 机器上设置 DNS 服务器。


什么是 DNS?

DNS 是将域名转换example.com为其服务器的数字 IP 地址的系统。这可能看起来像127.0.0.1。每当您使用域名发出网络请求时,您的系统都会执行 DNS 查找以确定它应该联系的服务器地址。


这会为您提出的每个请求增加开销。尽管您的设备会缓存 DNS 响应,但在实际请求开始之前访问新域会导致 DNS 往返。这发生在操作系统网络堆栈级别,您作为用户是不可见的。


ISP 通常运行 DNS 服务器。如果您在路由器和设备上使用默认设置,您可能依赖 ISP 的服务器。其他公共 DNS 服务器可从Cloudflare和Google等提供商处获得。


为什么要运行自己的 DNS?

运行您自己的 DNS 服务器可以让您更好地控制网络。一种常见的动机是能够配置网络级域映射,例如web-serverto 192.168.0.101. 将您的路由器配置为使用您的 DNS 将导致您连接的任何设备都能够192.168.0.101通过http://web-server.


拥有自己的 DNS 服务器可以让您将设置集中到一个位置,而不是/etc/hosts在每台设备上单独应用它们。它们将适用于您连接到网络的所有内容,包括无法提供其他方式来自定义其路由堆栈的嵌入式硬件。


内部 DNS 服务器还可以提高性能并提供额外的弹性层。大规模 DNS 中断并非闻所未闻;为您与之交互的关键服务使用具有长期缓存的自定义服务器可以帮助您度过所选上游提供商的停机时间。


DNS 与 Dnsmasq

Dnsmasq是一个轻量级的 DNS 服务器,包含在大多数 Linux 发行版中。它的配置也非常简单。


在开始之前,有必要考虑一下您的 DNS 服务器需要提供哪些功能。8.8.8.8在本指南中,我们将着眼于使用本地缓存、一些自定义域路由和 Google作为我们的上游 DNS 提供商来设置 Dnsmasq 。


路由流程将如下所示:


网络路由器收到来自您连接的设备之一的请求。路由器将被配置为使用 Dnsmasq 主机作为其 DNS 服务器。

dnsmasq 会检查是否有为域名定义的路由,例如web-serverto 192.168.0.101。如果请求是 for http://web-server/example-page,它将发送192.168.0.101回路由器。

当 Dnsmasq 没有匹配的路由时,它会将 DNS 请求转发到 Google 的8.8.8.8,在公共互联网上启用解析。这确保您在使用自己的 DNS 时仍然可以访问更广泛的网络。

您无需在客户端设备上进行任何配置更改。路由器后面的所有东西最终都会通过 Dnsmasq 进行 DNS 查询。但是,值得注意的是,所有流行的桌面和移动操作系统都支持设置 DNS 服务器,因此您可以配置单个设备以使用 Dnsmasq,而无需在路由器级别启用它。


入门

我们假设您已经准备好运行 Dnsmasq 的运行正常的 Linux 机器。Dnsmasq 不是特别占用资源——如果您的客户端设备很少,它可以轻松地在 Raspberry Pi 上运行。


您的主机应该分配有静态 IP 。从这里开始,IP192.168.0.1指的是 Dnsmasq 服务器


确保已安装 Dnsmasq:

Dnsmasq 的配置文件通常位于/etc/dnsmasq.conf. 这是预先填充了初始设置。为了使 Dnsmasq 在本地网络场景中有效工作,需要进行一些更改。运行sudo nano /etc/dnsmasq.conf以打开文件,然后使用 Ctrl+W 键盘快捷键查找并取消注释以下行:


#从每行的开头删除字符。以下是这些设置启用的功能:


domain-needed– 这会阻止 Dnsmasq 将没有域部分的本地名称转发到上游 DNS 服务器。在我们的安装中,这意味着example.com将有资格通过 Google 解决,但example也web-server不会。它为您的本地网络保留无点名称。

bogus-priv– 防止将 DNS 反向查找查询转发到上游 DNS 服务器。这意味着内部 IP192.168.0.101永远不会暴露给 Google。不启用此功能可能会无意中将您的内部网络架构泄露给您的上游提供商。

要设置上游 DNS 服务器,请在配置文件中添加新行:


这指示 Dnsmasq 将未解决的查询转发到8.8.8.8. 如果该服务器不可用,4.4.4.4将被使用。这些地址是 Google 的 DNS 服务的主要和次要解析器。


接下来调整缓存大小。这默认为 150 个缓存请求的相对较低的值。增加这将使 Dnsmasq 从缓存中提供更多查找服务,从而减少网络延迟。找到该cache-size行,取消注释,然后更改其值:


将主机名映射到 IP

有几种不同的方法可以将主机名映射到它们的 IP 地址。最简单的方法是将条目添加到服务器的现有/etc/hosts文件中。Dnsmasq 自动从该文件加载规则,作为其默认配置的一部分。


打开/etc/hosts并将您的路线添加到文件的底部。首先是 IP 地址,然后是要分配的名称:

192.168.0.101 网络服务器

192.168.0.105 网关.lan


这些行意味着任何请求都http://web-server将被定向到,192.168.0.101而http://gateway.lan最终将在192.168.0.5. 完成设备映射后保存并关闭文件。


测试你的服务器

重新启动 Dnsmasq 以应用所有更改:


您应该看到active (running)以绿色显示。如果不这样做,请检查状态信息底部的日志行以找出问题所在。


现在您已准备好测试您的服务器。dig您可以使用该工具进行手动 DNS 查找尝试。您可能需要先安装该dnsutils软件包。


这两个命令都应该在ANSWER SECTION. 的情况下gateway.lan,结果应该192.168.0.5根据中设置的路由规则/etc/hosts。命令的@localhost一部分指示dig查询您的本地 DNS 服务器。


配置您的网络

最后一步是配置您的网络路由器以通过您的 Dnsmasq 服务器进行 DNS 查找。执行此操作的步骤将根据您使用的路由设备而有所不同。


找到正确的设置页面后,将服务器的 IP(192.168.0.1在本指南中)设置为路由器的主 DNS 服务器。将公共 DNS 提供商(例如 Google 的8.8.8.8)配置为辅助服务器是个好主意。这样可以确保在您的 DNS 服务器崩溃并离线时您仍然可以访问 Internet。


现在连接到路由器的所有设备都将通过您的 Dnsmasq 实例进行 DNS 查询。他们将能够通过分配的名称(例如web-server和)访问您的设备gateway.lan,并受益于网络级 DNS 缓存。


结论

DNS 是一个复杂的话题,但 Dnsmasq 使基本服务器的运行变得容易。一旦核心功能正常工作,您可以探索更多设置。这些使您可以过滤查询、管理中继和代理、在事件发生时运行脚本以及设置其他类型的 DNS 记录,例如邮件服务器的 MX 结果。


成都联想服务器总代理 - 成都强川科技有限公司专注企业IT服务需求,产品可按需定制。主营:联想ThinkSystem服务器、联想电脑(笔记本/台式机)、联想ThinkStation工作站、联想存储设备,以专业的IT解决方案和优质的服务体验赢得企业信赖。QQ:2851150694;服务热线:028-85024766  18215624006(微信同号)

热门文章