一、DNS实验
1.1 实验规划
用centos7模板克隆2台,安装下表配置主机名,IP地址
| 主机名 | 主机IP | 作用 |
|---|---|---|
| dns-server | 10.1.8.10/24 | DNS服务器 |
| dns-client | 10.1.8.11/24 | DNS客户端 |
1.2 安装 BIND
通过安装bind软件包来安装BIND。 名称服务器本身作为named服务运行。 bind包将HTML和PDF格式
的BIND文档在安装在/usr/share/doc/bind/目录
bash
[root@dns-server ~ 09:50:12]# yum install -y bind bind-utils
1.3 实验配置
bash
[root@dns-server ~ 09:51:00]# vim /etc/named.conf
......
options {
# 修改listen-on
listen-on port 53 { 127.0.0.1; 10.1.8.10; };
......
# 修改allow-query
allow-query { any; };
};
......
1.3.1 配置 zone
示例:以下named.conf块将服务器配置为承载laogao.cloud及其相应的反向查找区域8.1.10.in
addr.arpa的主要区域文件。
bash
[root@dns-server ~ 09:51:00]# vim /etc/named.conf
.............
# 最后添加以下内容
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
zone "jiang.cloud" IN {
type master;
file "jiang.cloud.zone";
};
zone "8.1.10.in-addr.arpa" IN {
type master;
file "10.1.8.zone";
};
配置说明:
- type,指定服务器角色。
- file,指定相对路径名。 相对路径由 options 块中的 directory 指令设置。
1.3.2 创建区域文件
辅助区域文件应保存在/var/named/slaves中。辅助服务器启动时,会将其缓存的区域版本与主服务器上
的当前版本进行比较:如果区域文件版本是最新的,则使用该区域文件; 如果区域文件版本不是最新的
或文件不存在,则named执行区域传输并将结果缓存在该文件中。
BIND 应该能够读取这些区域文件,但不能写入它们。 这些文件应归root用户和named组所有,以便守
护程序在某种程度上受到损害时不能更改它们。
bash
[root@dns-server ~ 09:56:11]# touch /var/named/jiang.cloud.zone /var/named/10.1.8.zone
[root@dns-server ~ 10:09:26]# chmod 640 /var/named/*.zone
[root@dns-server ~ 10:09:39]# chown root:named /var/named/*.zone
# 如果系统开启了selinux功能,执行下面命令设置文件标签
[root@dns-server ~ 10:10:18]# chcon -t named_zone_t /var/named/*.zone
1.3.3 添加记录
正向记录,将名称映射到IP地址和其他记录。该区域文件必须具有:
- SOA记录。
- 每个公用名称服务器的NS记录
- 该区域的其他A,AAAA,CNAME,MX,SRV和TXT记录。
示例:laogao.cloud域
bash
# 参考named.localhost
[root@dns-server ~ 10:10:18]# cat /var/named/named.localhost >
/var/named/jiang.cloud.zone
[root@server ~ 10:10:18]# vim /var/named/jiang.cloud.zone
bash
$TTL 3600
@ IN SOA dns.jiang.cloud. root.jiang.cloud. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS dns.jiang.cloud.
dns IN A 10.1.8.10
server IN A 10.1.8.10
student IN CNAME client.jiang.cloud.
client IN A 10.1.8.11
www 30 IN A 10.1.8.200
@ IN MX 10 mail.jiang.cloud.
mail IN A 10.1.8.253
bash
[root@dns-server ~ 10:43:14]# cat /var/named/named.loopback > /var/named/10.1.8.zone
[root@dns-server ~ 10:44:51]# vim /var/named/10.1.8.zone
$TTL 1D
@ IN SOA dns.jiang.cloud. root.jiang.cloud. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS dns.jiang.cloud.
10 IN PTR dns.jiang.cloud.
10 IN PTR server.jiang.cloud.
11 IN PTR client.jiang.cloud.
11 IN PTR student.jiang.cloud.
200 IN PTR www.jiang.cloud.
253 IN PTR mail.jiang.cloud.
1.3.4 验证配置
在重新加载或重新启动named之前,应该验证/etc/named.conf文件和区域文件的语法。
- named-checkconf,验证 /etc/named.conf。
bash
[root@dns-server ~ 10:52:47]# named-checkconf
[root@dns-server ~ 10:52:50]# named-checkconf /media/backups/named.conf
- named-checkzone zone zone-file,通过zone-file验证zone。
bash
[root@dns-server ~ 10:53:52]# named-checkzone jiang.cloud /var/named/jiang.cloud.zone
zone jiang.cloud/IN: loaded serial 0
OK
启动服务器时,应监视系统日志中是否有错误。 单个错误也可能会导致整个区域无法加载,但是无法加
载区域不会阻止后台驻留程序启动。因此除非我们在启动过程中监视系统日志,否则很难弄清楚哪里错
了。
例如,我们可以查看与named.service单位文件有关的systemd的日志输出:
[root@dns-server ~ 10:54:08]# journalctl -f _SYSTEMD_UNIT=named.service
-- Logs begin at Fri 2026-04-17 09:05:32 CST. --
1.3.5 运行 BIND
bash
# 启用并启动服务
[root@dns-server ~ 10:55:04]# systemctl enable named --now
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
[root@dns-server ~ 10:55:15]# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2026-04-17 10:55:15 CST; 8s ago
# 设置防火墙
[root@dns-server ~ 10:55:24]# firewall-cmd --add-service=dns
FirewallD is not running
[root@dns-server ~ 10:55:42]# firewall-cmd --add-service=dns --permanent
FirewallD is not running
1.4 客户端测试
1.4.1方式1:配置dns
bash
# 配置dns
[root@dns-client ~ 09:28:01]# nmcli connection modify ens33 ipv4.dns 10.1.8.10 autoconnect yes
[root@dns-client ~ 10:56:23]# nmcli connection up ens33
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
# ping 测试
[root@dns-client ~ 10:56:31]# ping dns.jiang.cloud
PING dns.jiang.cloud (10.1.8.10) 56(84) bytes of data.
64 bytes from server.jiang.cloud (10.1.8.10): icmp_seq=1 ttl=64 time=0.311 ms
64 bytes from server.jiang.cloud (10.1.8.10): icmp_seq=2 ttl=64 time=0.895 ms
64 bytes from server.jiang.cloud (10.1.8.10): icmp_seq=3 ttl=64 time=0.840 ms
64 bytes from server.jiang.cloud (10.1.8.10): icmp_seq=4 ttl=64 time=0.462 ms
64 bytes from server.jiang.cloud (10.1.8.10): icmp_seq=5 ttl=64 time=0.551 ms
64 bytes from server.jiang.cloud (10.1.8.10): icmp_seq=6 ttl=64 time=0.724 ms
^C
--- dns.jiang.cloud ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5004ms
rtt min/avg/max/mdev = 0.311/0.630/0.895/0.209 ms
[root@dns-client ~ 10:56:46]# ping student.jiang.cloud
PING client.jiang.cloud (10.1.8.11) 56(84) bytes of data.
64 bytes from student.jiang.cloud (10.1.8.11): icmp_seq=1 ttl=64 time=0.029 ms
64 bytes from student.jiang.cloud (10.1.8.11): icmp_seq=2 ttl=64 time=0.080 ms
64 bytes from student.jiang.cloud (10.1.8.11): icmp_seq=3 ttl=64 time=0.067 ms
64 bytes from student.jiang.cloud (10.1.8.11): icmp_seq=4 ttl=64 time=0.071 ms
64 bytes from student.jiang.cloud (10.1.8.11): icmp_seq=5 ttl=64 time=0.078 ms
^C
--- client.jiang.cloud ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4001ms
rtt min/avg/max/mdev = 0.029/0.065/0.080/0.018 ms