DNS(域名系统) 是互联网的基础服务之一,用于将人类可读的域名(如 jester-blog.cc)转换为机器可读的 IP 地址(如 192.0.2.1),从而实现设备之间的通信。
本文将展示如何使用Bind9在Ubuntu操作系统下搭建内网DNS服务器实现转发功能,并实现对自定义顶级域名的访问。笔者用于作为DNS服务器的设备的操作系统是:Ubuntu24.10,IP地址为10.10.10.229。
首先我们安装Bind9:
sudo apt update
sudo apt install bind9 bind9utils bind9-doc -y
Bind9默认的配置文件如下:
主配置文件:/etc/bind/named.conf
区域配置:/etc/bind/named.conf.local
选项配置:/etc/bind/named.conf.options
区域数据库文件:/var/cache/bind/
随后我们来到选项配置文件进行转发功能的配置,请将默认内容覆盖为:
options {
directory "/var/cache/bind";
recursion yes;
allow-query { any; };
forwarders {
223.5.5.5; // 阿里DNS
8.8.8.8; // 谷歌DNS
};
dnssec-validation auto;
listen-on { any; };
allow-recursion { any; };
};
此时,我们的内网DNS服务器转发功能配置完毕,当连接到该内网DNS服务器对外请求时,该内网DNS服务器会将请求转发给上游DNS服务器,即配置文件中forwaders字段中的223.5.5.5和8.8.8.8。
若您还想实现在内网环境中访问自定义的顶级域名,需要创建一个名为test的内网自定义域:
sudo nano /etc/bind/db.test
# 编辑内容为
$TTL 604800
@ IN SOA dns.test. admin.test. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS dns.test.
dns IN A 10.10.10.229
web IN A 10.10.10.150
随后我们来到区域配置文件中,写入以下内容:
zone "test" {
type master;
file "/etc/bind/db.test";
};
随后,检查上述两个文件配置是否正确并重启Bind9服务即可:
sudo named-checkconf
sudo named-checkzone test /etc/bind/db.test
sudo systemctl restart bind9
至此,对内网DNS服务器配置自定义顶级域名结束,您可以在内网其他设备上手动配置DNS服务器为您自己DNS服务器的IP地址,并通过以下命令测试转发和自定义顶级域名功能是否正常:
nslookup www.baidu.com 10.10.10.229
nslookup web.test 10.10.10.229
得到的输出应为
名称: web.test
Address: 10.10.20.229
至此,Ubuntu环境下使用Bind9搭建内网转发DNS服务器结束。
参考链接:https://www.horace-liu.com/archives/256