DNS服务器配置与管理

DNS服务器配置与管理

本实验记录了在 Linux 虚拟机上安装与配置 DNS 服务(BIND)的全过程,包括正向与反向解析的设置及常见错误排查。


一、实验目的

  • 了解 DNS 的基本概念和作用
  • 掌握 DNS 域名解析过程与查询模式
  • 熟悉 BIND 服务器主要配置文件与参数
  • 学会使用 named-checkconfnslookup 等命令进行测试与调试

二、实验环境

  • 一台虚拟机作为服务器端
  • 一台虚拟机作为客户端
  • 软件环境:BIND + BIND-chroot
  • 网络要求:两台主机在同一网段可互相 ping 通

三、安装与配置 BIND

1️⃣ 安装 DNS 服务

1
yum install bind bind-chroot -y

pic1

2️⃣ 修改主配置文件 /etc/named.conf

打开文件:

1
vim /etc/named.conf

按照以下步骤修改(带行号的是文件中对应位置):

  • 13 行listen-on port 53 { }; → 在 { } 中改为 any;
  • 21 行allow-query { }; → 在 { } 中改为 any;
  • 33 行recursion yes;
  • 35 行dnssec-enable yes;
  • 36 行dnssec-validation no;
  • 59 行:添加 include "/etc/named.rfc1912.zones";
  • 60 行:添加 include "/etc/named.root.key";

修改后效果示例:

1
2
3
4
5
6
7
8
listen-on port 53 { any; };
allow-query { any; };
recursion yes;
dnssec-enable yes;
dnssec-validation no;

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

pic2
pic3
pic4


四、配置区域文件

1️⃣ 编辑 /etc/named.rfc1912.zones

备份原配置:

1
cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bak

然后编辑:

1
vim /etc/named.rfc1912.zones

42 行 添加如下内容:

1
2
3
4
5
6
7
8
9
10
11
zone "mypt.edu.cn" IN {
type master;
file "mypt.edu.cn.zone";
allow-update { none; };
};

zone "42.241.192.in-addr.arpa" IN { // 这里网段地址是反向的 192.241.42
type master;
file "3.42.241.192.zone";
allow-update { none; };
};

pic5


五、正向解析文件

1
2
3
cd /var/named
cp -p named.localhost mypt.edu.cn.zone # cp -p 保留源文件权限
vim mypt.edu.cn.zone

内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$TTL 1D
@ IN SOA @ name.mypt.edu.cn. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum

IN NS name.mypt.edu.cn.
IN MX 10 mail.mypt.edu.cn.

name IN A 192.241.42.3
mail IN A 192.241.42.20
www IN A 192.241.42.10
ftp IN A 192.241.42.30
gw IN A 192.241.42.254
web IN CNAME www.mypt.edu.cn.

pic6


六、反向解析文件

1
2
cp -p named.loopback 3.42.241.192.zone
vim /var/named/3.42.241.192.zone

内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$TTL 1D
@ IN SOA @ name.mypt.edu.cn. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum

IN NS name.mypt.edu.cn.
IN MX 10 mail.mypt.edu.cn.

3 IN PTR name.mypt.edu.cn.
10 IN PTR www.mypt.edu.cn.
20 IN PTR mail.mypt.edu.cn.
30 IN PTR ftp.mypt.edu.cn.

pic7


七、关闭防火墙与 SELinux(实验用)

1
2
setenforce 0
systemctl stop firewalld

八、启动与测试

1️⃣ 检查配置文件是否正确

1
named-checkconf -z

出现以下输出表示通过:

1
2
3
4
zone localhost.localdomain/IN: loaded serial 0
zone localhost/IN: loaded serial 0
zone mypt.edu.cn/IN: loaded serial 0
zone 42.241.192.in-addr.arpa/IN: loaded serial 0

2️⃣ 启动 DNS 服务

1
2
3
systemctl restart named
systemctl enable named
systemctl status named

出现:

1
Active: active (running)

表示启动成功 ✅


九、客户端测试

  • 在客户端网络设置中将 DNS 地址改为服务器地址:
    192.241.42.3

pic8

  • 使用 nslookup 测试:
1
nslookup 192.241.42.3

输出:

1
3.42.241.192.in-addr.arpa   name = name.mypt.edu.cn.

pic9

正反向解析均成功 ✅


十、踩坑记录与排查经验

在调试过程中,我遇到了几种典型错误:

❶ named 服务启动失败

查看状态:

1
systemctl status named

pic10

发现报错:

1
/etc/named.rfc1912.zones:49: missing ';' before 'zone'

解决方法:上一个 zone 块忘记写分号结尾,加上 }; 即可。


❷ 反向区域加载失败

执行:

1
named-checkconf -z

pic11

输出:

1
zone 42.241.192.in-addr.arpa/IN: loading from master file failed: file not found

→ 原因:文件名写错了,改为 3.42.241.192.zone 即可。


❸ has no NS records

1
zone 42.241.192.in-addr.arpa/IN: has no NS records

→ 原因:反向区文件缺少 NS 记录。
→ 解决:添加

1
IN NS name.mypt.edu.cn.

❹ connection timed out

客户端使用 nslookup 时:

1
connection timed out; no servers could be reached

→ 解决:

  • 确认防火墙已关闭;

  • 确认 /etc/named.conflisten-on port 53 { any; };

  • 重启服务:

    1
    systemctl restart named

✅ 最后验证

1
2
3
named-checkconf -z
systemctl restart named
systemctl status named

pic12

出现:

1
Active: active (running)

即表示 DNS 服务器配置成功!