RHCE服务总结

一、Linux 例行计划任务(定时任务)

1.1 作用场景

日常运维经常需要定时执行操作:

  • 凌晨 1 点自动备份数据
  • 每晚 10 点巡检系统状态
  • 定期清理日志、临时文件

Linux 分为两类定时任务:

  • at:一次性任务(到时间只执行 1 次)
  • crontab:周期性任务(循环重复执行,运维最常用)

1.2 At (一次性)

1.2.1 安装与启动服务

at 工具默认未预装,需手动安装

bash 复制代码
# 安装 at 服务
yum install at -y
# 查看版本
at -V
# 启动并设置开机自启
systemctl enable --now atd
# 查看服务状态
systemctl status atd

1.2.2 at 权限控制(白 / 黑名单)

at 有两套权限规则,优先级:at.allow(白名单) > at.deny(黑名单)

  • /etc/at.allow:白名单,仅文件内用户可使用 at
  • /etc/at.deny:黑名单,文件内用户禁止使用 at
  • 两个文件都不存在:仅 root可用 at

1.2.3 at 常用参数 & 时间格式

常用参数

参数 作用
-l / atq 查看所有 at 任务
-d / atrm 删除指定 at 任务
-c 查看任务内部命令
-f 从文件读取任务命令
-m 任务执行后发送邮件提醒

时间格式

格式 示例 说明
HH:MM 14:30 今日指定时间,错过则次日执行
HH:MM YYYY-MM-DD 14:30 2026-06-14 指定年月日 + 时间
now + 时间 now + 2 minutes 从现在延后 N 分钟 / 小时 / 天

1.2.4 实战实验

实验 1:交互式创建一次性任务(2 分钟后执行)

需求:2 分钟后执行 ls /root,结果写入 /root/at.txt

bash 复制代码
[root@server ~]# at now + 2 minutes # 进入 at 交互界面
warning: commands will be executed using /bin/sh
at> ls /root > /root/at.txt # 输入任务命令
at> <EOT> # 按 Ctrl+D 退出交互(EOT 结束
job 3 at Sun Jun 14 21:56:00 2026

# 查看已存在任务
[root@server ~]# at -l
3       Sun Jun 14 21:56:00 2026 a root
[root@server ~]# atq
3       Sun Jun 14 21:56:00 2026 a root

# 等待2分钟后,查看文件
[root@server ~]# cat at.txt
公共
模板
视频
图片
文档
下载
音乐
桌面
anaconda-ks.cfg
at.txt

注意:

  • at命令只要指定的时间正确,就可以执行对应的命令
  • at命令的输出结果不会显示到屏幕上
  • at命令中执行的命令最好使用绝对路径,不容易报错
  • at命令只会执行一次
实验 2:非交互式(管道方式)创建任务

无需进入交互,直接通过管道传命令

bash 复制代码
echo "echo 'hello again' >> /root/at.txt" | at now + 1 minute
实验 3:配置黑名单,禁止普通用户使用 at

1.创建测试用户

bash 复制代码
[root@server ~]# useradd ce1
[root@server ~]# passwd ce1
更改用户 ce1 的密码 。
新的密码:#123
无效的密码: 密码少于 8 个字符
重新输入新的密码:#123
passwd:所有的身份验证令牌已经成功更新。

2.写入黑名单

bash 复制代码
[root@server ~]# vim /etc/at.deny

[root@server ~]# cat /etc/at.deny #写入
ce1

3.切换用户测试

bash 复制代码
[root@server ~]# su - ce1
[ce1@server ~]$ at 14:00 #at命令不可用
#提示:You do not have permission to use at 禁止使用
You do not have permission to use at.

1.2.5 任务文件 & 日志查看

  • 任务存储目录:/var/spool/at/
  • 执行日志:/var/log/cron
bash 复制代码
# 实时监控任务文件
watch -n 1 ls -l /var/spool/at
# 查看执行日志
tail -f /var/log/cron

1.3 周期性任务 crontab(重点)

1.3.1 服务介绍

  • 服务名:crond ,系统默认开机自启
  • 作用:循环执行定时任务,最小单位分钟
  • 分类:
    用户级任务:每个独立用户配置(crontab 命令)
    系统级任务:系统全局任务(/etc/crontab、/etc/cron.* 目录)

1.3.2 安装 & 权限规则

bash 复制代码
# 安装(系统一般自带)
yum install crontabs -y
# 查看服务状态
systemctl status crond

权限规则和 at 一致:cron.allow 白名单 > cron.deny 黑名单

1.3.3 crontab 基础命令

命令 作用
crontab -e 编辑定时任务(最常用)
crontab -l 查看当前用户定时任务
crontab -r 删除所有定时任务(无提示)
crontab -i 删除任务(带确认提示)
crontab -u 用户名 管理指定用户的任务(仅 root 可用)

1.3.4 核心:时间格式(6 个字段)

格式:分钟 小时 日期 月份 星期 执行命令

字段 取值范围
分钟 0~59
小时 0~23
日期 1~31
月份 1~12
星期 0~7(0 和 7 均代表周日)

特殊符号说明

符号 含义
* 任意时间(每单位都执行)
- 时间范围
, 分隔多个独立时间点
*/N 每隔 N 单位执行

常用示例(直接套用)

bash 复制代码
# 1. 每天凌晨2点01分执行
1 2 * * * 命令
# 2. 每周一17点整执行
0 17 * * 1 命令
# 3. 每月1、15号凌晨5点执行
0 5 1,15 * 命令
# 4. 周一至周五 4点40分执行
40 4 * 1-5 命令
# 5. 每天凌晨4点,每10分钟执行一次
*/10 4 * * * 命令
# 6. 每2天,8~11点的第3、15分钟执行
3,15 8-11 */2 * 命令
# 7. 每分钟执行一次
* * * * * 命令

重要注意:

  • 6 个字段不能为空,不指定时间用 *
  • 命令尽量使用绝对路径
  • 日期 + 星期不建议同时配置,容易逻辑混乱

1.3.5 crontab 实战

实验 1:每 2 分钟广播系统时间
bash 复制代码
[root@server ~]# crontab -e # 写入内容 */2 * * * * wall $(date)
no crontab for root - using an empty one
crontab: installing new crontab
[root@server ~]# crontab -l  # 查看任务
*/2 * * * * wall $(date)
[root@server ~]# crontab -r  # 删除任务
实验 2:每周一凌晨 6 点重启服务器
bash 复制代码
[root@server ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
#写入
0 6 * * 1 /sbin/shutdown -r now
[root@server ~]# crontab -l
0 6 * * 1 /sbin/shutdown -r now

1.3.6 系统级定时任务

用户任务仅针对单个用户,系统全局任务需编辑系统配置文件:

  1. 系统主配置文件:/etc/crontab
  2. 系统预设目录(系统自动执行)
    /etc/cron.hourly:每小时任务
    /etc/cron.daily:每日任务
    /etc/cron.weekly:每周任务
    /etc/cron.monthly:每月任务

系统配置文件格式(多一个用户字段)

格式:分钟 小时 日期 月份 星期 运行用户 命令

实战 1:每天 6 点备份系统日志

需求:每天 6:00 将 /var/log/messages 备份到 /backup,文件名带日期

bash 复制代码
# 创建备份目录
mkdir /backup
# 编辑系统定时文件
vim /etc/crontab
# 末尾添加
0 6 * * * root /bin/cp /var/log/messages /backup/logfile$(date +\%Y-\%m-\%d)

重点:crontab 中 % 必须加反斜杠 \% 转义!

实战 2:run-parts 批量执行脚本

run-parts 可执行目录下所有脚本,适合批量任务:

bash 复制代码
# 新建脚本目录
mkdir /test
# 编辑系统定时,每天8点执行 /test 下所有脚本
vim /etc/crontab
0 8 * * * root run-parts /test

1.3.7 anacron 补充(关机补执行)

crond 仅在开机时执行,若关机错过任务则不再执行;
anacron 专门弥补:开机后自动执行关机期间错过的每日 / 每周 / 每月任务
配置文件:/etc/anacrontab,系统默认配置好,无需手动修改。

二、Chrony 时间服务器

2.1 时间服务作用

1.日志、订单、运维操作依赖统一时间戳

2.集群、服务器之间必须时间同步,否则服务异常

3.Linux 存在两个时钟:

硬件时钟(RTC):主板 BIOS 时钟,断电不丢失

系统时钟:内核时钟,断电重置

2.1.1 时间相关命令

bash 复制代码
# 查看硬件时间
hwclock
# 查看系统时间
date
# 统一设置系统+硬件时间
timedatectl set-time "2026-06-14 10:00:00"
# 查看完整时间信息(时区、同步状态)
timedatectl

2.2 时间配置

bash 复制代码
# 查看亚洲时区
timedatectl list-timezones | grep Asia
# 设置为上海时区(北京时间)
timedatectl set-timezone Asia/Shanghai

2.3 Chrony 介绍

RHEL 9 默认时间同步服务,替代传统 NTP:

1.组成:

  • chronyd:后台守护进程,同步时间、监听 123 端口

  • chronyc:交互式客户端,查看、管理时间服务

2.优势:断网后也能维持时间精度,适配虚拟机 / 云主机

2.4 常用公共时间服务器(国内优先)

bash 复制代码
ntp.aliyun.com    # 阿里云
ntp.tencent.com   # 腾讯
210.72.145.44     # 国家授时中心
s1a.time.edu.cn   # 教育网

2.5 实战部署

2.5.1 实验 1:客户端同步公网时间(单机使用)

步骤 1:安装服务(系统默认预装)

bash 复制代码
yum install chrony -y
systemctl enable --now chronyd

步骤 2:修改配置文件

bash 复制代码
vim /etc/chrony.conf
# 注释原有 pool,添加阿里云时间服务器
server ntp.aliyun.com iburst

# 保留默认配置:
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync

步骤 3:重启服务 & 验证

bash 复制代码
systemctl restart chronyd
# 查看时间同步源(* 代表当前生效服务器)
chronyc sources -v
# 查看同步状态
timedatectl
# System clock synchronized: yes 表示同步成功

2.5.2 实验 2:搭建内部时间服务器(集群必备)

拓扑:

  • 服务端 Server:192.168.168.91 → 同步阿里云
  • 客户端 Node1:192.168.168.92 → 同步内网 Server

第一步:配置时间服务端

1.编辑配置

bash 复制代码
vim /etc/chrony.conf
# 1. 上游公网时间源
server ntp.aliyun.com iburst
# 2. 允许内网网段同步(核心配置)
allow 192.168.0/24
# 可选:断网后仍对外提供时间
local stratum 10

2.重启服务 和 监听端口

bash 复制代码
systemctl restart chronyd
# 查看 123 端口(NTP/Chrony 默认端口)
ss -lntup | grep 123

第二步:配置内网客户端

1.编辑配置,指向内网时间服务器

bash 复制代码
vim /etc/chrony.conf
# 注释所有公网 server,添加内网服务器
server 192.168.168.91 iburst

2.重启验证

bash 复制代码
systemctl restart chronyd
chronyc sources -v  # 源为 192.168.168.91 即成功

排错思路:

  1. 双方网络互通:ping 服务器IP

  2. 检查 allow 网段配置是否正确

  3. 防火墙 / SELinux 已关闭

  4. 服务正常启动

三、SSH 远程登录服务

3.1 服务简介

  • 协议:SSH(Secure Shell)加密远程连接,替代明文 Telnet
  • 默认端口:22
  • 功能:远程命令行、SFTP 文件传输
  • 认证方式:密码认证、密钥认证(免密登录)

3.1.1 SSH 工作流程

  1. 版本协商:客户端与服务端协商 SSH 版本
  2. 密钥协商:交换公钥,生成加密会话密钥
  3. 身份认证:密码 / 密钥校验
  4. 会话交互:加密传输所有数据

3.2 基础配置文件

服务端主配置:/etc/ssh/sshd_config

bash 复制代码
# 查看、编辑配置
vim /etc/ssh/sshd_config

核心配置项:

bash 复制代码
Port 22                  # 监听端口
PermitRootLogin yes      # 是否允许 root 远程登录
PasswordAuthentication yes # 是否开启密码登录
AllowUsers 用户名        # 登录白名单(仅指定用户可登录)

3.3 实战实验

实验 1:修改 SSH 默认端口(安全加固)

需求:将默认 22 端口改为 2222

1.服务端修改配置

bash 复制代码
vim /etc/ssh/sshd_config
# 取消注释,修改端口
Port 2222

2.重启服务

bash 复制代码
systemctl restart sshd
# 查看监听端口
ss -lntup | grep ssh

3.客户端连接(必须指定端口)

bash 复制代码
# 格式:ssh -p 端口 用户名@IP
ssh -p 2222 root@192.168.91

实验 2:禁止 root 远程登录(安全加固)

bash 复制代码
vim /etc/ssh/sshd_config
PermitRootLogin no   # 禁止root登录
# 可选:PermitRootLogin prohibit-password 仅允许密钥登录,禁止密码

systemctl restart sshd
# 客户端测试:ssh root@IP 提示密码错误,无法登录

实验 3:配置登录白名单

需求:仅 test 用户可远程登录,其他账号拒绝

bash 复制代码
vim /etc/ssh/sshd_config
# 添加一行
AllowUsers test

systemctl restart ssh
# 测试:test 可登录,root/其他用户被拒绝

实验 4:密钥免密登录(重点,运维高频)

拓扑:

客户端:192.168.168.92

服务端:192.168.168.91

目标:客户端 root 免密登录服务端 root

步骤 1:客户端生成密钥对

bash 复制代码
# 生成密钥,-P 空密码,无需交互
ssh-keygen -f /root/.ssh/id_rsa -P ""
# 查看生成的公钥、私钥
ll /root/.ssh/
# id_rsa:私钥(保密)  id_rsa.pub:公钥(分发)

步骤 2:上传公钥到服务端

bash 复制代码
# 一键上传公钥到服务端 /root/.ssh/authorized_keys
ssh-copy-id root@192.168.91

步骤 3:测试免密登录

bash 复制代码
ssh root@192.168.91
# 直接登录,无需输入密码 = 成功

3.4 Windows 客户端密钥登录补充

  1. MobaXterm:终端内执行 ssh-keygen + ssh-copy-id,用法和 Linux 一致
  2. Xshell / MobaKeyGen:图形化生成密钥 → 复制公钥到服务器 ~/.ssh/authorized_keys,登录时选择私钥即可。

第四章 Nginx Web 服务(静态网站 + 虚拟主机 + HTTPS)

4.1 Web 服务基础

4.1.1 基础概念

  • Web 服务:基于 HTTP/HTTPS 提供网页访问
  • 主流软件:Nginx、Apache、Tomcat、IIS
  • HTTP 端口:8 ;HTTPS 端口:443
  • 网页根目录(Nginx 默认):/usr/share/nginx/html

4.1.2 HTTP 状态码

分类 含义 常见码
2xx 成功 请求正常 200 正常访问
3xx 重定向 跳转页面 301 永久跳转
4xx 客户端错误 访问异常 404 页面不存在、403 权限拒绝
5xx 服务端错误 服务故障 500 服务器报错、503 服务不可用

4.2 Nginx 基础部署

4.2.1 安装 & 启停

bash 复制代码
# 安装
yum install nginx -y
# 启动、开机自启
systemctl enable --now nginx
# 查看状态
systemctl status nginx
# 查看进程(master主进程 + worker工作进程)
ps -ef | grep nginx

4.2.2 Nginx 自带命令(常用)

bash 复制代码
nginx -v          # 查看版本
nginx -t          # 检查配置文件语法(必做!)
nginx -s reload   # 平滑重载配置(不中断服务)
nginx -s stop     # 强制停止
nginx -s quit     # 优雅停止

4.2.3 核心目录

bash 复制代码
/etc/nginx/          # 主配置目录
├── nginx.conf       # 主配置文件
└── conf.d/          # 子配置目录(虚拟主机推荐放这里)
/usr/share/nginx/html  # 默认网页根目录
/var/log/nginx/     # 日志(access.log 访问日志、error.log 错误日志)

4.2.4 主配置文件结构

四层结构(从上到下):

  1. 全局块:运行用户、进程数
  2. events 块:连接数、事件模型
  3. http 块:全局网页配置
  4. server 块:虚拟主机(单个网站)
  5. location 块:匹配访问路径

4.2.5 关键指令区分

  1. root:拼接路径 root路径 + 访问路径
  2. alias:直接指向指定路径,不拼接,末尾必须加 /

4.3 Nginx 基础实战

实验 1:修改默认首页

bash 复制代码
# 写入自定义网页内容
echo "Welcome to Nginx Test Page" > /usr/share/nginx/html/index.html
# 重载配置
nginx -s reload
# 本地测试
curl 127.0.0.1
# 浏览器访问服务器IP

实验 2:修改网页根目录

需求:网页目录改为 /www/date

bash 复制代码
# 创建目录
mkdir -pv /www/date
# 编写网页(可写入HTML代码)
vim /www/date/index.html
# 编辑 nginx 主配置
vim /etc/nginx/nginx.conf
# 在 server 块修改 root 路径
root /www/date;

# 检查配置 + 重载
nginx -t
nginx -s reload
# 访问测试

实验 3:网页密码认证

需求:访问网站需要账号密码登录

bash 复制代码
# 安装密码工具
yum install httpd-tools -y
# 创建密码文件,新增用户 boss
htpasswd -c /etc/nginx/passwd boss
# 追加第二个用户 caiwu
htpasswd /etc/nginx/passwd

# 修改网站配置,添加认证
vim /etc/nginx/nginx.conf
server {
    auth_basic "请输入登录账号";
    auth_basic_user_file /etc/nginx/passwd;
    # 其他配置不变
}

nginx -t && nginx -s reload
# 浏览器访问,弹出登录框

实验 4:目录浏览(文件下载站)

开启目录索引,直接浏览服务器文件

bash 复制代码
vim /etc/nginx/nginx.conf
location / {
    autoindex on;        # 开启目录浏览
    autoindex_localtime on; # 显示服务器时间
}
nginx -s reload

4.4 Nginx 虚拟主机(一台服务器跑多个网站)

三种实现方式:IP、端口、域名

实验 1:基于端口的虚拟主机

单 IP,不同端口对应不同网站:

1.创建网页目录

bash 复制代码
mkdir /www/port10000 /www/port20000
echo "port10000" > /www/port10000/index.html
echo "port20000" > /www/port20000/index.html

2.新建子配置

bash 复制代码
vim /etc/nginx/conf/port.conf
server {
    listen 10000;
    root /www/port10000;
}
server {
    listen 20000;
    root /www/port20000;
}
  1. 重载测试
bash 复制代码
nginx -t && nginx -s reload
curl 192.168.91:10000
curl 192.168.91:20000

实验 2:基于域名的虚拟主机(生产最常用)

同一 IP、同一端口,不同域名区分网站

1.配置本地域名解析(hosts)

bash 复制代码
# Linux / Windows 都可修改 hosts,模拟域名
vim /etc/hosts
192.168.168.91  www.rhcetest1.com test.jungle.org

2.网站目录 + 页面

bash 复制代码
mkdir /www/rhce /www/jungle
echo www.rhcetest1.com > /www/rhce/index.html
echo test.jungle.org > /www/jungle/index.html

3.域名虚拟主机配置

bash 复制代码
vim /etc/nginx/conf.d/name.conf
server {
    listen 80;
    server_name www.rhcetest1.com;
    root /www/rhce;
}
server {
    listen 80;
    server_name test.jungle.org;
    root /www/jungle;
}

4.测试

bash 复制代码
curl www.rhcetest1.com
curl test.jungle.org

4.5 HTTPS 加密网站(80 转 443)

HTTP 明文不安全,HTTPS 基于 SSL/TLS 加密,端口443

步骤 1:生成自签名证书

bash 复制代码
# 使用 openssl 生成证书+私钥
openssl req -x509 -newkey rsa:2048 -nodes -days 365 \
-keyout /etc/nginx/conf.d/https.key \
-out /etc/nginx/conf.d/https.crt
# 按提示填写国家、城市、域名等信息

步骤 2:配置 HTTPS + 80 强制跳转

bash 复制代码
vim /etc/nginx/conf.d/https.conf
# HTTPS 站点
server {
    listen 443 ssl;
    server_name 192.168.168.91;
    ssl_certificate /etc/nginx/conf.d/https.crt;
    ssl_certificate_key /etc/nginx/conf.d/https.key;
    root /www/https;
}
# 80 端口自动跳转到 HTTPS
server {
    listen 80;
    server_name 192.168.91;
    return 301 https://$host$request_uri;
}

步骤 3:测试

bash 复制代码
mkdir /www/https
echo "HTTPS 站点" > /www/https/index.html
nginx -t && nginx -s reload
# 访问 http 自动跳转 https
curl -Lk http://192.168.91

第五章 NFS 网络文件共享服务

5.1 服务简介

  • NFS:网络文件系统,实现跨主机文件共享
  • 依赖 RPC 服务(端口 111):NFS 随机端口,RPC 负责端口注册与分发
  • 端口:RPC=111,NFS 主端口 = 2049
  • 应用:集群共享存储、网站图片 / 附件统一存放

5.2 核心配置文件

主配置:/etc/exports

格式:共享目录 客户端(权限参数)

常用权限参数

参数 说明
ro 只读
rw 读写
root_squash 客户端 root 映射为匿名 nobody(默认,安全)
all_squash 所有用户均映射为匿名
anonuid/anongid 指定映射的 UID/GID

5.3 实战部署

环境:

服务端:192.168.168.91

客户端:192.168.168.92

实验 1:只读共享

1.服务端配置

bash 复制代码
yum install nfs-utils -y
mkdir /test1
echo "read only file" > /test1/file1
vim /etc/exports
/test1 *(ro)  # 所有客户端只读

systemctl enable --now nfs-server
# 查看共享
showmount -e

2.客户端挂载

bash 复制代码
yum install nfs-utils -y
showmount -e 192.168.91
mkdir /client/t1
mount 192.168.91:/test1 /client/t1
# 测试:无法新建文件(只读)
touch /client/t1/test

实验 2:读写共享

bash 复制代码
# 服务端
mkdir /test2
echo "read write file" > /test2/file1
chmod o=rwx /test2  # 开放其他用户权限
vim /etc/exports
/test2 *(rw)

systemctl restart nfs-server
# 客户端挂载测试,可正常新建文件

实验 3:指定 UID/GID 映射

所有客户端用户统一映射为指定账号:

bash 复制代码
# 服务端
mkdir /test3
vim /etc/exports
/test3 *(rw,all_squash,anonuid=2000,anongid=3000)
chmod o=rwx /test3
systemctl restart nfs-server

# 客户端挂载后,新建文件属主为 2000:3000

实验 4:开机自动挂载(fstab)

重启不丢失挂载:

bash 复制代码
vim /etc/fstab
# 格式:服务端共享  挂载点  文件类型  参数  0 0
192.168.91:/test1  /client/t1  nfs  defaults,_netdev  0 0

# 生效
mount -a
df -h

实验 5:autofs 自动挂载(按需挂载)

优势:无人访问自动卸载,节省资源

bash 复制代码
# 客户端安装
yum install autofs -y
# 主配置
vim /etc/auto.master
/nfs  /etc/auto.nfs
# 子配置
vim /etc/auto.nfs
t4  192.168.91:/test4

systemctl enable --now autofs
# 访问 /nfs/t4 自动挂载,超时自动卸载

第六章 DNS 域名解析服务(Bind)

6.1 基础概念

  • DNS:域名 ↔ IP 相互解析
  • 正向解析:域名 → IP(最常用)
  • 反向解析:IP → 域名
  • 端口:53(TCP/UDP)
  • 软件:bind

6.2 核心配置文件

  1. 主配置:/etc/named.conf
  2. 区域配置:/etc/named.rfc1912.zones
  3. 解析数据文件:/var/named/

6.3 实战部署

实验 1:正向解析(域名解析 IP)

目标:www.jungle.org → 192.168.168.100

  1. 安装启动
bash 复制代码
yum install bind -y
systemctl enable --now named
  1. 主配置修改(允许所有主机查询)
bash 复制代码
vim /etc/named.conf
listen-on port 53 { any; };
allow-query { any; };

3.新增区域

bash 复制代码
vim /etc/named.rfc1912.zones
zone "jungle.org" IN {
    type master;
    file "jungle.org";
};
  1. 新建解析数据文件
bash 复制代码
cp /var/named/named.localhost /var/named/jungle.org
vim /var/named/jungle.org
# 编写解析记录(A记录)
$TTL 1D
@ IN SOA ns.jungle.org. admin.jungle.org. (
0 1D 1H 1W 3H
)
IN NS ns.jungle.org.
ns IN A 192.168.91
www IN A 192.168.100

5.重启 + 测试

bash 复制代码
systemctl restart named
# 客户端指定DNS为服务器IP
nslookup www.jungle.org 192.168.91

实验 2:反向解析(IP 解析域名)

IP 192.168.168.100 → www.jungle.org

1.新增反向区域

bash 复制代码
vim /etc/named.rfc1912.zones
zone "168.192.in-addr.arpa" IN {
    type master;
    file "168.192";
};

2.反向数据文件

bash 复制代码
cp /var/named/named.loopback /var/named/168.192
vim /var/named/168.192
$TTL 1D
@ IN SOA ns.jungle.org. admin.jungle.org. (
0 1D 1H 1W 3H
)
IN NS ns.jungle.org.
91 IN PTR ns.jungle.org.
100 IN PTR www.jungle.org.
  1. 测试
bash 复制代码
nslookup 192.168.100

实验 3:主从 DNS(备份解析)

  • 主 DNS:192.168.91
  • 从 DNS:192.168.93
  1. 主配置:添加允许区域传输

    bash 复制代码
    zone "jungle.org" IN {
        type master;
        file "jungle.org";
        allow-transfer { 192.168.93; };
    };
  2. 从服务器配置(type slave)

    bash 复制代码
    zone "jungle.org" IN {
        type slave;
        masters { 192.168.91; };
        file "slaves/jungle.org";
    };
  3. 重启从服务,自动同步解析文件,两台服务器均可解析

第七章 MySQL 数据库服务

7.1 安装与基础使用(RHEL9)

bash 复制代码
# 安装
yum install mysql-server -y
# 启动开机自启
systemctl enable --now mysqld
# 初始空密码登录
mysql -uroot
# 修改root密码
mysqladmin -uroot password '123456'
# 带密码登录
mysql -uroot -p123456

7.2 基础操作

bash 复制代码
-- 创建数据库
create database testdb;
-- 创建表
create table testdb.t1(id int,name varchar(20));
-- 插入数据
insert into testdb.t1 values(1,'zhangsan');
-- 查询数据
select * from testdb.t1;

7.3 远程授权

允许外网用户登录:

bash 复制代码
create user test@'%' identified by '123';
grant all privileges on *.* to test@'%';
flush privileges;

第八章 补充:SELinux & 防火墙(服务排错重点)

8.1 SELinux(安全上下文)

常用命令

bash 复制代码
getenforce          # 查看状态
setenforce 0/1      # 临时开关
chcon               # 临时修改安全上下文
semanage fcontext   # 永久修改上下文
restorecon          # 恢复默认上下文
getsebool/setsebool # 布尔值开关

常见排错场景

  1. Nginx 无法读取自定义网页目录 → 修改 httpd 上下文
  2. SSH/Nginx 改端口无法启动 → 添加端口安全规则

8.2 Firewalld 防火墙(RHEL 默认)

bash 复制代码
# 放行http服务
firewall-cmd --permanent --add-service=http
# 放行端口
firewall-cmd --permanent --add-port=2222/tcp
# 重载生效
firewall-cmd --reload
# 查看规则
firewall-cmd --list-all