配置 DNS 服务器并让其他服务器使用它来解析域名
步骤 1:安装 Bind9
首先,我们要在服务器上安装 Bind9 软件,超级简单!打开终端,输入:
apt update
apt install bind9 bind9utils bind9-doc
安装好后,我们来确认一下 Bind9 是否正常运行:
systemctl status bind9
如果看到状态是 active (running)
,那就说明安装成功!
步骤 2:配置主域名 mxdx.com
接下来,我们要为 mxdx.com
设置 DNS 区域文件。让我们一步步来:
- 编辑 Bind9 的配置文件:
vim /etc/bind/named.conf.local
- 在文件里添加
mxdx.com
的区域配置:
zone "mxdx.com" {
type master;
file "/etc/bind/db.mxdx.com";
};
保存文件(按 Ctrl+O
,回车,然后 Ctrl+X
退出)
步骤 3:创建区域文件
现在,我们要为 mxdx.com
创建一个专属的区域文件:
- 复制模板文件来创建区域文件:
cp /etc/bind/db.local /etc/bind/db.mxdx.com
- 编辑这个新文件:
vim /etc/bind/db.mxdx.com
- 在文件里添加域名记录(以下是参考示例,记得根据你的实际需求调整!):
$TTL 604800
@ IN SOA dns.mxdx.com. admin.mxdx.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS dns.mxdx.com.
@ IN A 192.168.1.101
web IN A 192.168.1.101
dns IN A 192.168.1.101
files IN A 192.168.1.102
ftp IN A 192.168.1.102
mail IN A 192.168.1.102
@ IN MX 10 mail.mxdx.com.
mysql IN A 192.168.1.103
pgsql IN A 192.168.1.103
redis IN A 192.168.1.103
这些记录都干啥了?
$TTL 604800
:设置 DNS 缓存时间为 7 天。SOA
:定义域名管理信息,比如主 DNS 服务器和管理员邮箱。NS
:指定 DNS 服务器是dns-web.mxdx.com
。A
:把mxdx.com
解析到192.168.1.101
。web A
:让web.mxdx.com
也指向192.168.1.101
。dns A
:让dns.mxdx.com
指向192.168.1.101
。files A
和ftp A
:把files.mxdx.com
和ftp.mxdx.com
解析到192.168.1.102
。mail A
:邮件服务器mail.mxdx.com
解析到192.168.1.102
。MX
:指定邮件服务器是mail.mxdx.com
,优先级是 10。mysql A
、pgsql A
、redis A
:把这些子域名都解析到192.168.1.103
。
步骤4:配置上游DNS解析
功能说明:
Bind9 优先查询本地 DNS 记录(如 mxdx.com
区域文件)。若本地无法解析,则将查询转发至上游公共 DNS(如腾讯云 DNS 或 Google DNS),确保本地记录优先,未找到时再查询公共 DNS。
步骤: 编辑 Bind9 的上游配置文件:
sudo vim /etc/bind/named.conf.options
替换为以下内容:
options {
directory "/var/cache/bind";
allow-query { localhost; 192.168.1.0/24; };
recursion yes;
forwarders {
119.29.29.29; // 腾讯云公共 DNS
119.28.28.28; // 腾讯云公共 DNS
8.8.8.8; // Google公共 DNS
8.8.4.4; // Google公共 DNS
};
forward first;
dnssec-validation auto;
listen-on-v6 { none; };
};
配置说明:
allow-query { localhost; 192.168.1.0/24; }
:允许本地主机和192.168.1.0/24
网段的客户端查询 DNS,匹配您的网络环境(根据实际调整)。recursion yes
:启用递归查询,允许 Bind9 代表客户端查询上游 DNS。forwarders
:指定腾讯云(119.29.29.29
,119.28.28.28
)和 Google(8.8.8.8
,8.8.4.4
)的公共 DNS 作为上游服务器。forward first
:优先解析本地记录,若无法解析则转发至上游 DNS。dnssec-validation auto
:启用 DNSSEC 验证,确保查询结果的安全性。listen-on-v6 { none; }
:禁用 IPv6 监听(因区域文件未配置 IPv6 记录,需与网络环境一致)。
注意点(记得修改!!!)
- 配置修正:
- 网段更正:将
allow-query
中的192.168.0.0/24
改为自己服务器所在的网段,比如我服务器所在的网段就是192.168.0.0/24
,避免客户端无法查询的问题。
- 网段更正:将
步骤 5:检查配置
配置好了,咱们得确认一下有没有写错:
- 检查主配置文件:
named-checkconf
如果没有错误提示,说明配置没问题!
- 检查区域文件:
named-checkzone mxdx.com /etc/bind/db.mxdx.com
看到 OK
就说明区域文件也完美啦!
步骤 6:重启 Bind9 服务
改好配置后,记得重启 Bind9 让新设置生效:
systemctl restart bind9
再检查一下服务状态:
systemctl status bind9
看到 active (running)
,就说明一切顺利!
步骤 7:让其他服务器用我们的 DNS
现在,我们要在其他服务器上设置 DNS,让它们使用我们刚配置好的 DNS 服务器:
vim /etc/resolv.conf
添加这一行:
nameserver 192.168.1.101
步骤 8:测试 DNS 解析
最后,我们来测试一下 DNS 解析是不是真的好用!在其它配置好的服务器上运行以下命令:
nslookup dns.mxdx.com
nslookup web.mxdx.com
nslookup files.mxdx.com
nslookup ftp.mxdx.com
nslookup mail.mxdx.com
nslookup mysql.mxdx.com
nslookup pgsql.mxdx.com
nslookup redis.mxdx.com
# 也可以测试一下外网域名的解析
nslookup baidu.com
以 dns.mxdx.com
为例,预期输出是这样的:
Server: 192.168.1.101
Address: 192.168.1.101#53
Name: dns.mxdx.com
Address: 192.168.1.101
如果每个域名都能正确解析,恭喜你!DNS 服务器已经完美运行啦!
效果图:
永久修改DNS
/etc/resolv.conf文件只是临时修改所用的DNS服务器,持久化修改请编辑 /etc/dhcp/dhclient.conf 文件
vim /etc/dhcp/dhclient.conf
在末尾添加一行
supersede domain-name-servers 223.5.5.5, 223.6.6.6;
然后重启系统,使用 nslookup 验证是否生效