實驗內容
環境拓撲結構
主機環境描述
主機名 | 主機地址 | 需要提供的服務 |
content.exam.com | 172.25.250.101 | 提供基于httpd/nginx的YUM倉庫服務 |
ntp.exam.com | 172.25.250.102 | 提供基于Chronyd的NTP服務 |
mysql.exam.com | 172.25.250.103 | 提供基于MYSQL的數據庫服務 |
nfs.exam.com | 172.25.250.104 | 提供基于NFS的網絡文件系統服務 |
dns.exam.com | 172.25.250.105 | 提供基于bind的DNS服務 |
bbs.exam.com | 172.25.250.106 | 提供基于Discuz的論壇服務 |
注意:
- 172.25.250.101-172.25.250.105共5個IP地址由servera.exam.com服務器進行提供。
- 172.25.250.106由serverb.exam.com服務器進行提供。
需求描述
-
172.25.250.101 主機上的 Web 服務要求提供www.exam.com站點,該站點在任何路由可達的主機上被訪問,頁面內容顯示為"Hello,Welcome to www.exam.com!",并提供 content.exam.com/yum/AppStream和content.exam.com/yum/BaseOS URL 作為網絡倉庫供所有主機使用。
-
172.25.250.102 主機提供基于 Chronyd 的 NTP 服務將本主機作為時間服務器,對外提供 NTP 服務,并設置本服務器為 3 層。
-
172.25.250.103 主機提供的 MySQL 數據庫服務,要求使用需求 1 中提供的倉庫進行安裝,并將數據庫密碼設定為 redhat 。創建名稱為 bbs 的數據庫提供給論壇服務使用。
-
172.25.250.104 主機提供 NFS 服務,該服務將導出本地的 /bbs 目錄作為論壇數據目錄,該導出指定只能論壇所 在主機使用,并且開機自動掛載。
-
172.25.250.105 主機提供 DNS 服務,該服務需要提供對項目中所有主機名的正向和反向解析,并要求所有服務器的 DNS 配置為該 DNS 服務器。
-
172.25.250.106 主機提供基于 Discuz 的論壇服務,該論壇服務使用?172.25.250.103 主機提供的數據庫 bbs , 使用172.25.250.104 主機提供的 NFS 作為論壇數據目錄,并開機掛載。并使用 172.25.250.101 主機提供的網絡倉庫, 172.25.250.102 主機提供的 NTP 服務, 172.25.250.105 主機提供的 DNS 服務。
-
所有服務器的防火墻服務和 SELinux 服務必須開啟。
-
所有服務器提供的網絡服務必須在系統重啟后仍然可以正常提供服務。
實驗完成步驟
該實驗的完成步驟不完全根據需求的條目進行,而是在分析完需求之后進行操作
虛擬機準備
準備兩個虛擬機A、B(現在兩臺設備都處于初始化的狀態,即沒有做任何的設置),將虛擬網絡改為172.25.250.0
配置兩個虛擬機的本地倉庫
配置本地倉庫用于后續軟件包的下載
vim /etc/yum.repos.d/rpm.repo
[BaseOS]
name=baseos
baseurl=/mnt/BaseOS
gpgcheck=0
[AppStream]
name=appstream
baseurl=/mnt/AppStream
gpgcheck=0
掛載:mount /dev/sr0 /mnt
預備軟件包下載:dnf install lrz* bash-com* vim net-tools -y
虛擬機A:
添加IP地址、網關以及DNS服務:
[root@bogon ~]# nmcli connection modify ens160 +ipv4.addresses 172.25.250.101/24 ipv4.method manual ipv4.gateway 172.25.250.2 ipv4.dns 172.25.250.105 connection.autoconnect yes
[root@bogon ~]# nmcli connection modify ens160 +ipv4.addresses 172.25.250.102/24 ipv4.method manual ipv4.gateway 172.25.250.2 ipv4.dns 172.25.250.105 connection.autoconnect yes
[root@bogon ~]# nmcli connection modify ens160 +ipv4.addresses 172.25.250.103/24 ipv4.method manual ipv4.gateway 172.25.250.2 ipv4.dns 172.25.250.105 connection.autoconnect yes
[root@bogon ~]# nmcli connection modify ens160 +ipv4.addresses 172.25.250.104/24 ipv4.method manual ipv4.gateway 172.25.250.2 ipv4.dns 172.25.250.105 connection.autoconnect yes
[root@bogon ~]# nmcli connection modify ens160 +ipv4.addresses 172.25.250.105/24 ipv4.method manual ipv4.gateway 172.25.250.2 ipv4.dns 172.25.250.105 connection.autoconnect yes
啟用IP地址、網關以及DNS服務:
[root@bogon ~]# nmcli connection up ens160
修改主機名:
[root@localhost ~]# hostnamectl set-hostname servera.exam.com
虛擬機B:
添加IP地址、網關以及DNS服務:
[root@bogon ~]# nmcli connection modify ens160 ipv4.addresses 172.25.250.106/24 ipv4.method manual ipv4.gateway 172.25.250.2 ipv4.dns 172.25.250.105 connection.autoconnect yes
啟用IP地址、網關以及DNS服務:
[root@bogon ~]# nmcli connection up ens160
修改主機名:
[root@localhost ~]# hostnamectl set-hostname serverb.exam.com
配置SSH公鑰互信
虛擬機A:
生成 SSH 密鑰對(公鑰和私鑰):[root@servera ~]# ssh-keygen
查看鑰匙配置情況:[root@servera ~]# tree .ssh
將本地用戶的 SSH 公鑰復制到遠程服務器的指定用戶賬戶中,以便后續可以通過公鑰認證的方式免密登錄遠程服務器
[root@servera ~]# ssh-copy-id root@172.25.250.106
注意:
確認:Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
輸入對應主機的密碼:root@172.25.250.106's password:
同上:
[root@servera ~]# ssh-copy-id root@172.25.250.101
[root@servera ~]# ssh-copy-id root@172.25.250.102
[root@servera ~]# ssh-copy-id root@172.25.250.103
[root@servera ~]# ssh-copy-id root@172.25.250.104
[root@servera ~]# ssh-copy-id root@172.25.250.105
虛擬機B:
生成 SSH 密鑰對(公鑰和私鑰):[root@serverb ~]# ssh-keygen
查看鑰匙配置情況:[root@serverb ~]# tree .ssh
將本地用戶的 SSH 公鑰復制到遠程服務器的指定用戶賬戶中,以便后續可以通過公鑰認證的方式免密登錄遠程服務器
[root@serverb ~]# ssh-copy-id root@172.25.250.101
確認:Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
輸入對應主機的密碼:root@172.25.250.101's password:
同上:
[root@serverb ~]# ssh-copy-id root@172.25.250.106
兩個主機進行相互之間的連接嘗試
[root@servera ~]# ssh root@172.25.250.106
[root@serverb ~]# ssh root@172.25.250.101
兩臺主機相互之間皆連接成功
提供基于bind的DNS服務
虛擬機A:
下載服務軟件包:[root@servera ~]# dnf install bind -y
配置文件
[root@servera ~]# vim /etc/named.conf
options {listen-on port 53 { 172.25.250.105; };directory "/var/named";
};
zone "exam.com" IN {type master;file "named.exam";
};
區域解析文件
[root@servera ~]# vim /var/named/named.exam
$TTL 1D
@ IN SOA @ admin.exam.com (01111)IN NS dns.exam.com.
dns IN A 172.25.250.105
content IN A 172.25.250.101
ntp IN A 172.25.250.102
mysql IN A 172.25.250.103
nfs IN A 172.25.250.104
bbs IN A 172.25.250.106
查看DNS的服務:[root@servera ~]# nmcli connection show ens160 | grep DNS
重啟服務:[root@servera ~]# systemctl restart named
查詢域名exam.com的名稱服務器記錄(Name Server,NS)
[root@servera ~]# dig -t NS exam.com
觀察ANSWER SECTION部分的反饋
項目需求1
虛擬機A:
下載Nginx服務:[root@servera ~]# dnf install nginx -y
開啟服務:[root@servera ~]# systemctl start nginx
加載本地網頁:[root@servera ~]# curl localhost
創建網絡地址的目錄:[root@servera ~]# mkdir /usr/share/nginx/html/yum
將鏡像文件掛載到對應的目錄:[root@servera ~]# mount /dev/sr0 /usr/share/nginx/html/yum
書寫自動掛載的文件:[root@servera ~]# vim /etc/fstab
/dev/sr0 /usr/share/nginx/html/yum iso9660 defaults 0 0
在Windows的微軟瀏覽器查看相關的網頁
防火墻放行服務
[root@servera ~]# firewall-cmd --permanent --add-service=http
[root@servera ~]# firewall-cmd --permanent --add-service=dns
[root@servera ~]# firewall-cmd --reload
將 SELinux(Security-Enhanced Linux)切換到寬容模式(Permissive Mode)
[root@servera ~]# setenforce 0
編輯文件:[root@servera ~]# vim /etc/nginx/nginx.conf
在server{
listen 80;
listen [ : : ] :80;
server_name _;
root /usr/share/nginx/html;
index???????????????? #添加的index
}
重啟服務:[root@servera ~]# systemctl restart nginx
訪問:172.25.250.101? ? ? ? ?172.25.250.101/yum? ? ? ? ? 172.25.250.101/yum/GPL
開機自動啟動:[root@servera ~]# systemctl enable nginx
配置網絡倉庫
[root@servera ~]# vim /etc/yum.repos.d/rpm.repo
[BaseOS]
name=baseos
baseurl=http://content.exam.com/yum/BaseOS
gpgcheck=0
[AppStream]
name=appstream
baseurl=http://content.exam.com/yum/AppStream
gpgcheck=0
下載軟件包:
[root@servera ~]# dnf install vsftpd -y
在區域解析文件添加相應的服務
[root@servera ~]# vim /var/named/named.exam
$TTL 1D
@ IN SOA @ admin.exam.com (01111)IN NS dns.exam.com.
dns IN A 172.25.250.105
content IN A 172.25.250.101
ntp IN A 172.25.250.102
mysql IN A 172.25.250.103
nfs IN A 172.25.250.104
bbs IN A 172.25.250.106
servera IN A 172.25.250.101
serverb IN A 172.25.250.106
重啟服務:[root@servera ~]# systemctl restart named
虛擬機B:
[root@serverb ~]# cd /etc/yum.repos.d
復制虛擬機A的網絡倉庫到虛擬機B(快捷方式,減少重寫的步驟)
[root@serverb yum.repos.d]# scp root@servera.exam.com:/etc/yum.repos.d/rpm.repo .
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
下載軟件包:
[root@serverb yum.repos.d]# dnf install vsftpd -y
虛擬機A:
區域解析文件添加www服務
[root@servera ~]# vim /var/named/named.exam
$TTL 1D
@ IN SOA @ admin.exam.com (01111)IN NS dns.exam.com.
dns IN A 172.25.250.105
content IN A 172.25.250.101
ntp IN A 172.25.250.102
mysql IN A 172.25.250.103
nfs IN A 172.25.250.104
bbs IN A 172.25.250.106
servera IN A 172.25.250.101
serverb IN A 172.25.250.106
www IN A 172.25.250.101
重啟服務:[root@servera ~]# systemctl restart named
ping網址:[root@servera ~]# ping www.exam.com
刪除默認網頁內容:[root@servera ~]# rm -rf /usr/share/nginx/html/index.html
將內容書寫到默認的網頁:[root@servera ~]# echo "welcome to www.exam.com" > /usr/share/nginx/html/index.html
(刪掉剛才添加的index)
編輯文件:[root@servera ~]# vim /etc/nginx/nginx.conf
重啟服務:[root@servera ~]# systemctl restart nginx
訪問網頁:[root@servera ~]# curl www.exam.com
項目需求2
虛擬機A:
編輯Chrony服務的配置文件
[root@servera ~]# vim /etc/chrony.conf
復制注釋:allow 192.168.0.0/16 改為:allow 172.25.250.0/24
復制注釋:local stratum 10 改為:local stratum 3
復制注釋:log measurements statistics tracking 打開
開機自動啟動:[root@servera ~]# systemctl enable chronyd
重啟服務:[root@servera ~]# systemctl restart chronyd
虛擬機B:
編輯Chrony服務的配置文件
[root@serverb ~]# vim /etc/chrony.conf
將:pool 2.rhel.pool.ntp.org iburst 注釋掉
寫:server ntp.exam.com iburst
重啟服務:[root@serverb ~]# systemctl restart chronyd
虛擬機A:
放行服務:[root@servera ~]# firewall-cmd --permanent --add-service=ntp
重新加載防火墻:[root@servera ~]# firewall-cmd --reload
虛擬機B:
重啟服務:[root@serverb ~]# systemctl restart chronyd
查看 Chrony 客戶端當前已知的時間源(即時間服務器)及其狀態
[root@serverb ~]# chronyc sources
項目需求3
虛擬機A:
下載數據庫相關的軟件包
[root@servera ~]# dnf install mysql-server -y
確保系統啟動時自動啟動,并立即開始運行
[root@servera ~]# systemctl enable --now mysqld
grep password /var/log/mysql/mysqld.log 顯示沒有設置密碼
登錄數據庫:[root@servera ~]# mysql -uroot -p
設置數據庫的密碼:mysql> alter user 'root'@'localhost' identified by 'redhat';
mysql> exit
登錄數據庫:[root@servera ~]# mysql -uroot -p 輸入密碼:redhat
創建數據庫:mysql> create database bbs;
虛擬機B:
下載數據庫相關的軟件包
[root@serverb ~]# dnf install mysql-server -y
項目需求4
虛擬機A:
創建目錄:[root@servera ~]# mkdir /bbs
編寫文件:[root@servera ~]# vim /etc/exports
/bbs bbs.exam.com(rw)
下載軟件包:[root@servera ~]# dnf install nfs-utils -y
確保系統啟動時自動啟動,并立即開始運行
[root@servera ~]# systemctl enable --now nfs-server
放行服務:
[root@servera ~]# firewall-cmd --permanent --add-service=nfs
[root@servera ~]# firewall-cmd --permanent --add-service=rpc-bind
[root@servera ~]# firewall-cmd --permanent --add-service=mountd
重新加載防火墻:[root@servera ~]# firewall-cmd --reload
虛擬機B:
下載軟件包:[root@serverb ~]# dnf install nfs-utils -y
查看 NFS(網絡文件系統)服務器上可導出的文件系統
[root@serverb ~]# showmount -e nfs.exam.com
下載軟件包:[root@serverb ~]# dnf install httpd -y
掛載:[root@serverb ~]# mount nfs.exam.com:/bbs /var/www/html
虛擬機A:
查看目錄的相關信息:[root@servera ~]# ll /bbs -d
給所有的權限:[root@servera ~]# chmod 777 /bbs
虛擬機B:
[root@serverb ~]# touch /var/www/html/index.html
[root@serverb ~]# vim /etc/fstab
nfs.exam.com:/bbs /var/www/html nfs defaults 0 0
項目需求5
反向解析:
虛擬機A:
配置文件:
[root@servera ~]# vim /etc/named.conf
options {listen-on port 53 { 172.25.250.105; };directory "/var/named";
};
zone "exam.com" IN {type master;file "named.exam";
};
zone "250.25.172.in-addr.arpa" IN {type master;file "named.fanxiang";
};
區域解析文件:
[root@servera ~]# vim /var/named/named.fanxiang
$TTL 1D
@ IN SOA @ admin.exam.com (01111)IN NS dns.exam.com.
105 IN PTR dns.exam.com.
101 IN PTR content.exam.com.
102 IN PTR ntp.exam.com.
103 IN PTR mysql.exam.com.
104 IN PTR nfs.exam.com.
106 IN PTR bbs.exam.com.
重啟服務:[root@servera ~]# systemctl restart named
進行反向解析并觀察ANSWER SECTION部分的反饋
[root@servera ~]# dig -x 172.25.250.101 @172.25.250.105
[root@servera ~]# dig -x 172.25.250.102 @172.25.250.105
[root@servera ~]# dig -x 172.25.250.103 @172.25.250.105
[root@servera ~]# dig -x 172.25.250.104 @172.25.250.105
[root@servera ~]# dig -x 172.25.250.105 @172.25.250.105
項目需求6
虛擬機B:
將論壇壓縮文件放入/var/www/html 目錄
下載軟件包:[root@serverb ~]# dnf install unzip -y
原有軟件包就不用下載,如果沒有軟件包下載便是
[root@serverb ~]# cd /var/www/html
解壓zip文件:unzip + filename
[root@serverb html]# unzip Discuz_X3.5_SC_UTF8_20230520.zip
虛擬機A:
查看目錄:[root@servera ~]# ll /bbs
該目錄會自動多出一些文件
虛擬機B:
進入目錄:[root@serverb html]# cd upload
給所有的權限:[root@serverb upload]# chmod 777 uc_server/ uc_client/ data/ config/ -R
重啟服務:[root@serverb upload]# systemctl start httpd
放行服務:[root@serverb upload]# firewall-cmd --permanent --add-service=http
重新加載防火墻:[root@serverb upload]# firewall-cmd --reload
將 SELinux 設置為寬容模式(Permissive Mode):[root@serverb upload]# setenforce 0
瀏覽器搜索:172.25.250.106/upload/
下載軟件包:[root@serverb upload]# dnf install php* -y
重啟服務:[root@serverb upload]# systemctl restart httpd
刷新頁面
虛擬機A:
查看防火墻列表:[root@servera ~]# firewall-cmd --list-all
放行服務:[root@servera ~]# firewall-cmd --permanent --add-service=mysql
[root@servera ~]# firewall-cmd --reload
登錄數據庫:[root@servera ~]# mysql -uroot -p 密碼:redhat
使用數據庫:mysql> use mysql;
查看數據庫中所有用戶的用戶名和允許連接的主機信息
mysql> select user,host from mysql.user;
允許root用戶從任何主機連接到數據庫
mysql> update mysql.user set host='%' where user='root';
mysql> select user,host from mysql.user;
mysql> exit
重啟服務:[root@servera ~]# systemctl restart mysqld
虛擬機B:
這條命令通過指定用戶名、主機名和端口號,允許用戶登錄到遠程或本地的 MySQL 數據庫服務器
[root@serverb ~]# mysql -uroot -p -h mysql.exam.com --port 3306
數據庫服務器地址:mysql.exam.com
數據庫名:bbs
數據庫用戶名:root
數據庫密碼:redhat
數據表前綴:pre_
系統信箱Email:admin@admin.com管理員賬號:admin
管理員密碼:redhat
重復密碼:redhat
管理員Email:admin@admin.com
返回到網址刷新后再進行相關的操作
項目需求7+8
虛擬機A:
查看當前 SELinux(Security-Enhanced Linux)工作模式的命令
[root@servera ~]# getenforce
將 SELinux(Security-Enhanced Linux)切換到強制模式(Enforcing Mode)
[root@servera ~]# setenforce 1
查看 SELinux 的配置狀態
[root@servera ~]# grep SELINUX /etc/selinux/config
虛擬機B:
將 SELinux(Security-Enhanced Linux)切換到寬容模式(Permissive Mode)
[root@serverb ~]# setenforce 0
顯示 SELinux(Security-Enhanced Linux)當前狀態
[root@serverb ~]# sestatus
將 SELinux(Security-Enhanced Linux)切換到強制模式(Enforcing Mode)
[root@serverb ~]# setenforce 1
顯示 SELinux(Security-Enhanced Linux)當前狀態
[root@serverb ~]# sestatus
確保服務在系統啟動時自動啟動,并立即開始運行
[root@serverb ~]# systemctl enable --now httpd
虛擬機A:
確保服務在系統啟動時自動啟動,并立即開始運行
[root@servera ~]# systemctl enable nginx
[root@servera ~]# systemctl enable chronyd
[root@servera ~]# systemctl enable mysqld
[root@servera ~]# systemctl enable nfs-server
[root@servera ~]# systemctl enable named