Linux 命令操作与 DNS 服务器完整配置实践
实验目的
一、Linux 基础命令实操
- 掌握 root 用户切换、目录创建(
mkdir)、权限修改(chmod)及权限查看(ls -ld)的核心操作; - 熟练使用
ps命令查看系统进程,结合grep过滤特定用户(root)的进程; - 运用
find命令查找指定目录下的目标文件,通过管道与cp命令完成文件复制; - 掌握用户创建(
useradd)、用户组管理(groupadd、usermod)及用户信息查询(grep、id); - 学会编写简单 Shell 脚本,实现日期写入文件与目录删除功能,并配置脚本可执行权限。
二、DNS 服务器配置实操
- 掌握 bind 服务程序的安装(
yum)与版本验证(named -v); - 理解并配置 DNS 正向解析与反向解析,包括主配置文件、区域配置文件及数据文件的修改;
- 区分 DNS 服务器之间的迭代查询与递归查询,通过
dig命令与日志验证查询类型; - 学会通过访问控制列表(ACL)限制 DNS 服务的访问主机;
- 了解 TSIG 加密机制的配置与作用,确保 DNS 数据传输的完整性;
- 掌握 DNS 从服务器的部署流程,理解其分担主服务器负载、提升故障容错能力的核心作用。
实验步骤
一、root用户下的操作
(1)首先切换到root用户,在/root目录下创建“自己姓名拼音”的目录,将该目录的权限改为所有用户具有读写的权限,使用ls命令查看修改的结果。
首先登入普通用户,然后使用命令su -并输入root用户密码切换到root用户下。
然后通过cd /root进入到根目录下,并且使用mkdir ###创建“自己姓名拼音”的目录。
接着使用chown 777 /root/###将该目录的权限修改为所有用户具有读写的权限。
最后使用ls -ld ###命令查看该目录的权限和其他信息。

(2)使用ps命令查看当前系统中所有运行的进程的详细信息,然后查找root用户运行的所有进程。
使用ps aux查看系统中所有进程的详细信息。其他a表示显示所有用户的进程;u表示以用户为中心显示进程信息,包括所有进程所有者的用户名;x表示没有控制终端的进程。

使用ps aux | grep ‘^root’命令,通过管道和grep命令过滤出”root”用户运行的所有进程。

(3) 使用命令在/etc目录下查找所有以“nfs”为开头的文件,并把搜索结果中的第一个文件复制到第(1)小题创建的目录“/root/自己姓名拼音”下。
首先使用find /etc -type f -name “nfs”查找出所有以”nfs”为开头的文件

其次再使用命令find /etc -type f -name “nfs” | head -n 1查看所有以”nfs”为开头的文件中的第一个文件。这里可以看到是nfs.conf。

然后使用命令cp $(find /etc -type f -name “nfs” | head -n 1) /root/###将文件复制到以“自己姓名拼音”创建的文件夹当中。再跳转到该目录下,查看是否复制成功。这里还可以使用ls /root/###进行查看该目录下的文件。

(4)添加一个新用户,用户名为“自己姓名拼音123”,截止期限为2024-12-30,并通过/etc/passwd文件查看该新用户信息;将刚创建的新用户的基本组修改为cbin用户组,并查看设置情况。
首先这里使用sudo useradd -e 2024-12-30 ###123命令创建以“自己姓名123”的新用户。

其次,使用grep ###123 /etc/passwd查看该用户信息。

然后,使用sudo usermod -g cbin ###123命令将用户修改为cbin用户组。这里可以看到cbin组不存在。

可以通过getent group cbin查看是否有cbin用户组,可以看到没有返回值,即可确认没有cbin。接着就可以使用sudo groupadd cbin创建一个用户组,再使用sudo usermod -g cbin ###123命令将用户修改到cbin用户组。

最后使用id ###123命令查看该用户的设置情况。

(5)编写一个名称为“学号.sh”的shell脚本,实现如下功能:将当前日期和时间写入到文件“/home/xuehao.txt”中,然后删除第(1)小题中创建的“/root/自己姓名拼音”目录。
首先使用vim 123.sh。加入内容
date '+%Y-%m-%d %H:%M:%S' > /home/xuehao.txt
rm -rf /root/###

然后chmod +x 123.sh为脚本添加可执行命令。再使用./123.sh将脚本执行。

接着使用cat /home/xuehao.txt查看运行结果,发现运行成功。

最后再使用ls /root/###查看是否删除成功以“自己姓名拼音”的目录。

二、完成DNS服务器的配置
(1) 首先连接外网,安装bind服务程序
使用yum install bind-chroot-y下载并安装bind服务程序。

使用named -v命令查看是否成功安装。

(2) 验证正向解析的过程,域名和ip可以自行配置
首先通过rpm -qc bind查询bind软件配置文件存在路径。可以看到主配置文件在/etc/logrotate.d/named,区域配置文件在/etc/named.rfc1912.zones,区域数据配置文件在/var/named/named.localhost

接下来就是修改这三个文件。首先使用vim /etc/named.conf修改主配置文件。这里可以看到将listen-on port 53修改为any;,allow-query修改为any;。

然后使用vim /etc/named.rfc1912.zones修改区域配置文件。这里将原有的信息全部清空,只保留自己的域名解析信息。
zone "virtual.com" IN { type master; file "virtual.com.zone"; allow-update {none;}; };

接着使用cp -a /var/named/named.localhost /var/named/virtual.com.zone命令复制一份正向解析的模板文件。

其次使用vim virtual.com.zone命令修改数据区域配置文件。
$TTL 86400
@ IN SOA ns.virtual.com. admin.virtual.com. (
2024122301 ; Serial
3600 ; Refresh
1800 ; Retry
1209600 ; Expire
86400 ) ; Minimum TTL
IN NS ns.virtual.com.
ns IN A 192.168.150.100
www IN A 192.168.150.110
mail IN A 192.168.150.120
ftp IN CNAME www
* IN A 192.168.150.130
virtual.com. IN A 192.168.150.100

还有vim /var/named/virtual.com.zone

使用systemctl stop firewalld.service和setenforce 0关闭防火墙

再用命令systemctl restart named启动bind服务。

最后使用nslookup命令,再使用ns.virtual.com就可以查看到解析成功

(3) 验证反向解析的过程,域名和ip可以自行配置
首先编辑区域配置文件,使用vim /etc/named.rfc1912.zones
zone "150.168.192.in-addr.arpa" IN { type master; file "192.168.150.arpa"; allow-update {none;}; };

Zone部分需要将ip地址反写。
使用vim 192.168.150.apra命令对反向区域数据文件进行配置。
$TTL 86400
@ IN SOA ns.virtual.com. admin.virtual.com. (
2024122301 ; Serial
3600 ; Refresh
1800 ; Retry
1209600 ; Expire
86400 ) ; Minimum TTL
IN NS ns.virtual.com.
; PTR records
100 IN PTR www.virtual.com.
110 IN PTR bbs.virtual.com.

最后使用nslookup,再输入之前反向数据配置文件当中设置的ip,即可得到结果。

(4) DNS服务器之间传输区域数据文件时,使用的是递归查询还是迭代查询?
输入dig @192.168.150.100 virtual.com命令测试递归查询

以及dig @192.168.150.100 virtual.com +norecurse命令测试迭代查询

最后tail -f /var/log/messages查询日志是否涉及递归查询或者迭代查询。可以根据第一行得到迭代查询的尝试。由于解析失败,因此DNS服务器尝试通过其他上游服务器来获取答案。但是没有显示与递归查询直接有关的日志,特别是没有看到rd(递归请求)和ra(递归可用)的信息。

因此根据上述实验可以得出DNS服务器之间传输区域数据文件时,使用的是迭代查询的结论。
(5) 是否可以限制使用DNS域名解析服务的主机?如何限制?
可以通过在DNS服务器的配置文件中限制某些主机使用该DNS服务。使用vim /etc/named.conf命令添加一个访问控制列表来限制哪些IP地址可以使用DNS服务。

而后使用systemctl restart named命令重新启动DNS服务器。
这里可以看到当IP为192.168.150.1想要使用IP时,DNS服务器拒绝连接。

而这里IP为192.168.150.100连接DNS服务器时直接成功。

(6) 当用户与DNS服务器之间传输数据配置文件时,是否可以使用TSIG加密机制来确保文件内容不被篡改?
首先执行vim /etc/named/example.com.zone命令并且进行配置。
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2024122301 ; Serial
3600 ; Refresh
1800 ; Retry
1209600 ; Expire
86400 ; Minimum TTL
)
@ IN NS ns1.example.com.
@ IN A 192.168.150.100
ns1 IN A 192.168.150.100

再执行chown root:named /var/named/example.com/zone
Chmod 644 /var/named/example.com.zone
确保文件的权限,并且确保BIND用户有读取权限。

执行rndc-confgen -a -k mykey命令,系统生成一个TSIG密钥文件,并且保存在/etc/rndc.key文件中。

然后执行命令cat /etc/rndc.eky查看文件中的内容

接着执行vim /etc/named.conf。加入下面的内容
key "mykey" {
algorithm hmac-md5;
secret "TTZg6OPPwGiGfyUQP7l1dQ==";
};
zone "example.com" {
type master;
file "/var/named/example.com.zone";
allow-update { key "mykey"; };
};

最后使用systemctl restart named重启DNS服务器,再执行dig @192.168.150.100 subdomain.example.com返回的值。

综上可以得出当用户与DNS服务器之间传输数据配置文件时,可以使用TSIG加密机制来确保文件内容不被篡改
(7) 部署DNS从服务器的作用是什么?
在主服务器中执行vim /var/named/main.com.zone命令,进行配置文件。
$TTL 86400 ; 默认 TTL 为 86400 秒(24小时)
@ IN SOA ns1.main.com. admin.main.com. (
20240101 ; Serial 版本号(每次更新该文件时应增加)
3600 ; Refresh:从服务器多久更新一次(秒)
1800 ; Retry:从服务器失败后重新尝试的时间间隔(秒)
1209600 ; Expire:数据过期时间(秒)
86400 ) ; Minimum TTL:最小 TTL
IN NS ns1.main.com. ; 域名的 DNS 服务器
IN NS ns2.main.com.
ns1 IN A 192.168.150.100 ; ns1.main.com 的 IP 地址
ns2 IN A 192.168.150.101 ; ns2.main.com 的 IP 地址
@ IN A 192.168.150.200 ; main.com 的 A 记录
www IN CNAME @ ; www.main.com 的 CNAME 记录,指向 main.com

再执行命令vim /etc/named.conf添加以下。
zone "main.com" {
type master;
file "/var/named/main.com.zone";
allow-transfer { 192.168.150.130; };
};

然后执行systemctl restart named重启DNS服务器。
再跳转到从服务器中执行vim /etc/named.conf
zone "suffraga.com"{
type slave;
file "/var/name/slaves/suffraga.com.zone";
masters {192.168.150.100;};
};

再返回到主服务器当中,执行命令
Named-checkconf /etc/named.conf
Named-check zone main.com /var/named/main.com.zone
对主服务器的配置和文件进行查错

然后对从服务器当中执行
Mkdir -p /var/named/slaves的命令创建/var/named/slaves目录,
再执行Chown named:named /var/named/slaves
Chmod 755 /var/named/slaves命令给该文件赋予权限
最后执行Systemctl restart named重启DNS服务器,就可以在slaves查看到主服务器中的区域数据文件。










