首先,让我们来了解一下什么是DNS服务器。
究竟什么是DNS服务器?
DNS代表“域名系统”。DNS服务器将人性化的域名转换为计算机可以使用的IP地址。
这样您就可以通过输入“deviceplus.com”来访问这个网站了,而不是IP地址13.52.144.235—谁能记得住呢?
更好的一点是,如果我们将此网站移至具有新IP地址的新服务器,我们只需要更新我们的DNS记录即可,其他人不会受到影响。
拥有您自己的DNS服务器的好处
只要网站加载了出来,您就已经在使用DNS服务器了。
您的互联网供应商几乎都是允许您使用他们的DNS服务器的,如果您对此不满意,可以随时使用公共DNS服务器。
这也许就是您想要自己的DNS服务器的原因。
提升您的网页浏览速度
从您的本地网络获取某些内容总是比从互联网上获取要快。前者有时可以将页面加载时间缩短几百毫秒。这不会给生活带来什么改变,但是效果是显著的。
而这种加快只有在您的本地DNS服务器已经有相关记录的情况下才有效。否则,仍然必须从互联网上获取内容。
在本地网络上保持整个DNS一直更新是不切实际的。相反,服务器会将这些记录进行缓存,直到它们的“生存时间”值(TTL)到期。
大多数操作系统和网络浏览器也会在您的计算机上缓存这些相同的记录,因此如果它只是一台使用了互联网连接的计算机,那么拥有自己的DNS服务器并不会带来任何区别。
当多个拥有多台设备的人在本地网络上,并共享互联网连接时,自己拥有DNS服务器会更有意义。这种情况下,将所有内容缓存在一个地方将可以减少需要离开网络的请求数量。
将域加入黑名单
如果您想完全阻止某些域,使用DNS服务器将会非常好用且高效。一些政府以这种方式审查整个国家的网络。
作为家长,您可能希望以同样的方式阻止您的孩子访问特定网站。请注意,这仅在他们通过该网络访问互联网时有效,并且许多孩子已经有足够的专业知识通过配置一个不同的DNS服务器来规避这一点了。
您可能还想阻止某些您觉得具有侵扰性或者令人生厌的域。
甚至还有一个用于Raspberry Pi的DNS服务器程序,叫Pi-Hole,可以立即阻止广告。
添加自定义域
您还可以为本地网络上的设备提供各自的域名,仅对其他本地机器可见。
您可以为打印机、媒体中心,甚至冰箱和咖啡机(如果它们连接到了您的网络中)命名。
这将使您不必追踪办公室或家中所有设备的IP地址。
了解更多有关互联网的信息
也许您只是想更好地了解一下DNS,但是学习DNS的话也是必要了解一下互联网的。
确保您的Raspberry Pi具有保留IP
如果您的Raspberry Pi DNS服务器有一个动态分配的IP,那将会很头疼。每隔一段时间,它就会被分配一个不同的IP地址,网络上的其他设备也将不再连接到它。
这就是为什么您要为这个Raspberry Pi保留一个IP。您可以通过登录路由器的仪表板来执行该操作。
这一部分的确切步骤会因您的设备不同而略有不同。如果您遇到困难,请使用搜索引擎查找您设备的手册。
设置您的操作系统并安装Dnsmasq
现在您的设备已经有了固定IP,让我们开始安装将要使用的软件:Dnsmasq。
最好从重新安装一个Raspberry Pi OS开始。您也许希望更改默认密码,并在raspi-config中设置ssh访问。
首先,通过输入以下内容更新您的操作系统:
sudo apt update && sudo apt upgrade -y
然后安装Dnsmasq.
sudo apt install dnsmasq -y
就是这样!现在您就拥有一个DNS服务器了!
配置Dnsmasq
您可以开始向Raspberry发送DNS请求了,但是需要对默认设置进行调整才能发挥最大作用。输入以下命令打开配置文件:
sudo nano /etc/dnsmasq.conf
这个文件对有用的命令有详细的注释,所以您可以尽情查阅对其进行了解。有几个部分需要特别注意。
不要将本地流量转发到上游服务器
在配置文件的顶部附近,您会发现写有“#domain-needed”和“#bogus-p”的行。
设置#domain-needed选项将会阻止DNS服务器向上游寻找不在域中的主机,而bogus-priv选项将会阻止它向上游查找私有IP地址。
在公司网络上,也许您会想在上游服务器中查找这些东西。但是在公共互联网上寻找它们没有任何意义,所以我们使用这些选项。
您可以通过删除行开头的注释符号来应用它们。
配置上流DNS服务器
向下滚动,并查找显示“#no-resolv”的行。删除注释字符以应用该选项。往下几行后,有一行显示“#server=/localnet/192.168.0.1”,删除这一行。我们将要输入自己的设置。
我通常使用Google的DNS服务器。它们的快速可靠会带来帮助,但是老实说,这主要是因为IP地址非常容易记住。
对此的配置如下:
server=8.8.8.8
server=8.8.4.4
如果您不想使用Google服务,那么可以使用您的互联网供应商或其他公共DNS服务器。例如CloudFlare。
添加自定义域和阻止域
往下不远的地方有一行显示“#address=/double-click.net/127.0.0.1”。
这对于将域分配给本地网络上的设备很有用。公共互联网上未使用的任何内容都可以,我通常为其使用顶级域.lan。
复制这一行的语法。在本项目中,是将我的媒体和复古游戏装备放置在了retropie.lan上,如下所示:
address=/retropie.lan/192.168.0.6
不要忘记为路由器中对应的设备保留这些IP地址。
您还可以在此处阻止特定域,方法是将它们定向到私人IP。
address=/www.nickelback.com/127.0.0.1
如果您对阻止广告服务器更感兴趣,那么可以很容易在网上找到列表。
您可以随意将域定向到公共IP。这对于网站在上线前测试网站迁移很有用。
请注意,这些域仅用于使用此DNS服务器的设备。如果您想要一个域名出现在公共DNS上,您必须购买它。
设置缓存大小
默认情况下,Dnsmasq将缓存最多150条记录。即使是非常轻量的网络浏览器也可以将其占满。
该缓存保存在内存中,如果空间太大会影响性能。
但是我们在这里服务的是一个小型网络,现在的内存比几十年前编写Dnsmasq时更加充足,而且这些记录每个只使用100个字节。我们可以在其中放入几兆字节的内容。
向下滚动到显示“#cache-size=150”的地方,您需要向下滚动得多一些。删除前面的注释字符并将该数字设置的更大。
我只是添加了几个零,以使其成为15000,这比小型网络的DNS服务器缓存的记录要多得多。
完成配置编辑后
当您对设置感到满意时,保存并退出,然后输入以下内容重新启动服务:
sudo systemctl restart dnsmasq
配置您的设备以使用该DNS服务器
现在您的DNS服务器已经启动并运行,我们来开始使用它。
将其配置为整个网络的默认DNS服务器的最简单方法是在路由器中进行配置。
计算机和其他设备通常也可以在设置或控制面板中单独进行配置。
设置自动安全更新
不要对这里的安全两个字大意。DNS服务器可能会是线上犯罪分子的重要目标,他们可以将您重定向到恶意站点。
我们已将其设置为只能从您的本地网络内访问,这降低了很多风险。但是自动应用安全更新仍然是一个好主意。
有一个便利的软件包可以为我们执行该操作,叫无人职守自动更新软件。我们来安装它。
sudo apt install unattended-upgrades -y
该安装包在Raspberry Pi OS Buster中的默认配置是每天进行安全更新。
如果您还没有更改默认密码,也不要忘记更改!为SSH访问设置基于证书的身份验证也是一个很好的主意。