一.本次任务
架设一台NFS服务器,并按照以下要求配置
1、开放/nfs/shared目录,供所有用户查询资料
2、开放/nfs/upload目录,为192.168.xxx.0/24网段主机可以上
传目录,
并将所有用户及所属的组映射为nfs-upload,其UID和GID均为
210
3、将/home/tom目录仅共享给192.168.xxx.xxx这台主机,并
只有用户tom对该目录有读写权限
二. 实验步骤
前情提要:
① 需要准备两台版本一致的 linux 主机且网络可互通,这里我的服务端为 192.168.11.128,客户端为 192.168.11.129
② 关闭服务端防火墙以及 selinux
[root@server ~]# systemctl stop firewalld
[root@server ~]# setenforce 0
③ 磁盘挂载操作
[root@server ~]# mount /dev/sr0 /mnt
mount: /mnt: WARNING: source write-protected, mounted read-only.
④ 配置 yum 源文件
[root@server ~]# vim /etc/yum.repos.d/base.repo
[BaseOS]
name=BaseOS
baseurl=file:///mnt/BaseOS
gpgcheck=0
[AppStream]
name=AppStream
baseurl=file:///mnt/AppStream
gpgcheck=0
1.开放 /nfs/shared 目录,供所有用户查询资料
安装 nfs-utils 共享文件系统并启动程序
[root@server ~]# dnf install nfs-utils -y
[root@server ~]# systemctl start nfs-server.service
编辑 nfs 主配置文件
[root@server ~]# vim /etc/exports
# 共享目录(根目录) 允许访问的主机*(权限,参数)
/nfs/shared *(ro)
根据配置文件创建资源文件并查看文件权限,确保所有用户可读 /nfs/shared 路径下文件即可
[root@server ~]# mkdir -pv /nfs/shared
mkdir: 已创建目录 '/nfs'
mkdir: 已创建目录 '/nfs/shared'
[root@server ~]# touch /nfs/shared/test{1..10}
[root@server ~]# ll -d /nfs/shared/
drwxr-xr-x. 2 root root 137 5月 29 20:01 /nfs/shared/
由于上面我们修改了 nfs 的配置文件,想要文件生效我们要重启 nfs-server 服务,但在这里我们不能直接用 systemctl restart nfs-server 来重启服务,这样我们每重启一次服务就会重新进行端口注册,推荐用 exportfs -ra 来实现。刷新后未出现报错说明我们的配置没有问题!
[root@server ~]# exportfs -ra # 重新导出(re-export)并刷新所有 NFS 共享目录,结合了 -r(重新读取配置)和 -a(应用到所有目录)的功能
客户端主机向服务端主机建立 nfs 连接
想要建立连接我们的客户端也需要下载 nfs-utils 服务程序
[root@client ~]# mount /dev/sr0 /mnt
[root@client ~]# dnf install nfs-utils -y
客户端查询 nfs 服务器(IP 为 192.168.11128)导出的共享目录列表
[root@client ~]# showmount -e 192.168.11.128
Export list for 192.168.11.128
/nfs/shared *
创建一个挂载目录 /dbw,在将 /nfs/shared 文件系统挂载到 /dbw 目录(可共享文件路径)
[root@client ~]# mkdir /dbw
[root@client ~]# mount 192.168.11.128:/nfs/shared /dbw
查看 /nfs/shared 路径,可以看到服务端所共享的文件
[root@client ~]# ll /dbw
2.开放 /nfs/upload 目录,为 192.168.xxx.0/24 网段主机可以上传目录,并将所有用户及所属的组映射为 nfs-upload,其 UID 和 GID 均为 210
编辑 nfs 配置文件
[root@server ~]# vim /etc/exports
# 共享目录(根目录) 允许访问的主机*(权限,参数)
/nfs/shared *(ro)
/nfs/upload 192.168.11.0/24(rw,all_squash,anonuid=210,anongid=210)
根据配置文件创建资源文件并查看文件权限,确保用户可读可写 /nfs/shared 路径下文件即可;刷新
[root@server ~]# mkdir -pv /nfs/upload
mkdir: 已创建目录 '/nfs/upload'
[root@server ~]# touch /nfs/upload/red{1..10}
[root@server ~]# ll -d /nfs/upload/
drwxr-xr-x. 2 root root 127 5月 29 20:26 /nfs/upload/
[root@server ~]# chmod o+w /nfs/upload/ -R # 修改其他用户权限,加上可写权限
[root@server ~]# exportfs -ra
根据配置文件中所写,需要创建一个 uid 为 210 且 gid 也为 210 的用户账号
[root@client ~]# useradd -r -u 210 nfs-upload
[root@client ~]# id nfs-upload
用户id=210(nfs-upload) 组id=210(nfs-upload) 组=210(nfs-upload)
客户端查询 NFS 服务器导出的共享目录列表
[root@server ~]# showmount -e 192.168.96.142
Export list for 192.11.129.142:
/nfs/shared *
/nfs/upload 192.11.129.0/24
将 /nfs/upload 文件挂载到 /dbw 目录并查看共享目录下是否有服务端共享的文件,挂载之前我们先要取消前面挂载到 /dbw 目录下的 /nfs/shared 文件共享目录
[root@client ~]# umount 192.168.11.129:/nfs/shared /dbw
umount: /dbw: not mounted.
[root@client ~]# ll /dbw
total 0
[root@client ~]# mount 192.168.11.129:/nfs/upload /dbw
[root@client ~]# ll /dbw
在客户端下上传文件并查看
[root@client ~]# touch /dbw/red111
[root@client ~]# ll /dbw
3.将 /home/tom 目录仅共享给 192.168.xxx.xxx 这台主机,并只有用户 tom 对该目录有读写权限
编辑 nfs 配置文件
[root@server ~]# vim /etc/exports
# 共享目录(根目录) 允许访问的主机*(权限,参数)
/nfs/shared *(ro)
/nfs/upload 192.168.11.0/24(rw,all_squash,anonuid=210,anongid=210)
/home/tom 192.168.11.132(rw)
根据配置文件创建资源文件并查看文件权限,确保 tom 可读可写 /home/tom 路径下文件即可;刷新
[root@server ~]# mkdir -pv /home/tom
mkdir: 已创建目录 '/home/tom'
[root@server ~]# touch /home/tom/tom{1..10}
[root@server ~]# ll -d /home/tom
drwxr-xr-x. 2 root root 127 5月 29 22:00 /home/tom
[root@server ~]# useradd tom
[root@server ~]# chown tom:tom /home/tom # 改变文件所有者
[root@server ~]# chmod 700 /home/tom # 改变文件权限仅 tom 用户有读写执行权限
[root@server ~]# exportfs -ra
根据配置文件中所写,创建 tom ,id为 1001
[root@client ~]# useradd tom
[root@client ~]# id tom
uid=1001(tom) gid=1001(tom) groups=1001(tom)
将 /home/tom 文件挂载到 /dbw 目录并查看共享目录下是否有服务端共享的文件,挂载之前我们先要取消前面挂载到 /dbw 目录下的 /nfs/upload 文件共享目录;客户端 root 用户无权限查看 /dbw 下文件
[root@client ~]# umount 192.168.11.129:/nfs/upload /dbw
umount: /dbw: not mounted.
[root@client ~]# ll /dbw
total 0
[root@client ~]# mount 192.168.11.129:/home/tom /dbw
[root@client ~]# ll /dbw
ls: cannot open directory '/dbw': Permission denied
注意:主机每次重启后服务端都要开启 nfs-server 服务程序
[root@server ~]# systemctl restart nfs-server.service
1.关闭防火墙以及 seliunx
systemctl stop firewalld
setenforce 0
2.挂载磁盘且配置 yum 源
[root@server ~]# mount /dev/sr0 /mnt
[root@server ~]# vim /etc/yum.repos.d/base.repo
[BaseOS]
name=BaseOS
baseurl=file:///mnt/BaseOS
gpgcheck=0
[AppStream]
name=AppStream
baseurl=file:///mnt/AppStream
gpgcheck=0
3.下载 bind 服务程序
[root@server ~]# rpm -ql bind
4.查看 bind 的配置文件
[root@server ~]# rpm -ql bind
(一).正向解析
1.找到配置文件后进入编辑
[root@server ~]# vim /etc/named.conf
2.根据上一步配置文件中我们写的正向解析中的资源文件为 named.openlab ,用 vim 来创建编写
[root@server ~]# vim /var/named/named.openlab
3.修改完配置后需重启程序
[root@server ~]# systemctl restart named
4. 打开客户端主机并进行测试
[root@bogon ~]# nmcli device show
5.使用 nslookup 命令将域名解析为对应的 IP 地址
[root@bogon ~]# nslookup
> server 192.168.11.128
Default server: 192.168.11.128
Address: 192.168.11.128#53
> 192.168.11.111
** server can't find 111.11.168.192.in-addr.arpa: NXDOMAIN
> 192.168.11.111
** server can't find 111.11.168.192.in-addr.arpa: NXDOMAIN
> 192.168.11.128
** server can't find 128.11.168.192.in-addr.arpa: NXDOMAIN
> ^C[root@bogon ~]#
[root@bogon ~]# nslookup
> server 192.168.11.128
Default server: 192.168.11.128
Address: 192.168.11.128#53
> server 192.168.11.111
Default server: 192.168.11.111
Address: 192.168.11.111#53
> server 192.168.11.100
Default server: 192.168.11.100
Address: 192.168.11.100#53
> server 192.168.11.200
Default server: 192.168.11.200
Address: 192.168.11.200#53
> server wwww.openlab.com
nslookup: couldn't get address for 'wwww.openlab.com': not found
[root@bogon ~]# nslookup
> server www.openlab.com
Default server: www.openlab.com
Address: 15.197.148.33#53
Default server: www.openlab.com
Address: 3.33.130.190#53
>
6.在客户端修改 DNS 解析配置文件
[root@client ~]# vim /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.11.2
7.使用解析工具 dig 时就不用在输入 server 指定本地 dns 服务器
(二) .反向连接
进入 named.conf 文件编辑反向解析
[root@server ~]# vim /etc/named.conf
根据区域文件创建资源文件
[root@server ~]# vim /var/named/named.192
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.openlab.com.
142 IN PTR ns.openlab.com.
100 IN PTR www.openlab.com.
111 IN PTR ftp.openlab.com.
222 IN PTR mail.openlab.com.
重启服务
[root@server ~]# systemctl restart named
.在客户端测试反向解析(通过 IP 地址获取域名地址)
[root@client ~]# dig -x 192.168.96.111 # 执行反向DNS查找
主从DNS服务器
完全区域传送
两个服务器都进行防火墙和 selinux 的关闭以及 bind 服务程序的安装
[root@server/client ~]# systemctl stop firewalld
[root@server/client ~]# setenforce 0
[root@server/client ~]# mount /dev/sr0 /mnt
[root@server/client ~]# dnf install bind -y
主服务端操作,编辑主配置文件设置监听IP
主服务端操作打开区域配置文件,添加如下内容,重点为:允许从服务器的同步请求,即修改为 allow-transfer {允许同步区域信息的主机IP参数
[root@server ~]# vim /etc/named.rfc1912.zones
zone "openlab.com" IN {
type master;
file "openlab.com.zone";
allow-transfer { 192.168.96.132; };
};
zone "96.168.192.in-addr.arpa" IN {
type master;
file "192.168.96.arpa";
allow-transfer { 192.168.96.132; };
};
主服务端操作,设置正反向解析数据配置文件
正向解析:
[root@server ~]# cd /var/named/
[root@server named]# ls
[root@server named]# cp -a named.localhost openlab.com.zone
[root@server named]# vim openlab.com.zone
$TTL 1D
@ IN SOA ns.openlab.com. admin.openlab.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.openlab.com.
NS slave.openlab.com.
ns IN A 192.168.96.142
www IN A 192.168.96.142
bbs IN A 192.168.96.142
ftp IN CNAME www
slave IN A 192.168.96.132
反向解析:
[root@server ~]# cd /var/named/
[root@server named]# ls
[root@server named]# cp -a named.loopback 192.168.96.arpa
[root@server named]# vim /var/named/192.168.96.arpa
$TTL 1D
@ IN SOA ns.openlab.com admin.openlab.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.openlab.com.
NS slave.openlab.com.
142 IN PTR ns.openlab.com.
142 IN PTR www.openlab.com.
142 IN PTR bbs.openlab.com.
142 IN PTR ftp.openlab.com.
132 IN PTR slave.openlab.com.
主服务端重启操作
[root@server named]# systemctl restart named
从服务端操作,修改主配置文件
[root@client ~]# vim /etc/named.conf
从服务端操作,修改区域配置文件,填写主服务器的 IP 地址与要抓取的区域信息,注意此时的服务类型应该是 slave(从)
[root@client ~]# vim /etc/named.rfc1912.zones
// 添加以下内容
zone "openlab.com" IN {
type slave;
masters { 192.168.96.142; };
file "slaves/openlab.com.zone";
};
zone "96.168.192.in-addr.arpa" IN {
type slave;
masters { 192.168.96.142; };
file "slaves/192.168.96.arpa";
};
从服务端操作,重启服务,注意:当从服务器的 DNS 服务程序在重启后,就自动从主服务器上同步了数据配置文件,且该文件默认会放置在区域配置文件中所定义的目录位置中
[root@client ~]# cd /var/named/slaves/
[root@client slaves]# ls
[root@client slaves]# systemctl start named
[root@client slaves]# ls
从服务端操作,确认从服务端的网卡 DNS 地址修改为自己的 IP:192.168.48.132,使从服务器自身也能提供的 DNS 域名解析服务,在进行测试
[root@client ~]# vim /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.96.132
测试:
①
[root@client ~]# nslookup www.openlab.com
Server: 192.168.96.132
Address: 192.168.96.132#53
Name: www.openlab.com
Address: 192.168.96.142
②
[root@client ~]# nslookup 192.168.96.142
142.96.168.192.in-addr.arpa name = ftp.openlab.com.
142.96.168.192.in-addr.arpa name = bbs.openlab.com.
142.96.168.192.in-addr.arpa name = ns.openlab.com.
142.96.168.192.in-addr.arpa name = www.openlab.com.
③
[root@client ~]# dig @192.168.96.142 www.openlab.com
; <<>> DiG 9.16.23-RH <<>> @192.168.96.142 www.openlab.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48827
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 0fc87638dddfd1d801000000682d936b60af0867c60c2eee (good)
;; QUESTION SECTION:
;www.openlab.com. IN A
;; ANSWER SECTION:
www.openlab.com. 86400 IN A 192.168.96.142
;; Query time: 0 msec
;; SERVER: 192.168.96.142#53(192.168.96.142)
;; WHEN: Wed May 21 16:48:43 CST 2025
;; MSG SIZE rcvd: 88
在主服务端修改数据配置文件
[root@server ~]# vim /var/named/openlab.com.zone
$TTL 1D
@ IN SOA openlab.com. admin.openlab.com. (
1 ; serial ; 修改,需要加1
3 ; refresh ; 修改
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.openlab.com.
MX 8 mail.openlab.com. ; 添加
NS slave.openlab.com.
ns IN A 192.168.96.142
www IN A 192.168.96.142
bbs IN A 192.168.96.142
mail IN A 192.168.96.142 ; 添加
ftp IN CNAME www
slave IN A 192.168.96.132
www1 IN CNAME www ; 添加
主从服务端重启服务
[root@server ~]# systemctl restart named
从服务端测试
①
[root@client ~]# nslookup mail.openlab.com
Server: 192.168.96.132
Address: 192.168.96.132#53
Name: mail.openlab.com
Address: 192.168.96.142
②
[root@client ~]# nslookup www1.openlab.com
Server: 192.168.96.132
Address: 192.168.96.132#53
www1.openlab.com canonical name = www.openlab.com.
Name: www.openlab.com
Address: 192.168.96.142