CCF样题

keyudong
9
2026-10-18

1. 🌐 配置静态IP地址 (使用 nmtui 命令进入图形界面)

  • Linux-1: IP地址设为 10.10.70.11/24,DNS服务器设为 127.0.0.1

  • Linux-2: IP地址设为 10.10.70.12/24,DNS服务器设为 10.10.70.11

  • Linux-3: IP地址设为 10.10.70.13/24,DNS服务器设为 10.10.70.11

📝 模块二:第一题 (1) Linux DNS 服务配置

【任务要求】 在Linux-1服务器中安装配置 bind服务,负责区域“netdj.net”内主机解析,四台主机分别为dns.netdj.net、mydb.netdj.net、www.netdj.net、samba.netdj.net、data.netdj.net,做好正反向DNS服务解析,禁止172.16.10.0/24网段的主机访问此DNS服务器。

1. 🏷️ 配置各服务器主机名

  • 【Linux-1】: hostnamectl set-hostname dns.netdj.net

  • 【Linux-2】: hostnamectl set-hostname mydb.netdj.net

  • 【Linux-3】: hostnamectl set-hostname www.netdj.net

(配置后可输入 bash 刷新终端显示)

2. 📦 安装 DNS 核心组件

  • 【Linux-1】: yum install -y bind bind-utils

3. ⚙️ 修改 DNS 主配置文件

  • 【Linux-1】: 执行 vi /etc/named.conf

  • 修改点 1(监听与访问控制):

options {

    listen-on port 53 { any; };

    ...

    allow-query     { !172.16.10.0/24; any; };

    ...

};

  • 修改点 2(在文件末尾添加正反向区域声明):

zone "netdj.net" IN {

    type master;

    file "netdj.net.zone";

};

zone "70.10.10.in-addr.arpa" IN {

    type master;

    file "70.10.10.arpa";

};

4. 📝 编写正向解析与反向解析文件

  • 正向解析【Linux-1】: 执行 vi /var/named/netdj.net.zone,输入:

$TTL 1D

@       IN SOA  dns.netdj.net. root.netdj.net. (

                                        0       ; serial

                                        1D      ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        3H )    ; minimum

        IN NS   dns.netdj.net.

dns     IN A    10.10.70.11

mydb    IN A    10.10.70.12

www     IN A    10.10.70.13

samba   IN A   10.10.70.11

data    IN A    10.10.70.11

  • 反向解析【Linux-1】: 执行 vi /var/named/70.10.10.arpa,输入:

$TTL 1D

@       IN SOA  dns.netdj.net. root.netdj.net. (

                                        0       ; serial

                                        1D      ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        3H )    ; minimum

        IN NS   dns.netdj.net.

11      IN PTR  dns.netdj.net.

11      IN PTR  samba.netdj.net.

11      IN PTR  data.netdj.net.

12      IN PTR  mydb.netdj.net.

13      IN PTR  www.netdj.net.

5. 🚀 启动服务并设置开机自启

  • 【Linux-1】:

systemctl start named (启动服务)

systemctl enable named (设置开机自启)

systemctl status named (检查运行状态)

服务跑起来之后,按照标准的工程流程,我们必须在客户端(比如 Linux-2 或 Linux-3)上验证一下 DNS 解析是否真正生效。

【当前操作服务器:Linux-2 和 Linux-3】 请分别在这两台机器的终端里执行以下命令来安装工具:

yum install -y bind-utils

安装完成之后,我们就可以进行验证了。

我们前面提到,测试正向解析(域名转 IP)可以直接输入 nslookup www.netdj.net。那么,如果我们要测试反向解析是否成功(也就是验证 DNS 能不能把 IP 10.10.70.13 成功转换回对应的域名)

📝 模块二:第一题 (2)-(5) Linux Squid 代理服务配置

【任务要求】

(2) 安装Squid,更改代理监听端口为8090,指定DNS服务器为Linux-1的IP。

(3) 设置缓存机制ufs,缓存目录/cache,容量5GB,L1及L2目录数量分别为16和256。

(4) 设置禁止访问.mp4、.avi扩展名后缀的资源。

(5) 设置身份认证,认证方式为基础认证,认证程序进程数为5个,账户信息:proxy_user,密码:user_proxy,存储位置:/squid/squid_user。

📝 模块二:第一题 (2)-(5) Linux Squid 代理服务配置 (最终修正版)

1. 📦 安装服务与工具

  • 【Linux-1】:

yum install -y squid httpd-tools

2. 🔐 创建身份认证密码文件

  • 【Linux-1】:

mkdir -p /squid

htpasswd -c /squid/squid_user proxy_user (回车后连续两次输入密码 user_proxy)

3. 📂 处理缓存目录权限与 SELinux (重要排错)

  • 【Linux-1】:

setenforce 0 (临时关闭 SELinux)

sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config (永久宽容模式)

mkdir -p /cache (创建缓存目录)

chown squid:squid /cache (赋予 squid 用户目录权限)

4. ⚙️ 修改 Squid 主配置文件

  • 【Linux-1】: 执行 vi /etc/squid/squid.conf,修改与添加以下内容(注意顺序):

Plaintext

# 修改端口并指定 DNS

http_port 8090

dns_nameservers 10.10.70.11

# 设置缓存

cache_dir ufs /cache 5120 16 256

# 禁止访问 .mp4 和 .avi

acl block_media urlpath_regex -i \.mp4$ \.avi$

http_access deny block_media

# 设置基础身份认证 (放行规则必须写在 http_access deny all 之前)

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /squid/squid_user

auth_param basic children 5

acl auth_users proxy_auth REQUIRED

http_access allow auth_users

5. 🛡️ 防火墙放行并启动服务

  • 【Linux-1】:

firewall-cmd --permanent --add-port=8090/tcp

firewall-cmd --reload

systemctl start squid

systemctl enable squid

📝 模块二:第二题 Linux NFS 服务器配置

【任务要求】 配置 Linux-1 为 NFS 服务器,共享目录 /home 和 /var/tmp,并根据不同用户设置读写与 root 权限。

1. 🛡️ 防火墙放行服务

  • 【Linux-1】:

firewall-cmd --permanent --add-service=nfs

firewall-cmd --permanent --add-service=rpc-bind

firewall-cmd --permanent --add-service=mountd

firewall-cmd --reload

2. 📦 挂载镜像与安装服务

yum install -y nfs-utils

3. ⚙️ 修改 NFS 核心配置文件

  • 【Linux-1】: 执行 vi /etc/exports,添加以下内容:

/home 10.10.70.0/24(rw,sync) *(ro,sync)

/var/tmp *(rw,sync,no_root_squash)

4. 🚀 启动服务并设置开机自启

  • 【Linux-1】:

systemctl start nfs-server

systemctl enable nfs-server

📝 模块二:第三题 Linux MariaDB 服务器配置

【任务要求】 配置 Linux-2 (mydb.netdj.net) 为数据库服务器,创建 userdb 数据库与 userinfo 数据表。插入特定用户数据,修改表结构,并完成数据的 SQL 导出与 TXT 文本导入操作。

1. 🛡️ 防火墙放行服务

  • 【Linux-2】:

firewall-cmd --permanent --add-service=mysql

firewall-cmd --reload

2. 📦 安装与服务启停

  • 【Linux-2】:

yum install -y mariadb-server

systemctl start mariadb

systemctl enable mariadb

3. 🗄️ 数据库与表结构配置

  • 【Linux-2】: 终端执行 mysql -u root 进入数据库,依次执行:

SQL

CREATE DATABASE userdb;

USE userdb;

CREATE TABLE userinfo (

  id int PRIMARY KEY AUTO_INCREMENT,

  name varchar(10),

  birthday datetime,

  sex char(5),

  password char(200)

);

4. ✍️ 插入与修改数据

  • 【MariaDB 交互终端】: 插入两名用户,并使用 MD5() 函数满足赛题中“密码以密文显示”的要求:

SQL

INSERT INTO userinfo VALUES (1, 'myuser1', '1995-07-01', '男', MD5('myuser1'));

INSERT INTO userinfo VALUES (2, 'myuser2', '1995-09-01', '女', MD5('myuser2'));

  • 修改 myuser2 的出生日期为 1996-10-25:

SQL

UPDATE userinfo SET birthday='1996-10-25' WHERE name='myuser2';

  • 添加 age 新字段,并更新这两名用户的年龄为 21 和 22:

SQL

ALTER TABLE userinfo ADD age int;

UPDATE userinfo SET age=21 WHERE id=1;

UPDATE userinfo SET age=22 WHERE id=2;

5. 🔄 数据的导出与导入

  • 【Linux-2 终端】: 退出数据库 (exit;),创建备份目录并使用 mysqldump 导出指定的 .sql 文件:

Bash

mkdir -p /var/databak

mysqldump -u root userdb userinfo > /var/databak/mysql.sql

  • 【Linux-2 终端】: 创建赛题要求的 mysql.txt 文本文件并写入两行新记录:

Bash

echo "3,myuser3,1999-7-1,女,myuser3,17" > /var/databak/mysql.txt

echo "4,myuser4,1999-12-10,男,myuser4,17" >> /var/databak/mysql.txt

  • 【Linux-2 终端】: 重新进入数据库 (mysql -u root) 并导入这份文本数据:

SQL

USE userdb;

LOAD DATA INFILE '/var/databak/mysql.txt' INTO TABLE userinfo FIELDS TERMINATED BY ',';

exit;

📝 模块二:第四题 Linux Apache 配置

【任务要求】 在 Linux-3 (www.netdj.net) 安装 httpd 服务,建立 www.netdj.net 虚拟主机,设置网站主页内容,并生成自签名证书以实现强制的 SSL 加密访问。

1. 📦 安装服务

  • 【Linux-3】: 安装 Apache 核心服务与 SSL 扩展模块:

Bash

yum install -y httpd mod_ssl

2. 🌐 准备网站主目录与首页

  • 【Linux-3】:

Bash

mkdir -p /www/netdj

echo "Welcome CCF website" > /www/netdj/netdj.html

3. 🔐 生成 SSL 证书

  • 【Linux-3】: 使用 openssl 生成指定域名的私钥和证书存入配置目录:

Bash

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/conf.d/server.key -out /etc/httpd/conf.d/server.crt -subj "/CN=www.netdj.net"

4. ⚙️ 配置虚拟主机

  • 【Linux-3】: 编辑专属配置文件:

Bash

vi /etc/httpd/conf.d/netdj.conf

写入以下内容监听 443 端口并挂载证书:

Apache

<VirtualHost *:443>

    ServerName www.netdj.net

    DocumentRoot /www/netdj

    DirectoryIndex netdj.html

    SSLEngine on

    SSLCertificateFile /etc/httpd/conf.d/server.crt

    SSLCertificateKeyFile /etc/httpd/conf.d/server.key

</VirtualHost>

5. 🚀 启动与开机自启

  • 【Linux-3】:

Bash

systemctl restart httpd

systemctl enable httpd

这道题圆满拿下!接下来,我们要进军第五题:Linux Samba 服务配置。Samba 主要是用来在 Linux 和 Windows 之间实现文件共享的。

📝 模块二:第五题 Linux Samba 服务配置

【任务要求】

在 Linux-1 安装 Samba 服务,建立系统用户并设置为 Samba 用户,配置特定目录的共享权限。

1. 📦 安装服务与准备账号

  • 【Linux-1】: 安装 Samba 核心软件包,并创建系统用户:

Bash

yum install -y samba

useradd user4

useradd user5

useradd user6

2. 🔑 设置 Samba 独立密码

  • 【Linux-1】: 将系统用户添加至 Samba 密码库(按提示盲打输入密码):

Bash

smbpasswd -a user4

smbpasswd -a user5

smbpasswd -a user6

3. 📂 创建共享目录与底层权限

  • 【Linux-1】: 创建指定的物理目录,并开放底层读写权限(防止被系统拦截):

Bash

mkdir -p /opt/finance_share

chmod 777 /opt/finance_share

4. ⚙️ 配置共享规则

  • 【Linux-1】: 编辑 Samba 主配置文件:

Bash

vi /etc/samba/smb.conf

在文件最末尾追加以下共享规则,限制访问人员并开启写入权限:

Ini, TOML

[finance_share]

    path = /opt/finance_share

    writable = yes

    valid users = user4,user5,user6

5. 🚀 启动与开机自启

  • 【Linux-1】:

Bash

systemctl restart smb

systemctl enable smb

到目前为止,模块二中的 MariaDB 数据库、Apache 加密网站,以及 Samba 文件共享 咱们都已经非常顺利地全部拿下了!🎉 你的思路非常清晰,命令掌握得也很扎实。

1. 准备工作 🛠️

安装管理软件 RAID 的必备工具:

Bash

yum install -y mdadm

2. 配置前三块硬盘 (sda, sdb, sdc) 💾

要求:将前三块硬盘分别设置为一个占满全部空间的主分区。

依次对 /dev/sda、/dev/sdb、/dev/sdc 执行以下交互操作:

Bash

fdisk /dev/sda

# 交互输入:

# n -> p -> 回车 -> 回车 -> 回车 -> w

(对 sdb 和 sdc 重复上述命令和按键)

3. 配置第四块硬盘 (sdd) 🗃️

要求:划分为两个 500MB 的逻辑分区。

逻辑分区必须建立在扩展分区之上:

Bash

fdisk /dev/sdd

# 交互输入:

# n -> e -> 回车 -> 回车 -> 回车  (建满扩展分区)

# n -> 回车 -> +500M             (建第一个逻辑分区 sdd5)

# n -> 回车 -> +500M             (建第二个逻辑分区 sdd6)

# w                              (保存并退出)

4. 创建 RAID 10 阵列 🧱

要求:使用前三块硬盘的主分区和第四块硬盘的第一个逻辑分区,创建名为 /dev/md10 的阵列。

Bash

mdadm -C /dev/md10 -l 10 -n 4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd5

# 提示 Continue creating array? 时输入 y

5. 从 RAID 阵列中划分 1G 空间 🔪

要求:将 /dev/md10 分出一个大小为 1G 的空间。

Bash

fdisk /dev/md10

# 交互输入:

# n -> p -> 回车 -> 回车 -> +1G -> w

(注意:这一步划分出来的分区名称通常会自动命名为 /dev/md10p1)



6. 格式化并启用 Swap 分区 🔄

要求:将刚才划分出的 1G 空间格式化为 swap 分区并投入使用。

Bash

# 格式化为 swap 文件系统

mkswap /dev/md10p1

# 启用该 swap 分区

swapon /dev/md10p1

# (可选) 检查 swap 是否成功增加

free -h