一、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/目录
[root@dns-server ~ 09:50:12]# yum install -y bind bind-utils1.3 实验配置
[root@dns-server ~ 09:51:00]# vim /etc/named.conf......options{# 修改listen-onlisten-on port53{127.0.0.1;10.1.8.10;};......# 修改allow-queryallow-query{any;};};......1.3.1 配置 zone
示例:以下named.conf块将服务器配置为承载laogao.cloud及其相应的反向查找区域8.1.10.in
addr.arpa的主要区域文件。
[root@dns-server ~ 09:51:00]# vim /etc/named.conf.............# 最后添加以下内容zone"."IN{typehint;file"named.ca";};include"/etc/named.rfc1912.zones";include"/etc/named.root.key";zone"jiang.cloud"IN{typemaster;file"jiang.cloud.zone";};zone"8.1.10.in-addr.arpa"IN{typemaster;file"10.1.8.zone";};配置说明:
- type,指定服务器角色。
- file,指定相对路径名。 相对路径由 options 块中的 directory 指令设置。
1.3.2 创建区域文件
辅助区域文件应保存在/var/named/slaves中。辅助服务器启动时,会将其缓存的区域版本与主服务器上
的当前版本进行比较:如果区域文件版本是最新的,则使用该区域文件; 如果区域文件版本不是最新的
或文件不存在,则named执行区域传输并将结果缓存在该文件中。
BIND 应该能够读取这些区域文件,但不能写入它们。 这些文件应归root用户和named组所有,以便守
护程序在某种程度上受到损害时不能更改它们。
[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/*.zone1.3.3 添加记录
正向记录,将名称映射到IP地址和其他记录。该区域文件必须具有:
- SOA记录。
- 每个公用名称服务器的NS记录
- 该区域的其他A,AAAA,CNAME,MX,SRV和TXT记录。
示例:laogao.cloud域
# 参考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$TTL3600@ 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 A10.1.8.10 server IN A10.1.8.10 student IN CNAME client.jiang.cloud. client IN A10.1.8.11 www30IN A10.1.8.200 @ IN MX10mail.jiang.cloud. mail IN A10.1.8.253[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$TTL1D @ IN SOA dns.jiang.cloud. root.jiang.cloud.(0;serial 1D;refresh 1H;retry 1W;expire 3H);minimum IN NS dns.jiang.cloud.10IN PTR dns.jiang.cloud.10IN PTR server.jiang.cloud.11IN PTR client.jiang.cloud.11IN PTR student.jiang.cloud.200IN PTR www.jiang.cloud.253IN PTR mail.jiang.cloud.1.3.4 验证配置
在重新加载或重新启动named之前,应该验证/etc/named.conf文件和区域文件的语法。
- named-checkconf,验证 /etc/named.conf。
[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。
[root@dns-server ~10:53:52]# named-checkzone jiang.cloud /var/named/jiang.cloud.zonezone jiang.cloud/IN: loaded serial0OK启动服务器时,应监视系统日志中是否有错误。 单个错误也可能会导致整个区域无法加载,但是无法加
载区域不会阻止后台驻留程序启动。因此除非我们在启动过程中监视系统日志,否则很难弄清楚哪里错
了。
例如,我们可以查看与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
# 启用并启动服务[root@dns-server ~10:55:04]# systemctl enable named --nowCreated 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 Fri2026-04-1710:55:15 CST;8s ago# 设置防火墙[root@dns-server ~10:55:24]# firewall-cmd --add-service=dnsFirewallD is not running[root@dns-server ~10:55:42]# firewall-cmd --add-service=dns --permanentFirewallD is not running1.4 客户端测试
1.4.1方式1:配置dns
# 配置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 ens33Connection successfully activated(D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)# ping 测试[root@dns-client ~10:56:31]# ping dns.jiang.cloudPING dns.jiang.cloud(10.1.8.10)56(84)bytes of data.64bytes from server.jiang.cloud(10.1.8.10):icmp_seq=1ttl=64time=0.311ms64bytes from server.jiang.cloud(10.1.8.10):icmp_seq=2ttl=64time=0.895ms64bytes from server.jiang.cloud(10.1.8.10):icmp_seq=3ttl=64time=0.840ms64bytes from server.jiang.cloud(10.1.8.10):icmp_seq=4ttl=64time=0.462ms64bytes from server.jiang.cloud(10.1.8.10):icmp_seq=5ttl=64time=0.551ms64bytes from server.jiang.cloud(10.1.8.10):icmp_seq=6ttl=64time=0.724ms ^C --- dns.jiang.cloudpingstatistics ---6packets transmitted,6received,0% packet loss,time5004ms rtt min/avg/max/mdev=0.311/0.630/0.895/0.209 ms[root@dns-client ~10:56:46]# ping student.jiang.cloudPING client.jiang.cloud(10.1.8.11)56(84)bytes of data.64bytes from student.jiang.cloud(10.1.8.11):icmp_seq=1ttl=64time=0.029ms64bytes from student.jiang.cloud(10.1.8.11):icmp_seq=2ttl=64time=0.080ms64bytes from student.jiang.cloud(10.1.8.11):icmp_seq=3ttl=64time=0.067ms64bytes from student.jiang.cloud(10.1.8.11):icmp_seq=4ttl=64time=0.071ms64bytes from student.jiang.cloud(10.1.8.11):icmp_seq=5ttl=64time=0.078ms ^C --- client.jiang.cloudpingstatistics ---5packets transmitted,5received,0% packet loss,time4001ms rtt min/avg/max/mdev=0.029/0.065/0.080/0.018 ms