本文介绍如何使用BIND9 DNS软件在Ubuntu 18.04或Ubuntu 16.04系统上设置本地DNS解析器。BIND(Berkeley Internet Name Domain)是一种开源DNS服务器软件,由于其稳定性和高质量,在Unix/Linux上广泛使用。可以先参考在Ubuntu 16.04中配置内网DNS服务的步骤。
使用BIND9在Ubuntu 18.04,16.04上设置本地DNS解析器的方法 运行以下命令在Ubuntu 18.04,16.04上从默认存储库安装BIND 9,BIND 9是当前所用的版本: sudo apt update sudo apt install bind9 bind9utils bind9-doc bind9-host 检查版本: named -v 输出信息如下: BIND 9.11.3-1ubuntu1.3-Ubuntu (Extended Support Version) <id:a375815> 要检查版本号和构建选项,请运行: named -V
默认情况下,BIND会在安装后自动启动,可以使用以下命令检查其状态: systemctl status bind9 如果它没有运行,那么启动它: sudo systemctl start bind9 在启动时启用自动启动,运行以下命令: sudo systemctl enable bind9 BIND服务器将作为绑定用户运行,该用户在安装期间创建,并侦听TCP和UDP端口53,运行以下命令: sudo netstat -lnptu | grep named
通常,DNS查询被发送到UDP端口53,TCP端口53用于大于512字节的响应。 BIND守护程序名为named(守护程序是一个在后台运行的软件),命名二进制文件由bind9软件包安装,还有另一个重要的二进制文件:rndc,即远程名称守护程序控制器,由bind9utils软件包安装,rndc二进制文件用于重新加载/停止和控制BIND守护程序的其他方面,通过TCP端口953完成通信。 例如,我们可以检查BIND名称服务器的状态: sudo rndc status
本地DNS解析程序的配置 包含BIND配置的目录是/etc/bind/。 1、named.conf:主配置文件,包含其他三个文件的配置。 2、db.root:DNS解析器用于查询根DNS服务器的根提示文件,有13组根DNS服务器,从a.root-servers.net到m.root-servers.net。 3、db.127:localhost IPv4反向映射区域文件。 4、db.local:localhost转发IPv4和IPv6映射区域文件。 5、db.empty:空区域文件 Ubuntu上的BIND9服务器仅为localhost和本地网络客户端提供递归服务,外部查询将被拒绝。因此你不必编辑配置文件,为了让你熟悉BIND 9配置,我将向你展示如何启用递归服务。 主要的BIND配置文件/etc/bind/named.conf从其他3个文件中获取设置。 1、/etc/bind/named.conf.options 2、/etc/bind/named.conf.local 3、/etc/bind/named.conf.default-zones 要启用递归服务,请编辑第一个文件: sudo nano /etc/bind/named.conf.options 在options中,添加以下行,请使用你自己的本地网络地址替换allow-recursion语句中的IP地址: // hide version number from clients for security reasons. version "not currently available"; // optional - BIND default behavior is recursion recursion yes; // provide recursion service to trusted clients only allow-recursion { 127.0.0.1; 192.168.0.0/24; 10.10.10.0/24; }; // enable the query log querylog yes;
保存并关闭文件,然后测试配置文件: sudo named-checkconf 如果测试成功,则重新启动BIND9: sudo systemctl restart bind9 如果你在BIND服务器上运行防火墙,则需要打开端口53以允许LAN客户端发送DNS查询: sudo ufw allow in from 192.168.0.0/24 to any port 53 这将打开TCP和UDP端口53到专用网络192.168.0.0/24,然后从同一局域网中的另一台计算机,我们可以运行以下命令来查询google.com的A记录,将192.168.0.102替换为BIND解析程序的IP地址: dig A google.com @192.168.0.102 现在在BIND解析器上,使用以下命令检查查询日志: sudo journalctl -eu bind9 这将显示bind9服务单元的最新日志消息,我可以在日志中找到以下行,表示已从端口57806 192.168.0.103收到google.com的A记录的DNS查询: named[1162]: client @0x7f4d2406f0f0 192.168.0.103#57806 (google.com): query: google.com IN A +E(0)K (192.168.0.102)
在Ubuntu 18.04服务器上设置默认DNS解析器 Systemd-resolved在Ubuntu 18.04上提供存根解析器,存根解析器是最终用户计算机上的一个小型DNS客户端,它接收来自Firefox等应用程序的DNS请求并将请求转发给递归解析程序。 使用下面命令可以看到默认的递归解析程序: systemd-resolve --status
BIND不是默认值,如果在BIND服务器上运行以下命令: dig A facebook.com 在BIND日志中找不到此DNS查询,相反,需要明确告诉dig使用BIND: dig A facebook.com @127.0.0.1 要将BIND设置为默认解析程序,请打开systemd-resolved配置文件: sudo nano /etc/systemd/resolved.conf 在[Resolve]部分中,添加以下行: DNS=127.0.0.1
保存并关闭文件,然后重新启动systemd-resolved服务: sudo systemctl restart systemd-resolved 现在运行以下命令以检查默认DNS解析程序: systemd-resolve --status
Global部分中的DNS服务器会覆盖此命令输出末尾看到的其他DNS服务器,现在执行DNS查询而不指定127.0.0.1: dig A facebook.com 你将在BIND日志中看到DNS查询,这意味着BIND现在是默认的递归解析器。
在Ubuntu 16.04服务器上设置默认DNS解析器 Ubuntu 16.04使用resolvconf程序管理/etc/resolv.conf文件中的DNS解析器,要将BIND设置为Ubuntu 16.04服务器上的默认解析程序,需要编辑/etc/resolvconf/resolv.conf.d/head文件并将nameserver 127.0.0.1添加到此文件中,这可以通过运行以下命令来完成命令: echo "nameserver 127.0.0.1" | sudo tee -a /etc/resolvconf/resolv.conf.d/head 此文件中定义的解析器始终是第一个DNS解析器,现在重启resolvconf服务: sudo systemctl restart resolvconf 现在可以检查/etc/resolv.conf的内容: cat /etc/resolv.conf
以上127.0.0.1是默认的DNS解析器。 请注意,某些托管服务提供商可能会使用网络帮助程序来自动生成/etc/resolv.conf文件,要更改默认DNS解析程序,你需要在主机控制面板中禁用该网络帮助程序。
结语 以上就是使用BIND9在Ubuntu 18.04/Ubuntu 16.04上设置本地DNS解析器的所有内容了,其中设置默认DNS解析器在Ubuntu 18.04下和在Ubuntu 16.04下方法是不一样的。
相关主题 |