Linux(CentOS)系统管理入门笔记(第二十二期)——SELinux 安全加固——上下文、布尔值与故障排查
Linux系统管理入门系列更多文章欢迎访问:
Linux入门——系统管理1、Linux入门——系统管理2
我的主页:AOwhisky,这里有更多运维系统性知识整理和其他有趣内容,欢迎与我一起探讨学习~
引言:Linux 安全的“第二道锁”——当文件权限不够用的时候
我们学习了文件权限(rwx)、用户管理(UID/GID)和防火墙(firewalld)。这些都是 Linux 安全体系的重要组成部分。但有一个问题始终存在:文件权限只能控制“谁能访问”,无法控制“怎么访问”。
想象一下:你有一栋大楼,每间办公室都有门锁(文件权限)——只有特定的人(用户/组)才能进入。但如果某个员工被黑客控制了,黑客假扮成这个员工进入大楼,他就能自由访问这个员工有权进入的所有房间。
这就是 Linux 文件权限模型的本质缺陷——权限绑定的是“身份”,而不是“行为”。
- Web 服务器进程(以 apache 用户运行)可以访问 /var/www/html——这是正常的
- 但如果黑客攻破了 Web 服务器,同样的 apache 进程还可能访问 /tmp、/var/tmp,甚至通过漏洞读取 /etc/passwd——这是灾难!
SELinux(Security-Enhanced Linux,安全增强 Linux) 解决了这个问题。它为每个进程、文件、目录、端口都打上了一个“安全标签”(SELinux 上下文),并定义了一套严格的访问规则——即使你是 root,如果 SELinux 策略不允许,你也无法执行某个操作。
传统 DAC(自主访问控制): SELinux MAC(强制访问控制):
“你是谁,决定了你能干什么” “你的标签是什么,决定了你能干什么”
↓ ↓
用户身份(UID) 安全上下文(上下文)
SELinux 不是替代文件权限,而是在其之上构建的第二道防线。它以 最小权限原则 为核心——默认拒绝所有操作,只有明确允许的才能执行。
本期将系统学习 SELinux 的核心概念与实战管理:
- SELinux 概述:DAC vs MAC、SELinux 的目标
- SELinux 模式:Enforcing / Permissive / Disabled
- 安全上下文管理:文件、进程、端口的标签
- SELinux 布尔值:开关式策略调整
- 故障排查:setroubleshoot 与 sealert 诊断工具
读完这一期,你将掌握 Linux 安全体系中最深层的防御机制——从“能访问”到“能安全访问”的跃升。
— Compiled and Authored by Whisky — Augest 2
nd, 2026
目录
- 1.1 DAC vs MAC
- 1.2 SELinux 的目标
- 2.1 三种模式详解
- 2.2 查看与设置模式
- 2.3 模式切换注意事项
- 3.1 上下文的结构与 -Z 选项
- 3.2 新文件的默认上下文
- 3.3 chcon:临时修改上下文
- 3.4 restorecon:恢复默认上下文
- 3.5 semanage fcontext:永久定义默认上下文
- 3.6 实战:配置自定义 Web 目录
- 4.1 端口标签的概念
- 4.2 查看与添加端口标签
- 4.3 实战:Web 服务使用自定义端口
- 5.1 什么是布尔值
- 5.2 查看与设置布尔值
- 5.3 实战:允许 httpd 访问用户家目录
- 6.1 setroubleshoot-server:自动诊断
- 6.2 sealert:详细排查工具
- 6.3 SELinux 问题处理思路
1. SELinux 概述:文件权限之外的“行为管控”
1.1 DAC vs MAC
| DAC | Discretionary Access Control(自主访问控制) | 用户身份(UID/GID) | Linux 文件权限(rwx) |
| MAC | Mandatory Access Control(强制访问控制) | 安全标签/上下文 | SELinux、AppArmor |
DAC 的本质:由文件所有者自主决定谁可以访问(chmod/chown)。root 用户可以访问任何文件——这对安全来说是巨大的风险。
MAC 的本质:由系统策略强制规定——即使你是 root,如果没有匹配的安全标签,操作也会被拒绝。
# 即使 root 用户,SELinux 策略也可以阻止操作
[root@centos7 ~]# echo test > /var/www/html/index.html
-bash: /var/www/html/index.html: Permission denied
# 明明是 root,却被拒绝了——这就是 SELinux 在起作用!
1.2 SELinux 的目标
主要目标:防止已遭泄露的系统服务访问用户数据。
场景:黑客攻破了 Web 服务器(apache 进程),获得了 apache 用户的权限。在传统的 DAC 模型下,apache 用户可能能访问 /tmp、/var/tmp 甚至读取 /etc/passwd。
在 SELinux 的保护下:
- apache 进程的标签是 httpd_t
- /var/www/html 文件的标签是 httpd_sys_content_t
- /tmp 目录的标签是 tmp_t
- SELinux 策略规定:httpd_t 只允许访问 httpd_sys_content_t 标签的文件
- 即使 apache 用户有权限访问 /tmp,SELinux 策略也会阻止——因为标签不匹配!
💡 白话理解:文件权限是“门禁卡”(谁有卡能进门),SELinux 是“保安”(即使有卡,保安不批准也不能进,也不能去不该去的地方)。
2. SELinux 工作模式
2.1 三种模式详解
| Enforcing(强制) | ✅ 强制执行 | ✅ 记录 | 生产环境 |
| Permissive(允许) | ❌ 不强制(仅警告) | ✅ 记录 | 调试/测试 |
| Disabled(禁用) | ❌ 完全关闭 | ❌ 不记录 | ❌ 不推荐 |
# 查看当前模式
[root@centos7 ~]# getenforce
Enforcing
2.2 查看与设置模式
# 查看当前模式
[root@centos7 ~]# getenforce
# 临时切换模式(立即生效,无需重启)
[root@centos7 ~]# setenforce 0 # 切换到 Permissive
[root@centos7 ~]# setenforce 1 # 切换到 Enforcing
# 或使用名称
[root@centos7 ~]# setenforce Permissive
[root@centos7 ~]# setenforce Enforcing
# 永久设置(修改配置文件,需重启)
[root@centos7 ~]# vim /etc/selinux/config
SELINUX=enforcing # 可选:enforcing / permissive / disabled
SELINUXTYPE=targeted # 策略类型:targeted 是默认
模式切换注意事项:
| Enforcing ↔ Permissive | ❌ 不需要 |
| Enforcing → Disabled | ✅ 需要重启 |
| Disabled → Enforcing/Permissive | ✅ 需要重启 |
2.3 内核参数启动时设置 SELinux 模式
在 GRUB2 启动菜单中可通过内核参数控制 SELinux 模式(常用于故障修复):
| enforcing=0 | 启动时进入 Permissive 模式 |
| enforcing=1 | 启动时进入 Enforcing 模式(默认) |
| selinux=0 | 完全禁用 SELinux |
3. SELinux 安全上下文
3.1 上下文的结构与 -Z 选项
SELinux 安全上下文格式:
用户:角色:类型:敏感度
| 用户(user) | SELinux 用户身份,与 Linux 用户不同 | unconfined_u、system_u |
| 角色(role) | 进程角色(进程是 _r,文件是 _r) | object_r |
| 类型(type) | 核心部分,以 _t 结尾,策略基于类型匹配 | httpd_t、httpd_sys_content_t |
| 敏感度(level) | MLS/MCS 安全级别(多级安全) | s0、s0-s0:c0.c1023 |
使用 -Z 查看安全上下文:
# 查看进程的安全上下文
[root@centos7 ~]# ps -Z
LABEL PID TTY TIME CMD
system_u:system_r:sshd_t:s0-s0:c0.c1023 951 ? 00:00:00 sshd
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 1276 pts/0 00:00:00 bash
# 查看文件的安全上下文
[root@centos7 ~]# ls -Z /etc/hosts
system_u:object_r:net_conf_t:s0 /etc/hosts
# 查看目录的安全上下文
[root@centos7 ~]# ls -Zd /var/www/html
system_u:object_r:httpd_sys_content_t:s0 /var/www/html
⚠️ 关键理解:SELinux 基于 类型(type) 做访问控制,而不是用户或角色。httpd_t 能访问 httpd_sys_content_t,但不能访问 tmp_t。
3.2 新文件的默认上下文
新文件通常从父目录继承 SELinux 上下文。
# 在 /tmp 中创建文件(继承 tmp_t)
[root@centos7 ~]# touch /tmp/testfile
[root@centos7 ~]# ls -Z /tmp/testfile
unconfined_u:object_r:user_tmp_t:s0 /tmp/testfile
# 复制到 /root(继承 admin_home_t)
[root@centos7 ~]# cp /tmp/testfile /root/
[root@centos7 ~]# ls -Z /root/testfile
unconfined_u:object_r:admin_home_t:s0 /root/testfile
两种情况上下文保持不变:
| cp -a(保留属性) | ❌ 不变 |
| mv(移动) | ❌ 不变 |
# 移动文件,上下文不变(仍是 user_tmp_t,但位置在 /root)
[root@centos7 ~]# mv /tmp/testfile /root/testfile-mv
[root@centos7 ~]# ls -Z /root/testfile-mv
unconfined_u:object_r:user_tmp_t:s0 /root/testfile-mv
# 这可能导致 SELinux 问题——文件在 root 家目录,但标签是 tmp_t!
3.3 chcon:临时修改上下文
chcon 用于直接修改文件的 SELinux 上下文,适用于测试和调试。
# 创建目录并查看上下文
[root@centos7 ~]# mkdir /www
[root@centos7 ~]# ls -Zd /www
unconfined_u:object_r:default_t:s0 /www
# 修改上下文(改为 httpd_sys_content_t)
[root@centos7 ~]# chcon -t httpd_sys_content_t /www
[root@centos7 ~]# ls -Zd /www
unconfined_u:object_r:httpd_sys_content_t:s0 /www
# 使用 -R 递归修改
[root@centos7 ~]# chcon -R -t httpd_sys_content_t /www
⚠️ 重要:chcon 的修改不会保存到 SELinux 策略数据库。当系统执行 restorecon 或完整 relabel 时,修改会被重置。
3.4 restorecon:恢复默认上下文
restorecon 根据 SELinux 策略数据库中的规则,恢复文件的默认上下文。
# 恢复单个文件的上下文
[root@centos7 ~]# restorecon -v /www
Relabeled /www from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:default_t:s0
# -v:显示恢复过程
# 递归恢复目录下所有文件
[root@centos7 ~]# restorecon -Rv /www/
3.5 semanage fcontext:永久定义默认上下文
semanage fcontext 在 SELinux 策略数据库中添加/删除/修改上下文规则,restorecon 将依据这些规则恢复上下文。
# 安装 semanage 工具
[root@centos7 ~]# yum install -y policycoreutils-python-utils
# 为 /www 目录定义默认上下文(使用正则表达式匹配所有子文件)
[root@centos7 ~]# semanage fcontext -a -t httpd_sys_content_t '/www(/.*)?'
# 查看自定义规则
[root@centos7 ~]# semanage fcontext -lC
SELinux fcontext type Context
/www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
# 恢复上下文
[root@centos7 ~]# restorecon -Rv /www/
Relabeled /www from unconfined_u:object_r:default_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
# 删除自定义规则
[root@centos7 ~]# semanage fcontext -d -t httpd_sys_content_t '/www(/.*)?'
# 验证删除
[root@centos7 ~]# semanage fcontext -lC
# 无输出
3.6 实战:配置自定义 Web 目录
场景:将 Web 服务的主目录从 /var/www/html 改为 /www。
# 1. 创建自定义 Web 目录
[root@centos7 ~]# mkdir /www
[root@centos7 ~]# echo "<h1>Hello SELinux</h1>" > /www/index.html
# 2. 配置 httpd 主目录
[root@centos7 ~]# vim /etc/httpd/conf/httpd.conf
DocumentRoot "/www"
<Directory "/www">
AllowOverride None
Require all granted
</Directory>
# 3. 尝试启动(失败!SELinux 阻止)
[root@centos7 ~]# systemctl start httpd
Job for httpd.service failed because the control process exited with error code.
[root@centos7 ~]# tail /var/log/messages
... SELinux is preventing httpd from getattr access on the directory /www ...
# 4. 永久修改 SELinux 上下文
[root@centos7 ~]# semanage fcontext -a -t httpd_sys_content_t '/www(/.*)?'
[root@centos7 ~]# restorecon -Rv /www/
# 5. 启动成功
[root@centos7 ~]# systemctl start httpd
[root@centos7 ~]# curl http://localhost/
<h1>Hello SELinux</h1>
4. SELinux 端口管理
4.1 端口标签的概念
SELinux 不仅给文件打标签,还给网络端口打标签。当服务进程尝试绑定到某个端口时,SELinux 检查:
- 进程的域(如 httpd_t)是否被允许绑定到该端口标签(如 http_port_t)
# 查看端口标签
[root@centos7 ~]# semanage port -l | grep http_port_t
http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000
# 注意:httpd 服务可以绑定到这些端口
4.2 查看与添加端口标签
# 查看所有端口标签(仅查看自定义的用 -lC)
[root@centos7 ~]# semanage port -l
# 添加端口标签(将 18020 端口标记为 http_port_t)
[root@centos7 ~]# semanage port -a -t http_port_t -p tcp 18020
# 修改端口标签(将 18020 改为 ssh_port_t)
[root@centos7 ~]# semanage port -m -t ssh_port_t -p tcp 18020
# 删除端口标签
[root@centos7 ~]# semanage port -d -t ssh_port_t -p tcp 18020
# 查看自定义的端口标签
[root@centos7 ~]# semanage port -lC
SELinux Port Type Proto Port Number
http_port_t tcp 18020
4.3 实战:Web 服务使用自定义端口
场景:让 httpd 监听在 18020 端口。
# 1. 修改 httpd 配置文件
[root@centos7 ~]# vim /etc/httpd/conf/httpd.conf
Listen 18020
# 2. 尝试启动(失败——SELinux 阻止绑定非标准端口)
[root@centos7 ~]# systemctl restart httpd
Job for httpd.service failed...
[root@centos7 ~]# tail /var/log/messages
... AH00072: make_sock: could not bind to address 0.0.0.0:18020
# 3. 将端口添加到 http_port_t 标签
[root@centos7 ~]# semanage port -a -t http_port_t -p tcp 18020
# 4. 再次启动成功
[root@centos7 ~]# systemctl restart httpd
[root@centos7 ~]# curl http://localhost:18020/
<h1>Hello SELinux</h1>
5. SELinux 布尔值
5.1 什么是布尔值
SELinux 布尔值是可以在运行时动态开启/关闭的策略开关,用于调整特定功能的行为,而无需修改复杂的策略规则。
布尔值就像是 SELinux 策略的“开关面板”
– 每个开关控制一个特定的功能
– 可以随时打开或关闭
– 无需重启系统
5.2 查看与设置布尔值
# 查看所有布尔值
[root@centos7 ~]# getsebool -a
httpd_enable_homedirs —> off
httpd_unified —> off
...
# 查看特定布尔值
[root@centos7 ~]# getsebool httpd_enable_homedirs
httpd_enable_homedirs —> off
# 临时设置布尔值(运行时生效,重启后恢复)
[root@centos7 ~]# setsebool httpd_enable_homedirs=1
# 或使用 on/off/true/false
[root@centos7 ~]# setsebool httpd_enable_homedirs on
# 永久设置(写入策略数据库,重启后仍生效)-P
[root@centos7 ~]# setsebool -P httpd_enable_homedirs=1
# 使用 semanage 管理布尔值
[root@centos7 ~]# semanage boolean -l # 查看所有
[root@centos7 ~]# semanage boolean -lC # 只查看自定义的
[root@centos7 ~]# semanage boolean -m –on httpd_enable_homedirs # 启用
[root@centos7 ~]# semanage boolean -m –off httpd_enable_homedirs # 禁用
5.3 实战:允许 httpd 访问用户家目录
场景:允许用户通过 ~username URL 访问自己的 public_html 目录。
# 1. 配置 httpd 启用 UserDir
[root@centos7 ~]# vim /etc/httpd/conf.d/userdir.conf
UserDir enabled
UserDir public_html
# 2. 用户创建 public_html 目录并写入文件
[whisky@centos7 ~]$ mkdir ~/public_html
[whisky@centos7 ~]$ echo "Welcome to whisky's home" > ~/public_html/index.html
# 3. 确保用户家目录有执行权限(其他人可进入)
[whisky@centos7 ~]$ chmod 711 ~
# 4. 尝试访问(SELinux 阻止!)
[root@centos7 ~]# curl http://localhost/~whisky/
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head><title>403 Forbidden</title></head><body>...
# 5. 启用 httpd_enable_homedirs 布尔值
[root@centos7 ~]# setsebool -P httpd_enable_homedirs=1
# 6. 再次访问
[root@centos7 ~]# curl http://localhost/~whisky/
Welcome to whisky's home
6. SELinux 故障排查
6.1 setroubleshoot-server:自动诊断
setroubleshoot-server 服务会自动监控 SELinux 拒绝事件(AVC 消息),并将诊断摘要发送到 /var/log/messages。
# 安装
[root@centos7 ~]# yum install -y setroubleshoot-server
# 服务已集成,无需额外启动
# 触发一个 SELinux 错误后查看日志
[root@centos7 ~]# tail -f /var/log/messages
Nov 30 10:39:34 server setroubleshoot[4035]: SELinux is preventing /usr/sbin/httpd from getattr access on the file /home/whisky/public_html/index.html. For complete SELinux messages run: sealert -l bb10b03c-bed2-4853-85cb-92c1824fd75d
6.2 sealert:详细排查工具
根据 /var/log/messages 中的提示,使用 sealert 获取完整诊断信息:
[root@centos7 ~]# sealert -l bb10b03c-bed2-4853-85cb-92c1824fd75d
SELinux is preventing /usr/sbin/httpd from getattr access on the file /home/whisky/public_html/index.html.
***** Plugin public_content (32.5 confidence) suggests ********************
If you want to treat index.html as public content
Then you need to change the label on index.html to public_content_t or public_content_rw_t.
Do
# semanage fcontext -a -t public_content_t '/home/whisky/public_html/index.html'
# restorecon -v '/home/whisky/public_html/index.html'
***** Plugin catchall_boolean (32.5 confidence) suggests ******************
If you want to allow httpd to enable homedirs
Then you must tell SELinux about this by enabling the 'httpd_enable_homedirs' boolean.
Do
setsebool -P httpd_enable_homedirs 1
...
sealert 给出了具体的解决方案,通常有多个选项:
| 修改文件上下文(semanage fcontext + restorecon) | 文件标签不正确 |
| 调整布尔值(setsebool -P) | 功能开关未启用 |
| 修改端口标签(semanage port) | 服务使用非标准端口 |
6.3 SELinux 问题处理思路
1. 确认是否 SELinux 引起的
└─ tail -f /var/log/messages 或 audit2why < /var/log/audit/audit.log
2. 判断这个拒绝是正常的还是误报
└─ 如果是正常的阻止(如 httpd 访问 /home),说明 SELinux 在正确工作
└─ 如果是误报(需要被允许),继续↓
3. 最常见的 SELinux 问题:文件上下文不正确
└─ 文件从其他地方移动过来,上下文不匹配
└─ 解决方法:restorecon -Rv /path
4. 布尔值设置不当
└─ 如 httpd_enable_homedirs、ftpd_anon_write 等
└─ 解决方法:setsebool -P 布尔值=1
5. 端口上下文不匹配
└─ 服务绑定到非标准端口
└─ 解决方法:semanage port -a -t 标签 -p 协议 端口
6. SELinux 策略 Bug(极少见)
└─ 使用 audit2allow 生成自定义策略模块
7. 总结与速查手册
7.1 核心知识点一览
| SELinux 目标 | 防止已遭泄露的系统服务访问用户数据 |
| 三种模式 | Enforcing(强制)、Permissive(允许)、Disabled(禁用) |
| 安全上下文 | 用户:角色:类型:敏感度,基于 类型(type) 做访问控制 |
| chcon | 临时修改上下文(不持久化) |
| restorecon | 根据策略数据库恢复默认上下文 |
| semanage fcontext | 永久定义默认上下文规则 |
| semanage port | 管理端口标签 |
| 布尔值 | 开关式调整 SELinux 策略行为 |
| setroubleshoot | 自动诊断 SELinux 问题 |
7.2 命令速查表
| getenforce | 查看当前模式 |
| `setenforce 0 | 1` |
| /etc/selinux/config | 永久配置 |
| ls -Z / ps -Z | 查看安全上下文 |
| chcon -t 类型 文件 | 临时修改上下文 |
| restorecon -Rv 目录 | 恢复默认上下文 |
| semanage fcontext -a -t 类型 '正则' | 添加默认上下文规则 |
| semanage fcontext -lC | 查看自定义上下文规则 |
| semanage port -a -t 类型 -p 协议 端口 | 添加端口标签 |
| semanage port -lC | 查看自定义端口标签 |
| getsebool -a | 查看所有布尔值 |
| setsebool -P 布尔值=1 | 永久启用布尔值 |
| sealert -l UUID | 查看 SELinux 问题详情 |
7.3 常用 SELinux 类型速查
| httpd_t | httpd 进程域 |
| httpd_sys_content_t | Web 服务器的文档内容 |
| httpd_sys_script_exec_t | CGI 脚本 |
| http_port_t | httpd 绑定的端口 |
| ssh_port_t | SSH 端口 |
| tmp_t | /tmp 目录中的文件 |
| user_home_dir_t | 用户家目录 |
| public_content_t | 公共内容(如匿名 FTP) |
7.4 SELinux 工作模式速查
| Enforcing | ✅ | ✅ | 设为默认需重启 |
| Permissive | ❌ | ✅ | 设为默认需重启 |
| Disabled | ❌ | ❌ | 必须重启 |
7.5 常见错误排查
| 服务启动失败,日志有 Permission denied | SELinux 阻止 | 查看 /var/log/messages,用 sealert 诊断 |
| 文件访问被拒 | 上下文不匹配 | restorecon -Rv /path |
| 服务无法绑定端口 | 端口标签未添加 | semanage port -a -t 标签 -p tcp 端口 |
| 功能需要特殊权限 | 布尔值未启用 | getsebool 查找,setsebool -P 启用 |
| 禁用 SELinux 后想重新启用 | config 中设为 disabled | 将 SELINUX=disabled 改为 enforcing,重启,系统会重新标记 |
7.6 思考与拓展(原课后作业转化)
7.7 生产环境最佳实践
| 生产环境 | 保持 SELINUX=enforcing,不要禁用 |
| 应用部署 | 遵循标准的目录和上下文规范,必要时使用 semanage fcontext 定义自定义规则 |
| 故障排查 | 先切换到 Permissive 模式确认是 SELinux 问题,修复后切回 Enforcing |
| 新服务部署 | 使用 sealert 获取正确的修复建议,而非盲目禁用 SELinux |
| 软件升级 | 升级后检查 SELinux 策略更新,必要时执行 restorecon -Rv / |
| 监控 | 监控 /var/log/messages 中的 SELinux 告警,及时处理 |
系列结语
至此,Linux(CentOS)系统管理入门笔记 系列全部 22 期内容已完整呈现。我们从 Linux 的历史哲学出发,走过了命令行基础、文件系统管理、用户权限体系、存储管理(分区/RAID/LVM/Swap)、启动原理与故障恢复、防火墙和 SELinux 安全加固——覆盖了 Linux 系统管理员从入门到实战所需的完整知识体系。
这个系列的特点是:
- 理论与实践并重:每个概念都有可执行的命令和清晰的输出解读
- 循序渐进:从零到一,从“会敲命令”到“懂系统原理”
- 生产导向:每期结尾都有生产环境最佳实践和常见问题排查
记住,真正的 Linux 管理员不是“记住所有命令的人”,而是“知道去哪里查、怎么组合工具、如何排查问题”的人。
愿你在 Linux 的世界里,越走越远,越走越深。
下个系列预告:至此,你已经掌握了 Linux 系统管理的完整技能——从命令行基础、文件系统、用户权限,到进程管理、存储管理、系统启动、防火墙与 SELinux 安全加固。这是一名合格系统管理员的核心能力。
但系统管理的终点,正是网络服务架设的起点。管理系统是为了运行服务——DHCP 动态分配地址、DNS 解析域名、NFS/SMB 共享文件、Apache/Nginx 提供 Web 服务、MariaDB/MySQL 存储数据、TLS 加密通信……
下一个系列,我们将进入 Linux 网络服务架设学习笔记 的世界,从 DHCP 服务器 开始——学习如何为网络中的设备自动分配 IP 地址、配置网关和 DNS,以及如何部署 DHCP 中继实现跨网段分配。敬请期待!
愿你在 Linux 的世界里,越走越远,越走越深。
— Linux(CentOS)系统管理入门笔记 全系列完 —
— Compiled and Authored by Whisky — Augest 2
nd, 2026
网硕互联帮助中心




评论前必须登录!
注册